diff options
author | Teemu Suo-Anttila <teemusa@vaadin.com> | 2014-12-29 13:39:51 +0200 |
---|---|---|
committer | Teemu Suo-Anttila <teemusa@vaadin.com> | 2014-12-29 13:39:51 +0200 |
commit | 181b598714e979ad26236a3677f9e825f74ca282 (patch) | |
tree | cc178f0c3e5e971f2d7e071ea46f88d6aea0cdbe /server | |
parent | 0d93598759d2a1a95a25cc84e75cfa03f154590e (diff) | |
parent | b89213ee880dd1197bc7696f6f5a1919c0ff02c1 (diff) | |
download | vaadin-framework-181b598714e979ad26236a3677f9e825f74ca282.tar.gz vaadin-framework-181b598714e979ad26236a3677f9e825f74ca282.zip |
Merge remote-tracking branch 'origin/master' into grid
Change-Id: Id00b3893951bc669fcc8e234f09909d480e249ab
Diffstat (limited to 'server')
21 files changed, 517 insertions, 492 deletions
diff --git a/server/src/com/vaadin/data/fieldgroup/BeanFieldGroup.java b/server/src/com/vaadin/data/fieldgroup/BeanFieldGroup.java index 23a72ee1e5..0a92c00cad 100644 --- a/server/src/com/vaadin/data/fieldgroup/BeanFieldGroup.java +++ b/server/src/com/vaadin/data/fieldgroup/BeanFieldGroup.java @@ -155,10 +155,10 @@ public class BeanFieldGroup<T> extends FieldGroup { } @Override - public Field<?> buildAndBind(String caption, Object propertyId) - throws BindException { + public <T extends Field> T buildAndBind(String caption, Object propertyId, + Class<T> fieldType) throws BindException { ensureNestedPropertyAdded(propertyId); - return super.buildAndBind(caption, propertyId); + return super.buildAndBind(caption, propertyId, fieldType); } @Override diff --git a/server/src/com/vaadin/data/fieldgroup/DefaultFieldGroupFieldFactory.java b/server/src/com/vaadin/data/fieldgroup/DefaultFieldGroupFieldFactory.java index 98fed3ad01..8e32585a47 100644 --- a/server/src/com/vaadin/data/fieldgroup/DefaultFieldGroupFieldFactory.java +++ b/server/src/com/vaadin/data/fieldgroup/DefaultFieldGroupFieldFactory.java @@ -91,10 +91,20 @@ public class DefaultFieldGroupFieldFactory implements FieldGroupFieldFactory { private <T extends Field> T createEnumField(Class<?> type, Class<T> fieldType) { + // Determine first if we should (or can) create a select for the enum + Class<AbstractSelect> selectClass = null; if (AbstractSelect.class.isAssignableFrom(fieldType)) { - AbstractSelect s = createCompatibleSelect((Class<? extends AbstractSelect>) fieldType); + selectClass = (Class<AbstractSelect>) fieldType; + } else if (anySelect(fieldType)) { + selectClass = AbstractSelect.class; + } + + if (selectClass != null) { + AbstractSelect s = createCompatibleSelect(selectClass); populateWithEnumData(s, (Class<? extends Enum>) type); return (T) s; + } else if (AbstractTextField.class.isAssignableFrom(fieldType)) { + return (T) createAbstractTextField((Class<? extends AbstractTextField>) fieldType); } return null; @@ -106,8 +116,8 @@ public class DefaultFieldGroupFieldFactory implements FieldGroupFieldFactory { if (InlineDateField.class.isAssignableFrom(fieldType)) { field = new InlineDateField(); - } else if (DateField.class.isAssignableFrom(fieldType) - || fieldType == Field.class) { + } else if (anyField(fieldType) + || DateField.class.isAssignableFrom(fieldType)) { field = new PopupDateField(); } else if (AbstractTextField.class.isAssignableFrom(fieldType)) { field = createAbstractTextField((Class<? extends AbstractTextField>) fieldType); @@ -119,6 +129,10 @@ public class DefaultFieldGroupFieldFactory implements FieldGroupFieldFactory { return (T) field; } + private boolean anyField(Class<?> fieldType) { + return fieldType == Field.class || fieldType == AbstractField.class; + } + protected AbstractSelect createCompatibleSelect( Class<? extends AbstractSelect> fieldType) { AbstractSelect select; @@ -143,6 +157,10 @@ public class DefaultFieldGroupFieldFactory implements FieldGroupFieldFactory { return select; } + private boolean anySelect(Class<? extends Field> fieldType) { + return anyField(fieldType) || fieldType == AbstractSelect.class; + } + protected <T extends Field> T createBooleanField(Class<T> fieldType) { if (fieldType.isAssignableFrom(CheckBox.class)) { CheckBox cb = new CheckBox(null); diff --git a/server/src/com/vaadin/navigator/Navigator.java b/server/src/com/vaadin/navigator/Navigator.java index 591f73dc75..ef5c61a294 100644 --- a/server/src/com/vaadin/navigator/Navigator.java +++ b/server/src/com/vaadin/navigator/Navigator.java @@ -58,9 +58,8 @@ import com.vaadin.ui.UI; * Views can be explicitly registered or dynamically generated and listening to * view changes is possible. * <p> - * Note that {@link Navigator} is not a component itself but comes with - * {@link SimpleViewDisplay} which is a component that displays the selected - * view as its contents. + * Note that {@link Navigator} is not a component itself but uses a + * {@link ViewDisplay} to update contents based on the state. * * @author Vaadin Ltd * @since 7.0 @@ -627,11 +626,9 @@ public class Navigator implements Serializable { } /** - * Return the ViewDisplay used by the navigator. Unless another display is - * specified, a {@link SimpleViewDisplay} (which is a {@link Component}) is - * used by default. + * Return the {@link ViewDisplay} used by the navigator. * - * @return current ViewDisplay + * @return the ViewDisplay used for displaying views */ public ViewDisplay getDisplay() { return display; diff --git a/server/src/com/vaadin/server/BootstrapHandler.java b/server/src/com/vaadin/server/BootstrapHandler.java index 985d7ef765..bfe195ccf9 100644 --- a/server/src/com/vaadin/server/BootstrapHandler.java +++ b/server/src/com/vaadin/server/BootstrapHandler.java @@ -39,6 +39,7 @@ import org.jsoup.parser.Tag; import com.vaadin.annotations.Viewport; import com.vaadin.annotations.ViewportGeneratorClass; +import com.vaadin.server.communication.AtmospherePushConnection; import com.vaadin.shared.ApplicationConstants; import com.vaadin.shared.Version; import com.vaadin.shared.communication.PushMode; @@ -505,8 +506,12 @@ public abstract class BootstrapHandler extends SynchronizedRequestHandler { JsonObject versionInfo = Json.createObject(); versionInfo.put("vaadinVersion", Version.getFullVersion()); - versionInfo.put("atmosphereVersion", - org.atmosphere.util.Version.getRawVersion()); + String atmosphereVersion = AtmospherePushConnection + .getAtmosphereVersion(); + if (atmosphereVersion != null) { + versionInfo.put("atmosphereVersion", atmosphereVersion); + } + appConfig.put("versionInfo", versionInfo); appConfig.put("widgetset", context.getWidgetsetName()); diff --git a/server/src/com/vaadin/server/VaadinServletService.java b/server/src/com/vaadin/server/VaadinServletService.java index 6832da236a..22848c023c 100644 --- a/server/src/com/vaadin/server/VaadinServletService.java +++ b/server/src/com/vaadin/server/VaadinServletService.java @@ -27,8 +27,7 @@ import java.util.logging.Logger; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; -import org.atmosphere.util.Version; - +import com.vaadin.server.communication.AtmospherePushConnection; import com.vaadin.server.communication.PushRequestHandler; import com.vaadin.server.communication.ServletBootstrapHandler; import com.vaadin.server.communication.ServletUIInitHandler; @@ -54,21 +53,20 @@ public class VaadinServletService extends VaadinService { } private static boolean checkAtmosphereSupport() { - try { - String rawVersion = Version.getRawVersion(); - if (!Constants.REQUIRED_ATMOSPHERE_RUNTIME_VERSION - .equals(rawVersion)) { - getLogger().log( - Level.WARNING, - Constants.INVALID_ATMOSPHERE_VERSION_WARNING, - new Object[] { - Constants.REQUIRED_ATMOSPHERE_RUNTIME_VERSION, - rawVersion }); - } - return true; - } catch (NoClassDefFoundError e) { + String rawVersion = AtmospherePushConnection.getAtmosphereVersion(); + if (rawVersion == null) { return false; } + + if (!Constants.REQUIRED_ATMOSPHERE_RUNTIME_VERSION.equals(rawVersion)) { + getLogger().log( + Level.WARNING, + Constants.INVALID_ATMOSPHERE_VERSION_WARNING, + new Object[] { + Constants.REQUIRED_ATMOSPHERE_RUNTIME_VERSION, + rawVersion }); + } + return true; } @Override diff --git a/server/src/com/vaadin/server/communication/AtmospherePushConnection.java b/server/src/com/vaadin/server/communication/AtmospherePushConnection.java index a274fbbb9b..0819a24ee9 100644 --- a/server/src/com/vaadin/server/communication/AtmospherePushConnection.java +++ b/server/src/com/vaadin/server/communication/AtmospherePushConnection.java @@ -31,6 +31,7 @@ import java.util.logging.Logger; import org.atmosphere.cpr.AtmosphereResource; import org.atmosphere.cpr.AtmosphereResource.TRANSPORT; +import org.atmosphere.util.Version; import com.vaadin.shared.communication.PushConstants; import com.vaadin.ui.UI; @@ -44,6 +45,16 @@ import com.vaadin.ui.UI; */ public class AtmospherePushConnection implements PushConnection { + public static String getAtmosphereVersion() { + try { + String v = Version.getRawVersion(); + assert v != null; + return v; + } catch (NoClassDefFoundError e) { + return null; + } + } + /** * Represents a message that can arrive as multiple fragments. */ diff --git a/server/src/com/vaadin/server/communication/PushRequestHandler.java b/server/src/com/vaadin/server/communication/PushRequestHandler.java index 40eb1b688e..d0367d0bed 100644 --- a/server/src/com/vaadin/server/communication/PushRequestHandler.java +++ b/server/src/com/vaadin/server/communication/PushRequestHandler.java @@ -29,6 +29,7 @@ import org.atmosphere.cpr.AtmosphereInterceptor; import org.atmosphere.cpr.AtmosphereRequest; import org.atmosphere.cpr.AtmosphereResponse; import org.atmosphere.interceptor.HeartbeatInterceptor; +import org.atmosphere.util.VoidAnnotationProcessor; import com.vaadin.server.RequestHandler; import com.vaadin.server.ServiceDestroyEvent; @@ -91,6 +92,8 @@ public class PushRequestHandler implements RequestHandler, atmosphere.addAtmosphereHandler("/*", pushHandler.handler); atmosphere.addInitParameter(ApplicationConfig.BROADCASTER_CACHE, UUIDBroadcasterCache.class.getName()); + atmosphere.addInitParameter(ApplicationConfig.ANNOTATION_PROCESSOR, + VoidAnnotationProcessor.class.getName()); atmosphere.addInitParameter(ApplicationConfig.PROPERTY_SESSION_SUPPORT, "true"); atmosphere.addInitParameter(ApplicationConfig.MESSAGE_DELIMITER, diff --git a/server/src/com/vaadin/ui/AbstractSelect.java b/server/src/com/vaadin/ui/AbstractSelect.java index d5e47b2286..423ebcb46a 100644 --- a/server/src/com/vaadin/ui/AbstractSelect.java +++ b/server/src/com/vaadin/ui/AbstractSelect.java @@ -1688,8 +1688,6 @@ public abstract class AbstractSelect extends AbstractField<Object> implements // Clears the item id mapping table itemIdMapper.removeAll(); - adjustSelection(); - // Notify all listeners fireItemSetChange(); } @@ -1728,25 +1726,6 @@ public abstract class AbstractSelect extends AbstractField<Object> implements } /** - * Removes orphaned ids from selection. - * - * @since 7.4 - */ - protected void adjustSelection() { - Object value = getValue(); - if (isMultiSelect() && (value instanceof Collection)) { - Collection<?> collection = (Collection<?>) value; - for (Object id : collection) { - if (!containsId(id)) { - unselect(id); - } - } - } else if (!containsId(value)) { - unselect(value); - } - } - - /** * Implementation of item set change event. */ private static class ItemSetChangeEvent extends EventObject implements diff --git a/server/src/com/vaadin/ui/AbstractSplitPanel.java b/server/src/com/vaadin/ui/AbstractSplitPanel.java index 414681f5dd..af73fca6a8 100644 --- a/server/src/com/vaadin/ui/AbstractSplitPanel.java +++ b/server/src/com/vaadin/ui/AbstractSplitPanel.java @@ -358,7 +358,7 @@ public abstract class AbstractSplitPanel extends AbstractComponentContainer { * by the first region, but if split position is reversed the measuring is * done by the second region instead. * - * @since 7.4 + * @since 7.3.6 * @return {@code true} if reversed, {@code false} otherwise. * @see #setSplitPosition(float, boolean) */ diff --git a/server/src/com/vaadin/ui/Button.java b/server/src/com/vaadin/ui/Button.java index 677f29ba13..6beb6ed686 100644 --- a/server/src/com/vaadin/ui/Button.java +++ b/server/src/com/vaadin/ui/Button.java @@ -365,7 +365,7 @@ public class Button extends AbstractComponent implements * No action is taken is the button is disabled. */ public void click() { - if (isConnectorEnabled() && !isReadOnly()) { + if (isEnabled() && !isReadOnly()) { fireClick(); } } diff --git a/server/src/com/vaadin/ui/TabSheet.java b/server/src/com/vaadin/ui/TabSheet.java index 266c93e81f..67dfdd4258 100644 --- a/server/src/com/vaadin/ui/TabSheet.java +++ b/server/src/com/vaadin/ui/TabSheet.java @@ -1621,4 +1621,34 @@ public class TabSheet extends AbstractComponentContainer implements Focusable, } } + /** + * Sets whether HTML is allowed in the tab captions. + * <p> + * If set to true, the captions are rendered in the browser as HTML and the + * developer is responsible for ensuring no harmful HTML is used. If set to + * false, the content is rendered in the browser as plain text. + * <p> + * The default is false, i.e. render tab captions as plain text + * + * @param tabCaptionsAsHtml + * true if the tab captions are rendered as HTML, false if + * rendered as plain text + * @since 7.4 + */ + public void setTabCaptionsAsHtml(boolean tabCaptionsAsHtml) { + getState().tabCaptionsAsHtml = tabCaptionsAsHtml; + } + + /** + * Checks whether HTML is allowed in the tab captions. + * <p> + * The default is false, i.e. render tab captions as plain text + * + * @return true if the tab captions are rendered as HTML, false if rendered + * as plain text + * @since 7.4 + */ + public boolean isTabCaptionsAsHtml() { + return getState(false).tabCaptionsAsHtml; + } } diff --git a/server/src/com/vaadin/ui/declarative/Design.java b/server/src/com/vaadin/ui/declarative/Design.java index 59393a7815..dc96e789bf 100644 --- a/server/src/com/vaadin/ui/declarative/Design.java +++ b/server/src/com/vaadin/ui/declarative/Design.java @@ -184,13 +184,18 @@ public class Design implements Serializable { // taken care of by jsoup. Element root = doc.body(); Elements children = root.children(); - if (children.size() != 1) { + if (children.size() > 1) { throw new DesignException( - "The first level of a component hierarchy should contain exactly one root component, but found " - + children.size()); + "The first level of a component hierarchy should contain at most one root component, but found " + + children.size() + "."); } - Element element = children.first(); + Element element = children.size() == 0 ? null : children.first(); if (componentRoot != null) { + if (element == null) { + throw new DesignException( + "The root element cannot be null when the specified root Component is" + + " not null."); + } // user has specified root instance that may have member fields that // should be bound final FieldBinder binder; @@ -222,7 +227,8 @@ public class Design implements Serializable { designContext.removeComponentCreationListener(creationListener); } else { // createChild creates the entire component hierarchy - componentRoot = designContext.readDesign(element); + componentRoot = element == null ? null : designContext + .readDesign(element); } designContext.setRootComponent(componentRoot); return designContext; @@ -255,8 +261,10 @@ public class Design implements Serializable { // creates the entire component hierarchy rooted at the // given root node. Component root = designContext.getRootComponent(); - Node rootNode = designContext.createElement(root); - body.appendChild(rootNode); + if (root != null) { + Node rootNode = designContext.createElement(root); + body.appendChild(rootNode); + } designContext.writePackageMappings(doc); return doc; } @@ -424,10 +432,11 @@ public class Design implements Serializable { /** * Writes the given component tree in design format to the given output - * stream + * stream. * * @param component - * the root component of the component tree + * the root component of the component tree, null can be used for + * generating an empty design * @param outputStream * the output stream to write the design to. The design is always * written as UTF-8 @@ -446,8 +455,10 @@ public class Design implements Serializable { * and other information not available in the component tree. * * @param designContext - * the DesignContext object specifying the component hierarchy - * and the local id values of the objects + * The DesignContext object specifying the component hierarchy + * and the local id values of the objects. If + * designContext.getRootComponent() is null, an empty design will + * be generated. * @param outputStream * the output stream to write the design to. The design is always * written as UTF-8 diff --git a/server/src/com/vaadin/ui/declarative/DesignContext.java b/server/src/com/vaadin/ui/declarative/DesignContext.java index ade2494638..fd83339b76 100644 --- a/server/src/com/vaadin/ui/declarative/DesignContext.java +++ b/server/src/com/vaadin/ui/declarative/DesignContext.java @@ -415,7 +415,7 @@ public class DesignContext implements Serializable { * * @param componentDesign * The design element containing the description of the component - * to be created + * to be created. * @return the root component of component tree */ public Component readDesign(Element componentDesign) { diff --git a/server/tests/src/com/vaadin/data/DefaultFieldGroupFieldFactoryTest.java b/server/tests/src/com/vaadin/data/DefaultFieldGroupFieldFactoryTest.java index bbf74bfb21..fc258ab138 100644 --- a/server/tests/src/com/vaadin/data/DefaultFieldGroupFieldFactoryTest.java +++ b/server/tests/src/com/vaadin/data/DefaultFieldGroupFieldFactoryTest.java @@ -23,9 +23,12 @@ import org.junit.Before; import org.junit.Test; import com.vaadin.data.fieldgroup.DefaultFieldGroupFieldFactory; +import com.vaadin.ui.AbstractSelect; +import com.vaadin.ui.ComboBox; import com.vaadin.ui.DateField; import com.vaadin.ui.Field; import com.vaadin.ui.InlineDateField; +import com.vaadin.ui.ListSelect; import com.vaadin.ui.PopupDateField; import com.vaadin.ui.TextField; @@ -89,4 +92,29 @@ public class DefaultFieldGroupFieldFactoryTest { Assert.assertEquals(PopupDateField.class, f.getClass()); } + public enum SomeEnum { + FOO, BAR; + } + + @Test + public void testEnumComboBox() { + Field f = fieldFactory.createField(SomeEnum.class, ComboBox.class); + Assert.assertNotNull(f); + Assert.assertEquals(ComboBox.class, f.getClass()); + } + + @Test + public void testEnumAnySelect() { + Field f = fieldFactory + .createField(SomeEnum.class, AbstractSelect.class); + Assert.assertNotNull(f); + Assert.assertEquals(ListSelect.class, f.getClass()); + } + + @Test + public void testEnumAnyField() { + Field f = fieldFactory.createField(SomeEnum.class, Field.class); + Assert.assertNotNull(f); + Assert.assertEquals(ListSelect.class, f.getClass()); + } } diff --git a/server/tests/src/com/vaadin/data/util/sqlcontainer/SQLContainerTableQueryTest.java b/server/tests/src/com/vaadin/data/util/sqlcontainer/SQLContainerTableQueryTest.java index f82ba49c3e..2d66b728a7 100644 --- a/server/tests/src/com/vaadin/data/util/sqlcontainer/SQLContainerTableQueryTest.java +++ b/server/tests/src/com/vaadin/data/util/sqlcontainer/SQLContainerTableQueryTest.java @@ -29,10 +29,9 @@ import static org.junit.Assert.assertTrue; public class SQLContainerTableQueryTest { private static final int offset = SQLTestsConstants.offset; - private static final String createGarbage = SQLTestsConstants.createGarbage; private JDBCConnectionPool connectionPool; private TableQuery peopleQuery; - private SQLContainer peopleContainer; + private SQLContainer container; @Before public void setUp() throws SQLException { @@ -48,9 +47,19 @@ public class SQLContainerTableQueryTest { DataGenerator.addPeopleToDatabase(connectionPool); - peopleQuery = new TableQuery("people", connectionPool, + peopleQuery = getTableQuery("people"); + container = new SQLContainer(peopleQuery); + } + + private TableQuery getTableQuery(String tableName) { + return new TableQuery(tableName, connectionPool, SQLTestsConstants.sqlGen); - peopleContainer = new SQLContainer(peopleQuery); + } + + private SQLContainer getGarbageContainer() throws SQLException { + DataGenerator.createGarbage(connectionPool); + + return new SQLContainer(getTableQuery("garbage")); } @After @@ -63,19 +72,19 @@ public class SQLContainerTableQueryTest { @Test public void itemWithExistingVersionColumnIsRemoved() throws SQLException { - peopleContainer.setAutoCommit(true); + container.setAutoCommit(true); peopleQuery.setVersionColumn("ID"); - assertTrue(peopleContainer.removeItem(peopleContainer.lastItemId())); + assertTrue(container.removeItem(container.lastItemId())); } @Test(expected = IllegalArgumentException.class) public void itemWithNonExistingVersionColumnCannotBeRemoved() throws SQLException { peopleQuery.setVersionColumn("version"); - peopleContainer.removeItem(peopleContainer.lastItemId()); + container.removeItem(container.lastItemId()); - peopleContainer.commit(); + container.commit(); } @Test @@ -89,74 +98,87 @@ public class SQLContainerTableQueryTest { throws SQLException { SQLContainer container = new SQLContainer(new TableQuery("people", connectionPool, SQLTestsConstants.sqlGen)); + assertTrue(container.containsId(new RowId( new Object[]{1 + offset}))); + Assert.assertTrue(container.containsId(new RowId( + new Object[] { 1 + offset }))); + assertTrue(this.container.containsId(new RowId( + new Object[]{1 + offset}))); } @Test public void containsId_withTableQueryAndNonexistingId_returnsFalse() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Assert.assertFalse(container.containsId(new RowId( - new Object[] { 1337 + offset }))); + new Object[]{1337 + offset}))); + } + + @Test + public void getContainerProperty_tableExistingItemIdAndNonexistingPropertyId_returnsNull() + throws SQLException { + Assert.assertNull(container.getContainerProperty(new RowId( + new Object[]{1 + offset}), "asdf")); + } + + @Test + public void getContainerProperty_tableNonexistingItemId_returnsNull() + throws SQLException { + Assert.assertNull(container.getContainerProperty(new RowId( + new Object[]{1337 + offset}), "NAME")); + } + + @Test + public void getType_tableIDPropertyId_returnsInteger() throws SQLException { + if (SQLTestsConstants.db == DB.ORACLE) { + Assert.assertEquals(BigDecimal.class, container.getType("ID")); + } else { + Assert.assertEquals(Integer.class, container.getType("ID")); + } + } + + @Test + public void getType_tableNonexistingPropertyId_returnsNull() + throws SQLException { + Assert.assertNull(container.getType("asdf")); + } + + @Test + public void size_table_returnsFour() throws SQLException { + Assert.assertEquals(4, container.size()); } @Test public void getContainerProperty_tableExistingItemIdAndPropertyId_returnsProperty() throws SQLException { - TableQuery t = new TableQuery("people", connectionPool, - SQLTestsConstants.sqlGen); - SQLContainer container = new SQLContainer(t); if (SQLTestsConstants.db == DB.ORACLE) { Assert.assertEquals( "Ville", container .getContainerProperty( - new RowId(new Object[] { new BigDecimal( - 0 + offset) }), "NAME").getValue()); + new RowId(new Object[]{new BigDecimal( + 0 + offset)}), "NAME").getValue()); } else { Assert.assertEquals( "Ville", container.getContainerProperty( - new RowId(new Object[] { 0 + offset }), "NAME") + new RowId(new Object[]{0 + offset}), "NAME") .getValue()); } } - @Test - public void getContainerProperty_tableExistingItemIdAndNonexistingPropertyId_returnsNull() - throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); - Assert.assertNull(container.getContainerProperty(new RowId( - new Object[] { 1 + offset }), "asdf")); - } - - @Test - public void getContainerProperty_tableNonexistingItemId_returnsNull() - throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); - Assert.assertNull(container.getContainerProperty(new RowId( - new Object[] { 1337 + offset }), "NAME")); - } @Test public void getContainerPropertyIds_table_returnsIDAndNAME() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Collection<?> propertyIds = container.getContainerPropertyIds(); Assert.assertEquals(3, propertyIds.size()); - Assert.assertArrayEquals(new String[] { "ID", "NAME", "AGE" }, + Assert.assertArrayEquals(new String[]{"ID", "NAME", "AGE"}, propertyIds.toArray()); } @Test public void getItem_tableExistingItemId_returnsItem() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Item item; if (SQLTestsConstants.db == DB.ORACLE) { item = container.getItem(new RowId(new Object[] { new BigDecimal( @@ -173,8 +195,6 @@ public class SQLContainerTableQueryTest { String OLD_VALUE = "SomeValue"; //$NON-NLS-1$ String NEW_VALUE = "OtherValue"; //$NON-NLS-1$ - SQLContainer container = new SQLContainer(new TableQuery("people", //$NON-NLS-1$ - connectionPool, SQLTestsConstants.sqlGen)); Object itemID = container.addItem(); Item item = container.getItem(itemID); item.getItemProperty("NAME").setValue(OLD_VALUE); //$NON-NLS-1$ @@ -201,9 +221,6 @@ public class SQLContainerTableQueryTest { public void getItem_table5000RowsWithParameter1337_returnsItemWithId1337() throws SQLException { DataGenerator.addFiveThousandPeople(connectionPool); - TableQuery query = new TableQuery("people", connectionPool, - SQLTestsConstants.sqlGen); - SQLContainer container = new SQLContainer(query); Item item; if (SQLTestsConstants.db == DB.ORACLE) { @@ -225,8 +242,6 @@ public class SQLContainerTableQueryTest { @Test public void getItemIds_table_returnsItemIdsWithKeys0through3() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Collection<?> itemIds = container.getItemIds(); Assert.assertEquals(4, itemIds.size()); RowId zero = new RowId(new Object[] { 0 + offset }); @@ -248,38 +263,10 @@ public class SQLContainerTableQueryTest { @Test public void getType_tableNAMEPropertyId_returnsString() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Assert.assertEquals(String.class, container.getType("NAME")); } @Test - public void getType_tableIDPropertyId_returnsInteger() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); - if (SQLTestsConstants.db == DB.ORACLE) { - Assert.assertEquals(BigDecimal.class, container.getType("ID")); - } else { - Assert.assertEquals(Integer.class, container.getType("ID")); - } - } - - @Test - public void getType_tableNonexistingPropertyId_returnsNull() - throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); - Assert.assertNull(container.getType("asdf")); - } - - @Test - public void size_table_returnsFour() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); - Assert.assertEquals(4, container.size()); - } - - @Test public void size_tableOneAddedItem_returnsFive() throws SQLException { Connection conn = connectionPool.reserveConnection(); Statement statement = conn.createStatement(); @@ -293,22 +280,18 @@ public class SQLContainerTableQueryTest { conn.commit(); connectionPool.releaseConnection(conn); - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Assert.assertEquals(5, container.size()); } @Test public void indexOfId_tableWithParameterThree_returnsThree() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); if (SQLTestsConstants.db == DB.ORACLE) { Assert.assertEquals(3, container.indexOfId(new RowId( - new Object[] { new BigDecimal(3 + offset) }))); + new Object[]{new BigDecimal(3 + offset)}))); } else { Assert.assertEquals(3, - container.indexOfId(new RowId(new Object[] { 3 + offset }))); + container.indexOfId(new RowId(new Object[]{3 + offset}))); } } @@ -316,18 +299,16 @@ public class SQLContainerTableQueryTest { public void indexOfId_table5000RowsWithParameter1337_returns1337() throws SQLException { DataGenerator.addFiveThousandPeople(connectionPool); - TableQuery q = new TableQuery("people", connectionPool, - SQLTestsConstants.sqlGen); - SQLContainer container = new SQLContainer(q); + if (SQLTestsConstants.db == DB.ORACLE) { - container.getItem(new RowId(new Object[] { new BigDecimal( - 1337 + offset) })); + container.getItem(new RowId(new Object[]{new BigDecimal( + 1337 + offset)})); Assert.assertEquals(1337, container.indexOfId(new RowId( - new Object[] { new BigDecimal(1337 + offset) }))); + new Object[]{new BigDecimal(1337 + offset)}))); } else { - container.getItem(new RowId(new Object[] { 1337 + offset })); + container.getItem(new RowId(new Object[]{1337 + offset})); Assert.assertEquals(1337, container.indexOfId(new RowId( - new Object[] { 1337 + offset }))); + new Object[]{1337 + offset}))); } } @@ -335,8 +316,6 @@ public class SQLContainerTableQueryTest { public void getIdByIndex_table5000rowsIndex1337_returnsRowId1337() throws SQLException { DataGenerator.addFiveThousandPeople(connectionPool); - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object itemId = container.getIdByIndex(1337); if (SQLTestsConstants.db == DB.ORACLE) { Assert.assertEquals( @@ -352,10 +331,8 @@ public class SQLContainerTableQueryTest { public void getIdByIndex_tableWithPaging5000rowsIndex1337_returnsRowId1337() throws SQLException { DataGenerator.addFiveThousandPeople(connectionPool); - TableQuery query = new TableQuery("people", connectionPool, - SQLTestsConstants.sqlGen); - SQLContainer container = new SQLContainer(query); - Object itemId = container.getIdByIndex(1337); + + Object itemId = container.getIdByIndex(1337); if (SQLTestsConstants.db == DB.ORACLE) { Assert.assertEquals( new RowId(new Object[] { 1337 + offset }).toString(), @@ -387,29 +364,25 @@ public class SQLContainerTableQueryTest { public void prevItemId_tableCurrentItem1337_returns1336() throws SQLException { DataGenerator.addFiveThousandPeople(connectionPool); - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object itemId = container.getIdByIndex(1337); if (SQLTestsConstants.db == DB.ORACLE) { Assert.assertEquals( - new RowId(new Object[] { 1336 + offset }).toString(), + new RowId(new Object[]{1336 + offset}).toString(), container.prevItemId(itemId).toString()); } else { - Assert.assertEquals(new RowId(new Object[] { 1336 + offset }), + Assert.assertEquals(new RowId(new Object[]{1336 + offset}), container.prevItemId(itemId)); } } @Test public void firstItemId_table_returnsItemId0() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); if (SQLTestsConstants.db == DB.ORACLE) { Assert.assertEquals( - new RowId(new Object[] { 0 + offset }).toString(), + new RowId(new Object[]{0 + offset}).toString(), container.firstItemId().toString()); } else { - Assert.assertEquals(new RowId(new Object[] { 0 + offset }), + Assert.assertEquals(new RowId(new Object[]{0 + offset}), container.firstItemId()); } } @@ -419,22 +392,18 @@ public class SQLContainerTableQueryTest { throws SQLException { DataGenerator.addFiveThousandPeople(connectionPool); - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); if (SQLTestsConstants.db == DB.ORACLE) { Assert.assertEquals( - new RowId(new Object[] { 4999 + offset }).toString(), + new RowId(new Object[]{4999 + offset}).toString(), container.lastItemId().toString()); } else { - Assert.assertEquals(new RowId(new Object[] { 4999 + offset }), + Assert.assertEquals(new RowId(new Object[]{4999 + offset}), container.lastItemId()); } } @Test public void isFirstId_tableActualFirstId_returnsTrue() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); if (SQLTestsConstants.db == DB.ORACLE) { assertTrue(container.isFirstId(new RowId( new Object[]{new BigDecimal(0 + offset)}))); @@ -446,34 +415,28 @@ public class SQLContainerTableQueryTest { @Test public void isFirstId_tableSecondId_returnsFalse() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); if (SQLTestsConstants.db == DB.ORACLE) { Assert.assertFalse(container.isFirstId(new RowId( - new Object[] { new BigDecimal(1 + offset) }))); + new Object[]{new BigDecimal(1 + offset)}))); } else { Assert.assertFalse(container.isFirstId(new RowId( - new Object[] { 1 + offset }))); + new Object[]{1 + offset}))); } } @Test public void isLastId_tableSecondId_returnsFalse() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); if (SQLTestsConstants.db == DB.ORACLE) { Assert.assertFalse(container.isLastId(new RowId( - new Object[] { new BigDecimal(1 + offset) }))); + new Object[]{new BigDecimal(1 + offset)}))); } else { Assert.assertFalse(container.isLastId(new RowId( - new Object[] { 1 + offset }))); + new Object[]{1 + offset}))); } } @Test public void isLastId_tableLastId_returnsTrue() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); if (SQLTestsConstants.db == DB.ORACLE) { assertTrue(container.isLastId(new RowId( new Object[]{new BigDecimal(3 + offset)}))); @@ -486,8 +449,6 @@ public class SQLContainerTableQueryTest { @Test public void isLastId_table5000RowsLastId_returnsTrue() throws SQLException { DataGenerator.addFiveThousandPeople(connectionPool); - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); if (SQLTestsConstants.db == DB.ORACLE) { assertTrue(container.isLastId(new RowId( new Object[]{new BigDecimal(4999 + offset)}))); @@ -501,8 +462,7 @@ public class SQLContainerTableQueryTest { public void allIdsFound_table5000RowsLastId_shouldSucceed() throws SQLException { DataGenerator.addFiveThousandPeople(connectionPool); - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); + for (int i = 0; i < 5000; i++) { assertTrue(container.containsId(container.getIdByIndex(i))); } @@ -512,8 +472,7 @@ public class SQLContainerTableQueryTest { public void allIdsFound_table5000RowsLastId_autoCommit_shouldSucceed() throws SQLException { DataGenerator.addFiveThousandPeople(connectionPool); - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); + container.setAutoCommit(true); for (int i = 0; i < 5000; i++) { assertTrue(container.containsId(container.getIdByIndex(i))); @@ -522,8 +481,6 @@ public class SQLContainerTableQueryTest { @Test public void refresh_table_sizeShouldUpdate() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Assert.assertEquals(4, container.size()); DataGenerator.addFiveThousandPeople(connectionPool); container.refresh(); @@ -537,8 +494,6 @@ public class SQLContainerTableQueryTest { // after adding lots of items unless we call refresh inbetween. This to // make sure that the refresh method actually refreshes stuff and isn't // a NOP. - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Assert.assertEquals(4, container.size()); DataGenerator.addFiveThousandPeople(connectionPool); Assert.assertEquals(4, container.size()); @@ -546,8 +501,6 @@ public class SQLContainerTableQueryTest { @Test public void setAutoCommit_table_shouldSucceed() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); container.setAutoCommit(true); assertTrue(container.isAutoCommit()); container.setAutoCommit(false); @@ -556,15 +509,11 @@ public class SQLContainerTableQueryTest { @Test public void getPageLength_table_returnsDefault100() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Assert.assertEquals(100, container.getPageLength()); } @Test public void setPageLength_table_shouldSucceed() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); container.setPageLength(20); Assert.assertEquals(20, container.getPageLength()); container.setPageLength(200); @@ -573,59 +522,43 @@ public class SQLContainerTableQueryTest { @Test(expected = UnsupportedOperationException.class) public void addContainerProperty_normal_isUnsupported() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); container.addContainerProperty("asdf", String.class, ""); } @Test(expected = UnsupportedOperationException.class) public void removeContainerProperty_normal_isUnsupported() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); container.removeContainerProperty("asdf"); } @Test(expected = UnsupportedOperationException.class) public void addItemObject_normal_isUnsupported() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); container.addItem("asdf"); } @Test(expected = UnsupportedOperationException.class) public void addItemAfterObjectObject_normal_isUnsupported() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); container.addItemAfter("asdf", "foo"); } @Test(expected = UnsupportedOperationException.class) public void addItemAtIntObject_normal_isUnsupported() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); container.addItemAt(2, "asdf"); } @Test(expected = UnsupportedOperationException.class) public void addItemAtInt_normal_isUnsupported() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); container.addItemAt(2); } @Test(expected = UnsupportedOperationException.class) public void addItemAfterObject_normal_isUnsupported() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); container.addItemAfter("asdf"); } @Test public void addItem_tableAddOneNewItem_returnsItemId() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object itemId = container.addItem(); Assert.assertNotNull(itemId); } @@ -633,9 +566,6 @@ public class SQLContainerTableQueryTest { @Test public void addItem_tableAddOneNewItem_autoCommit_returnsFinalItemId() throws SQLException { - TableQuery query = new TableQuery("people", connectionPool, - SQLTestsConstants.sqlGen); - SQLContainer container = new SQLContainer(query); container.setAutoCommit(true); Object itemId = container.addItem(); Assert.assertNotNull(itemId); @@ -646,9 +576,6 @@ public class SQLContainerTableQueryTest { @Test public void addItem_tableAddOneNewItem_autoCommit_sizeIsIncreased() throws SQLException { - TableQuery query = new TableQuery("people", connectionPool, - SQLTestsConstants.sqlGen); - SQLContainer container = new SQLContainer(query); container.setAutoCommit(true); int originalSize = container.size(); container.addItem(); @@ -658,8 +585,6 @@ public class SQLContainerTableQueryTest { @Test public void addItem_tableAddOneNewItem_shouldChangeSize() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); int size = container.size(); container.addItem(); Assert.assertEquals(size + 1, container.size()); @@ -668,8 +593,6 @@ public class SQLContainerTableQueryTest { @Test public void addItem_tableAddTwoNewItems_shouldChangeSize() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); int size = container.size(); Object id1 = container.addItem(); Object id2 = container.addItem(); @@ -681,8 +604,6 @@ public class SQLContainerTableQueryTest { @Test public void nextItemId_tableNewlyAddedItem_returnsNewlyAdded() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object lastId = container.lastItemId(); Object id = container.addItem(); Assert.assertEquals(id, container.nextItemId(lastId)); @@ -691,8 +612,6 @@ public class SQLContainerTableQueryTest { @Test public void lastItemId_tableNewlyAddedItem_returnsNewlyAdded() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object lastId = container.lastItemId(); Object id = container.addItem(); Assert.assertEquals(id, container.lastItemId()); @@ -701,8 +620,6 @@ public class SQLContainerTableQueryTest { @Test public void indexOfId_tableNewlyAddedItem_returnsFour() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object id = container.addItem(); Assert.assertEquals(4, container.indexOfId(id)); } @@ -710,8 +627,6 @@ public class SQLContainerTableQueryTest { @Test public void getItem_tableNewlyAddedItem_returnsNewlyAdded() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object id = container.addItem(); Assert.assertNotNull(container.getItem(id)); } @@ -719,8 +634,6 @@ public class SQLContainerTableQueryTest { @Test public void getItemIds_tableNewlyAddedItem_containsNewlyAdded() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object id = container.addItem(); assertTrue(container.getItemIds().contains(id)); } @@ -728,8 +641,6 @@ public class SQLContainerTableQueryTest { @Test public void getContainerProperty_tableNewlyAddedItem_returnsPropertyOfNewlyAddedItem() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object id = container.addItem(); Item item = container.getItem(id); item.getItemProperty("NAME").setValue("asdf"); @@ -740,86 +651,80 @@ public class SQLContainerTableQueryTest { @Test public void containsId_tableNewlyAddedItem_returnsTrue() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object id = container.addItem(); + assertTrue(container.containsId(id)); } @Test public void prevItemId_tableTwoNewlyAddedItems_returnsFirstAddedItem() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object id1 = container.addItem(); Object id2 = container.addItem(); + Assert.assertEquals(id1, container.prevItemId(id2)); } @Test public void firstItemId_tableEmptyResultSet_returnsFirstAddedItem() throws SQLException { - DataGenerator.createGarbage(connectionPool); - SQLContainer container = new SQLContainer(new TableQuery("garbage", - connectionPool, SQLTestsConstants.sqlGen)); - Object id = container.addItem(); - Assert.assertSame(id, container.firstItemId()); + SQLContainer garbageContainer = getGarbageContainer(); + + Object id = garbageContainer.addItem(); + + Assert.assertSame(id, garbageContainer.firstItemId()); } @Test public void isFirstId_tableEmptyResultSet_returnsFirstAddedItem() throws SQLException { - DataGenerator.createGarbage(connectionPool); - SQLContainer container = new SQLContainer(new TableQuery("garbage", - connectionPool, SQLTestsConstants.sqlGen)); - Object id = container.addItem(); - assertTrue(container.isFirstId(id)); + SQLContainer garbageContainer = getGarbageContainer(); + + Object id = garbageContainer.addItem(); + + assertTrue(garbageContainer.isFirstId(id)); } @Test public void isLastId_tableOneItemAdded_returnsTrueForAddedItem() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object id = container.addItem(); + assertTrue(container.isLastId(id)); } @Test public void isLastId_tableTwoItemsAdded_returnsTrueForLastAddedItem() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); container.addItem(); + Object id2 = container.addItem(); + assertTrue(container.isLastId(id2)); } @Test public void getIdByIndex_tableOneItemAddedLastIndexInContainer_returnsAddedItem() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object id = container.addItem(); + Assert.assertEquals(id, container.getIdByIndex(container.size() - 1)); } @Test public void removeItem_tableNoAddedItems_removesItemFromContainer() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); - int size = container.size(); + int originalSize = container.size(); Object id = container.firstItemId(); + assertTrue(container.removeItem(id)); + Assert.assertNotSame(id, container.firstItemId()); - Assert.assertEquals(size - 1, container.size()); + Assert.assertEquals(originalSize - 1, container.size()); } @Test public void containsId_tableRemovedItem_returnsFalse() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object id = container.firstItemId(); assertTrue(container.removeItem(id)); Assert.assertFalse(container.containsId(id)); @@ -828,10 +733,9 @@ public class SQLContainerTableQueryTest { @Test public void removeItem_tableOneAddedItem_removesTheAddedItem() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object id = container.addItem(); int size = container.size(); + assertTrue(container.removeItem(id)); Assert.assertFalse(container.containsId(id)); Assert.assertEquals(size - 1, container.size()); @@ -839,18 +743,16 @@ public class SQLContainerTableQueryTest { @Test public void getItem_tableItemRemoved_returnsNull() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object id = container.firstItemId(); + assertTrue(container.removeItem(id)); Assert.assertNull(container.getItem(id)); } @Test public void getItem_tableAddedItemRemoved_returnsNull() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object id = container.addItem(); + Assert.assertNotNull(container.getItem(id)); assertTrue(container.removeItem(id)); Assert.assertNull(container.getItem(id)); @@ -859,9 +761,8 @@ public class SQLContainerTableQueryTest { @Test public void getItemIds_tableItemRemoved_shouldNotContainRemovedItem() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object id = container.firstItemId(); + assertTrue(container.getItemIds().contains(id)); assertTrue(container.removeItem(id)); Assert.assertFalse(container.getItemIds().contains(id)); @@ -870,9 +771,8 @@ public class SQLContainerTableQueryTest { @Test public void getItemIds_tableAddedItemRemoved_shouldNotContainRemovedItem() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object id = container.addItem(); + assertTrue(container.getItemIds().contains(id)); assertTrue(container.removeItem(id)); Assert.assertFalse(container.getItemIds().contains(id)); @@ -880,9 +780,8 @@ public class SQLContainerTableQueryTest { @Test public void containsId_tableItemRemoved_returnsFalse() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object id = container.firstItemId(); + assertTrue(container.containsId(id)); assertTrue(container.removeItem(id)); Assert.assertFalse(container.containsId(id)); @@ -891,10 +790,8 @@ public class SQLContainerTableQueryTest { @Test public void containsId_tableAddedItemRemoved_returnsFalse() throws SQLException { - TableQuery query = new TableQuery("people", connectionPool, - SQLTestsConstants.sqlGen); - SQLContainer container = new SQLContainer(query); Object id = container.addItem(); + assertTrue(container.containsId(id)); assertTrue(container.removeItem(id)); Assert.assertFalse(container.containsId(id)); @@ -903,11 +800,10 @@ public class SQLContainerTableQueryTest { @Test public void nextItemId_tableItemRemoved_skipsRemovedItem() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object first = container.getIdByIndex(0); Object second = container.getIdByIndex(1); Object third = container.getIdByIndex(2); + assertTrue(container.removeItem(second)); Assert.assertEquals(third, container.nextItemId(first)); } @@ -915,11 +811,10 @@ public class SQLContainerTableQueryTest { @Test public void nextItemId_tableAddedItemRemoved_skipsRemovedItem() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object first = container.lastItemId(); Object second = container.addItem(); Object third = container.addItem(); + assertTrue(container.removeItem(second)); Assert.assertEquals(third, container.nextItemId(first)); } @@ -927,11 +822,10 @@ public class SQLContainerTableQueryTest { @Test public void prevItemId_tableItemRemoved_skipsRemovedItem() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object first = container.getIdByIndex(0); Object second = container.getIdByIndex(1); Object third = container.getIdByIndex(2); + assertTrue(container.removeItem(second)); Assert.assertEquals(first, container.prevItemId(third)); } @@ -939,11 +833,10 @@ public class SQLContainerTableQueryTest { @Test public void prevItemId_tableAddedItemRemoved_skipsRemovedItem() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object first = container.lastItemId(); Object second = container.addItem(); Object third = container.addItem(); + assertTrue(container.removeItem(second)); Assert.assertEquals(first, container.prevItemId(third)); } @@ -951,9 +844,8 @@ public class SQLContainerTableQueryTest { @Test public void firstItemId_tableFirstItemRemoved_resultChanges() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object first = container.firstItemId(); + assertTrue(container.removeItem(first)); Assert.assertNotSame(first, container.firstItemId()); } @@ -961,22 +853,20 @@ public class SQLContainerTableQueryTest { @Test public void firstItemId_tableNewlyAddedFirstItemRemoved_resultChanges() throws SQLException { - DataGenerator.createGarbage(connectionPool); - SQLContainer container = new SQLContainer(new TableQuery("garbage", - connectionPool, SQLTestsConstants.sqlGen)); - Object first = container.addItem(); - Object second = container.addItem(); - Assert.assertSame(first, container.firstItemId()); - assertTrue(container.removeItem(first)); - Assert.assertSame(second, container.firstItemId()); - } + SQLContainer garbageContainer = getGarbageContainer(); + + Object first = garbageContainer.addItem(); + Object second = garbageContainer.addItem(); + Assert.assertSame(first, garbageContainer.firstItemId()); + assertTrue(garbageContainer.removeItem(first)); + Assert.assertSame(second, garbageContainer.firstItemId()); + } @Test public void lastItemId_tableLastItemRemoved_resultChanges() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object last = container.lastItemId(); + assertTrue(container.removeItem(last)); Assert.assertNotSame(last, container.lastItemId()); } @@ -984,9 +874,8 @@ public class SQLContainerTableQueryTest { @Test public void lastItemId_tableAddedLastItemRemoved_resultChanges() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object last = container.addItem(); + Assert.assertSame(last, container.lastItemId()); assertTrue(container.removeItem(last)); Assert.assertNotSame(last, container.lastItemId()); @@ -995,9 +884,8 @@ public class SQLContainerTableQueryTest { @Test public void isFirstId_tableFirstItemRemoved_returnsFalse() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object first = container.firstItemId(); + assertTrue(container.removeItem(first)); Assert.assertFalse(container.isFirstId(first)); } @@ -1005,22 +893,21 @@ public class SQLContainerTableQueryTest { @Test public void isFirstId_tableAddedFirstItemRemoved_returnsFalse() throws SQLException { - DataGenerator.createGarbage(connectionPool); - SQLContainer container = new SQLContainer(new TableQuery("garbage", - connectionPool, SQLTestsConstants.sqlGen)); - Object first = container.addItem(); - container.addItem(); - Assert.assertSame(first, container.firstItemId()); - assertTrue(container.removeItem(first)); - Assert.assertFalse(container.isFirstId(first)); + SQLContainer garbageContainer = getGarbageContainer(); + + Object first = garbageContainer.addItem(); + garbageContainer.addItem(); + + Assert.assertSame(first, garbageContainer.firstItemId()); + assertTrue(garbageContainer.removeItem(first)); + Assert.assertFalse(garbageContainer.isFirstId(first)); } @Test public void isLastId_tableLastItemRemoved_returnsFalse() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object last = container.lastItemId(); + assertTrue(container.removeItem(last)); Assert.assertFalse(container.isLastId(last)); } @@ -1028,9 +915,8 @@ public class SQLContainerTableQueryTest { @Test public void isLastId_tableAddedLastItemRemoved_returnsFalse() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object last = container.addItem(); + Assert.assertSame(last, container.lastItemId()); assertTrue(container.removeItem(last)); Assert.assertFalse(container.isLastId(last)); @@ -1038,9 +924,8 @@ public class SQLContainerTableQueryTest { @Test public void indexOfId_tableItemRemoved_returnsNegOne() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object id = container.getIdByIndex(2); + assertTrue(container.removeItem(id)); Assert.assertEquals(-1, container.indexOfId(id)); } @@ -1048,9 +933,8 @@ public class SQLContainerTableQueryTest { @Test public void indexOfId_tableAddedItemRemoved_returnsNegOne() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object id = container.addItem(); + assertTrue(container.indexOfId(id) != -1); assertTrue(container.removeItem(id)); Assert.assertEquals(-1, container.indexOfId(id)); @@ -1059,9 +943,8 @@ public class SQLContainerTableQueryTest { @Test public void getIdByIndex_tableItemRemoved_resultChanges() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object id = container.getIdByIndex(2); + assertTrue(container.removeItem(id)); Assert.assertNotSame(id, container.getIdByIndex(2)); } @@ -1069,19 +952,16 @@ public class SQLContainerTableQueryTest { @Test public void getIdByIndex_tableAddedItemRemoved_resultChanges() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object id = container.addItem(); container.addItem(); int index = container.indexOfId(id); + assertTrue(container.removeItem(id)); Assert.assertNotSame(id, container.getIdByIndex(index)); } @Test public void removeAllItems_table_shouldSucceed() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); assertTrue(container.removeAllItems()); Assert.assertEquals(0, container.size()); } @@ -1089,10 +969,9 @@ public class SQLContainerTableQueryTest { @Test public void removeAllItems_tableAddedItems_shouldSucceed() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); container.addItem(); container.addItem(); + assertTrue(container.removeAllItems()); Assert.assertEquals(0, container.size()); } @@ -1101,11 +980,11 @@ public class SQLContainerTableQueryTest { @Test(timeout = 1000) public void removeAllItems_manyItems_commit_shouldSucceed() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); final int itemNumber = (SQLContainer.CACHE_RATIO + 1) * SQLContainer.DEFAULT_PAGE_LENGTH + 1; + container.removeAllItems(); + Assert.assertEquals(container.size(), 0); for (int i = 0; i < itemNumber; ++i) { container.addItem(); @@ -1119,11 +998,9 @@ public class SQLContainerTableQueryTest { @Test public void commit_tableAddedItem_shouldBeWrittenToDB() throws SQLException { - TableQuery query = new TableQuery("people", connectionPool, - SQLTestsConstants.sqlGen); - SQLContainer container = new SQLContainer(query); Object id = container.addItem(); container.getContainerProperty(id, "NAME").setValue("New Name"); + assertTrue(id instanceof TemporaryRowId); Assert.assertSame(id, container.lastItemId()); container.commit(); @@ -1136,9 +1013,6 @@ public class SQLContainerTableQueryTest { @Test public void commit_tableTwoAddedItems_shouldBeWrittenToDB() throws SQLException { - TableQuery query = new TableQuery("people", connectionPool, - SQLTestsConstants.sqlGen); - SQLContainer container = new SQLContainer(query); Object id = container.addItem(); Object id2 = container.addItem(); container.getContainerProperty(id, "NAME").setValue("Herbert"); @@ -1147,6 +1021,7 @@ public class SQLContainerTableQueryTest { Assert.assertSame(id2, container.lastItemId()); container.commit(); Object nextToLast = container.getIdByIndex(container.size() - 2); + Assert.assertFalse(nextToLast instanceof TemporaryRowId); Assert.assertEquals("Herbert", container.getContainerProperty(nextToLast, "NAME").getValue()); @@ -1159,24 +1034,20 @@ public class SQLContainerTableQueryTest { @Test public void commit_tableRemovedItem_shouldBeRemovedFromDB() throws SQLException { - TableQuery query = new TableQuery("people", connectionPool, - SQLTestsConstants.sqlGen); - SQLContainer container = new SQLContainer(query); Object last = container.lastItemId(); container.removeItem(last); container.commit(); + Assert.assertFalse(last.equals(container.lastItemId())); } @Test public void commit_tableLastItemUpdated_shouldUpdateRowInDB() throws SQLException { - TableQuery query = new TableQuery("people", connectionPool, - SQLTestsConstants.sqlGen); - SQLContainer container = new SQLContainer(query); Object last = container.lastItemId(); container.getContainerProperty(last, "NAME").setValue("Donald"); container.commit(); + Assert.assertEquals("Donald", container.getContainerProperty(container.lastItemId(), "NAME") .getValue()); @@ -1184,13 +1055,11 @@ public class SQLContainerTableQueryTest { @Test public void commit_removeModifiedItem_shouldSucceed() throws SQLException { - TableQuery query = new TableQuery("people", connectionPool, - SQLTestsConstants.sqlGen); - SQLContainer container = new SQLContainer(query); int size = container.size(); Object key = container.firstItemId(); Item row = container.getItem(key); row.getItemProperty("NAME").setValue("Pekka"); + assertTrue(container.removeItem(key)); container.commit(); Assert.assertEquals(size - 1, container.size()); @@ -1198,8 +1067,6 @@ public class SQLContainerTableQueryTest { @Test public void rollback_tableItemAdded_discardsAddedItem() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); int size = container.size(); Object id = container.addItem(); container.getContainerProperty(id, "NAME").setValue("foo"); @@ -1213,8 +1080,6 @@ public class SQLContainerTableQueryTest { @Test public void rollback_tableItemRemoved_restoresRemovedItem() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); int size = container.size(); Object last = container.lastItemId(); container.removeItem(last); @@ -1226,8 +1091,6 @@ public class SQLContainerTableQueryTest { @Test public void rollback_tableItemChanged_discardsChanges() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Object last = container.lastItemId(); container.getContainerProperty(last, "NAME").setValue("foo"); container.rollback(); @@ -1238,8 +1101,6 @@ public class SQLContainerTableQueryTest { @Test public void itemChangeNotification_table_isModifiedReturnsTrue() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Assert.assertFalse(container.isModified()); RowItem last = (RowItem) container.getItem(container.lastItemId()); container.itemChangeNotification(last); @@ -1248,8 +1109,6 @@ public class SQLContainerTableQueryTest { @Test public void itemSetChangeListeners_table_shouldFire() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); ItemSetChangeListener listener = EasyMock .createMock(ItemSetChangeListener.class); listener.containerItemSetChange(EasyMock.isA(ItemSetChangeEvent.class)); @@ -1264,8 +1123,6 @@ public class SQLContainerTableQueryTest { @Test public void itemSetChangeListeners_tableItemRemoved_shouldFire() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); ItemSetChangeListener listener = EasyMock .createMock(ItemSetChangeListener.class); listener.containerItemSetChange(EasyMock.isA(ItemSetChangeEvent.class)); @@ -1280,8 +1137,6 @@ public class SQLContainerTableQueryTest { @Test public void removeListener_table_shouldNotFire() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); ItemSetChangeListener listener = EasyMock .createMock(ItemSetChangeListener.class); EasyMock.replay(listener); @@ -1295,8 +1150,6 @@ public class SQLContainerTableQueryTest { @Test public void isModified_tableRemovedItem_returnsTrue() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Assert.assertFalse(container.isModified()); container.removeItem(container.lastItemId()); assertTrue(container.isModified()); @@ -1304,8 +1157,6 @@ public class SQLContainerTableQueryTest { @Test public void isModified_tableAddedItem_returnsTrue() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Assert.assertFalse(container.isModified()); container.addItem(); assertTrue(container.isModified()); @@ -1313,8 +1164,6 @@ public class SQLContainerTableQueryTest { @Test public void isModified_tableChangedItem_returnsTrue() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Assert.assertFalse(container.isModified()); container.getContainerProperty(container.lastItemId(), "NAME") .setValue("foo"); @@ -1324,8 +1173,6 @@ public class SQLContainerTableQueryTest { @Test public void getSortableContainerPropertyIds_table_returnsAllPropertyIds() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); Collection<?> sortableIds = container.getSortableContainerPropertyIds(); assertTrue(sortableIds.contains("ID")); assertTrue(sortableIds.contains("NAME")); @@ -1339,9 +1186,6 @@ public class SQLContainerTableQueryTest { @Test public void addOrderBy_table_shouldReorderResults() throws SQLException { - TableQuery query = new TableQuery("people", connectionPool, - SQLTestsConstants.sqlGen); - SQLContainer container = new SQLContainer(query); // Ville, Kalle, Pelle, Börje Assert.assertEquals("Ville", container.getContainerProperty(container.firstItemId(), "NAME") @@ -1362,16 +1206,11 @@ public class SQLContainerTableQueryTest { @Test(expected = IllegalArgumentException.class) public void addOrderBy_tableIllegalColumn_shouldFail() throws SQLException { - SQLContainer container = new SQLContainer(new TableQuery("people", - connectionPool, SQLTestsConstants.sqlGen)); container.addOrderBy(new OrderBy("asdf", true)); } @Test public void sort_table_sortsByName() throws SQLException { - TableQuery query = new TableQuery("people", connectionPool, - SQLTestsConstants.sqlGen); - SQLContainer container = new SQLContainer(query); // Ville, Kalle, Pelle, Börje Assert.assertEquals("Ville", container.getContainerProperty(container.firstItemId(), "NAME") @@ -1393,9 +1232,6 @@ public class SQLContainerTableQueryTest { @Test public void addFilter_table_filtersResults() throws SQLException { - TableQuery query = new TableQuery("people", connectionPool, - SQLTestsConstants.sqlGen); - SQLContainer container = new SQLContainer(query); // Ville, Kalle, Pelle, Börje Assert.assertEquals(4, container.size()); Assert.assertEquals("Börje", @@ -1412,9 +1248,6 @@ public class SQLContainerTableQueryTest { @Test public void addContainerFilter_filtersResults() throws SQLException { - TableQuery query = new TableQuery("people", connectionPool, - SQLTestsConstants.sqlGen); - SQLContainer container = new SQLContainer(query); // Ville, Kalle, Pelle, Börje Assert.assertEquals(4, container.size()); @@ -1430,9 +1263,6 @@ public class SQLContainerTableQueryTest { @Test public void addContainerFilter_ignoreCase_filtersResults() throws SQLException { - TableQuery query = new TableQuery("people", connectionPool, - SQLTestsConstants.sqlGen); - SQLContainer container = new SQLContainer(query); // Ville, Kalle, Pelle, Börje Assert.assertEquals(4, container.size()); @@ -1448,9 +1278,6 @@ public class SQLContainerTableQueryTest { @Test public void removeAllContainerFilters_table_noFiltering() throws SQLException { - TableQuery query = new TableQuery("people", connectionPool, - SQLTestsConstants.sqlGen); - SQLContainer container = new SQLContainer(query); // Ville, Kalle, Pelle, Börje Assert.assertEquals(4, container.size()); @@ -1472,9 +1299,6 @@ public class SQLContainerTableQueryTest { @Test public void removeContainerFilters_table_noFiltering() throws SQLException { - TableQuery query = new TableQuery("people", connectionPool, - SQLTestsConstants.sqlGen); - SQLContainer container = new SQLContainer(query); // Ville, Kalle, Pelle, Börje Assert.assertEquals(4, container.size()); @@ -1497,9 +1321,6 @@ public class SQLContainerTableQueryTest { @Test public void addFilter_tableBufferedItems_alsoFiltersBufferedItems() throws SQLException { - TableQuery query = new TableQuery("people", connectionPool, - SQLTestsConstants.sqlGen); - SQLContainer container = new SQLContainer(query); // Ville, Kalle, Pelle, Börje Assert.assertEquals(4, container.size()); Assert.assertEquals("Börje", @@ -1553,9 +1374,6 @@ public class SQLContainerTableQueryTest { @Test public void sort_tableBufferedItems_sortsBufferedItemsLastInOrderAdded() throws SQLException { - TableQuery query = new TableQuery("people", connectionPool, - SQLTestsConstants.sqlGen); - SQLContainer container = new SQLContainer(query); // Ville, Kalle, Pelle, Börje Assert.assertEquals("Ville", container.getContainerProperty(container.firstItemId(), "NAME") diff --git a/server/tests/src/com/vaadin/tests/server/component/TestReadEmptyDesign.java b/server/tests/src/com/vaadin/tests/server/component/TestReadEmptyDesign.java new file mode 100644 index 0000000000..ecd303b678 --- /dev/null +++ b/server/tests/src/com/vaadin/tests/server/component/TestReadEmptyDesign.java @@ -0,0 +1,78 @@ +/* + * Copyright 2000-2014 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.vaadin.tests.server.component; + +import java.io.ByteArrayInputStream; +import java.io.InputStream; + +import junit.framework.TestCase; + +import org.jsoup.nodes.Document; +import org.jsoup.nodes.DocumentType; +import org.jsoup.nodes.Element; + +import com.vaadin.ui.Component; +import com.vaadin.ui.VerticalLayout; +import com.vaadin.ui.declarative.Design; +import com.vaadin.ui.declarative.DesignContext; +import com.vaadin.ui.declarative.DesignException; + +/** + * Test cases for checking that reading a design with no elements in the html + * body produces null as the root component. + */ +public class TestReadEmptyDesign extends TestCase { + InputStream is; + + @Override + protected void setUp() throws Exception { + super.setUp(); + String html = createDesign().toString(); + is = new ByteArrayInputStream(html.getBytes()); + } + + public void testReadComponent() { + Component root = Design.read(is); + assertNull("The root component should be null.", root); + } + + public void testReadContext() { + DesignContext ctx = Design.read(is, null); + assertNotNull("The design context should not be null.", ctx); + assertNull("The root component should be null.", ctx.getRootComponent()); + } + + public void testReadContextWithRootParameter() { + try { + Component rootComponent = new VerticalLayout(); + DesignContext ctx = Design.read(is, rootComponent); + fail("Reading a design with no elements should fail when a non-null root Component is specified."); + } catch (DesignException e) { + // This is the expected outcome, nothing to do. + } + } + + private Document createDesign() { + Document doc = new Document(""); + DocumentType docType = new DocumentType("html", "", "", ""); + doc.appendChild(docType); + Element html = doc.createElement("html"); + doc.appendChild(html); + html.appendChild(doc.createElement("head")); + html.appendChild(doc.createElement("body")); + return doc; + } +}
\ No newline at end of file diff --git a/server/tests/src/com/vaadin/tests/server/component/TestWriteEmptyDesign.java b/server/tests/src/com/vaadin/tests/server/component/TestWriteEmptyDesign.java new file mode 100644 index 0000000000..b50915f1fd --- /dev/null +++ b/server/tests/src/com/vaadin/tests/server/component/TestWriteEmptyDesign.java @@ -0,0 +1,58 @@ +/* + * Copyright 2000-2014 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.vaadin.tests.server.component; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.OutputStream; + +import junit.framework.TestCase; + +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; + +import com.vaadin.ui.Component; +import com.vaadin.ui.declarative.Design; +import com.vaadin.ui.declarative.DesignContext; + +/** + * Test cases for checking that writing a component hierarchy with null root + * produces an html document that has no elements in the html body. + */ +public class TestWriteEmptyDesign extends TestCase { + + public void testWriteComponent() throws IOException { + OutputStream os = new ByteArrayOutputStream(); + Design.write((Component) null, os); + checkHtml(os.toString()); + } + + public void testWriteContext() throws IOException { + OutputStream os = new ByteArrayOutputStream(); + DesignContext ctx = new DesignContext(); + ctx.setRootComponent(null); + Design.write(ctx, os); + checkHtml(os.toString()); + } + + private void checkHtml(String html) { + Document doc = Jsoup.parse(html); + Element body = doc.body(); + assertEquals("There should be no elements in the html body.", "", + body.html()); + } +}
\ No newline at end of file diff --git a/server/tests/src/com/vaadin/tests/server/component/abstractselect/TestAbstractSelectValueUpdate.java b/server/tests/src/com/vaadin/tests/server/component/abstractselect/TestAbstractSelectValueUpdate.java deleted file mode 100644 index e81f6e09b6..0000000000 --- a/server/tests/src/com/vaadin/tests/server/component/abstractselect/TestAbstractSelectValueUpdate.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2000-2014 Vaadin Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -package com.vaadin.tests.server.component.abstractselect; - -import java.util.Collection; -import java.util.Collections; - -import org.junit.Assert; -import org.junit.Test; - -import com.vaadin.data.util.BeanItemContainer; -import com.vaadin.ui.AbstractSelect; - -public class TestAbstractSelectValueUpdate { - - @Test - public void removeItem_deleteItemFromUnderlyingContainer_selectValueIsUpdated() { - BeanItemContainer<Object> container = new BeanItemContainer<Object>( - Object.class); - Object item1 = new Object(); - Object item2 = new Object(); - container.addBean(item1); - container.addBean(item2); - TestSelect select = new TestSelect(); - select.setContainerDataSource(container); - - select.setValue(item1); - - Assert.assertNotNull("Value is null after selection", select.getValue()); - - container.removeItem(item1); - - Assert.assertNull("Value is not null after removal", select.getValue()); - } - - @Test - public void removeItem_multiselectSectionDeleteItemFromUnderlyingContainer_selectValueIsUpdated() { - BeanItemContainer<Object> container = new BeanItemContainer<Object>( - Object.class); - Object item1 = new Object(); - Object item2 = new Object(); - container.addBean(item1); - container.addBean(item2); - TestSelect select = new TestSelect(); - select.setMultiSelect(true); - select.setContainerDataSource(container); - - select.setValue(Collections.singletonList(item1)); - - checkSelectedItemsCount(select, 1); - - container.removeItem(item1); - - checkSelectedItemsCount(select, 0); - } - - private void checkSelectedItemsCount(TestSelect select, int count) { - Assert.assertNotNull("Selected value is null", select.getValue()); - Assert.assertTrue("Selected value is not a collection", - select.getValue() instanceof Collection); - Assert.assertEquals("Wrong number of selected items", - ((Collection<?>) select.getValue()).size(), count); - } - - private class TestSelect extends AbstractSelect { - - } -} diff --git a/server/tests/src/com/vaadin/tests/server/component/button/ButtonClick.java b/server/tests/src/com/vaadin/tests/server/component/button/ButtonClick.java index b41e93900f..3d5fe77f8e 100644 --- a/server/tests/src/com/vaadin/tests/server/component/button/ButtonClick.java +++ b/server/tests/src/com/vaadin/tests/server/component/button/ButtonClick.java @@ -3,9 +3,11 @@ package com.vaadin.tests.server.component.button; import org.junit.Assert; import org.junit.Test; +import com.vaadin.data.util.ObjectProperty; import com.vaadin.server.VaadinRequest; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.Button.ClickListener; import com.vaadin.ui.UI; /** @@ -15,6 +17,22 @@ public class ButtonClick { private boolean clicked = false; @Test + public void clickDetachedButton() { + Button b = new Button(); + final ObjectProperty<Integer> counter = new ObjectProperty<Integer>(0); + b.addClickListener(new ClickListener() { + + @Override + public void buttonClick(ClickEvent event) { + counter.setValue(counter.getValue() + 1); + } + }); + + b.click(); + Assert.assertEquals(Integer.valueOf(1), counter.getValue()); + } + + @Test public void testClick() { getButton().click(); Assert.assertTrue("Button doesn't fire clicks", clicked); @@ -36,22 +54,6 @@ public class ButtonClick { Assert.assertFalse("Read only button fires click events", clicked); } - @Test - public void testClickConnectorDisabled() { - Button b = new Button() { - @Override - public boolean isConnectorEnabled() { - return false; - } - }; - UI ui = createUI(); - b.setParent(ui); - addClickListener(b); - b.click(); - Assert.assertFalse("Button with disabled connector fires click events", - clicked); - } - private Button getButton() { Button b = new Button(); UI ui = createUI(); diff --git a/server/tests/src/com/vaadin/tests/server/component/fieldgroup/BeanFieldGroupTest.java b/server/tests/src/com/vaadin/tests/server/component/fieldgroup/BeanFieldGroupTest.java index 9c37b91ef5..90c079b35c 100644 --- a/server/tests/src/com/vaadin/tests/server/component/fieldgroup/BeanFieldGroupTest.java +++ b/server/tests/src/com/vaadin/tests/server/component/fieldgroup/BeanFieldGroupTest.java @@ -11,6 +11,7 @@ import com.vaadin.data.fieldgroup.FieldGroup.CommitException; import com.vaadin.data.fieldgroup.PropertyId; import com.vaadin.data.util.BeanItem; import com.vaadin.ui.Field; +import com.vaadin.ui.RichTextArea; import com.vaadin.ui.TextField; public class BeanFieldGroupTest { @@ -136,6 +137,19 @@ public class BeanFieldGroupTest { } @Test + public void buildAndBindNestedRichTextAreaProperty() { + + MyBean bean = new MyBean(); + + BeanFieldGroup<MyBean> bfg = new BeanFieldGroup<MyBean>(MyBean.class); + bfg.setItemDataSource(bean); + + RichTextArea helloField = bfg.buildAndBind("Hello string", + "nestedBean.hello", RichTextArea.class); + assertEquals(bean.nestedBean.hello, helloField.getValue().toString()); + } + + @Test public void setDataSource_nullBean_nullBeanIsSetInDataSource() { BeanFieldGroup<MyBean> group = new BeanFieldGroup<MyBean>(MyBean.class); diff --git a/server/tests/src/com/vaadin/ui/DateFieldTests.java b/server/tests/src/com/vaadin/ui/DateFieldTests.java new file mode 100644 index 0000000000..6a75b4630c --- /dev/null +++ b/server/tests/src/com/vaadin/ui/DateFieldTests.java @@ -0,0 +1,56 @@ +package com.vaadin.ui; + +import org.junit.Before; +import org.junit.Test; + +import java.util.Date; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.core.IsNull.nullValue; + +public class DateFieldTests { + + private DateField dateField; + private Date date; + + @Before + public void setup() { + dateField = new DateField(); + date = new Date(); + } + + @Test + public void rangeStartIsSetToNull() { + dateField.setRangeStart(null); + + assertThat(dateField.getRangeStart(), is(nullValue())); + } + + @Test + public void rangeStartIsImmutable() { + long expectedTime = date.getTime(); + + dateField.setRangeStart(date); + date.setTime(expectedTime + 1); + + assertThat(dateField.getRangeStart().getTime(), is(expectedTime)); + } + + @Test + public void rangeEndIsSetToNull() { + dateField.setRangeEnd(null); + + assertThat(dateField.getRangeEnd(), is(nullValue())); + } + + @Test + public void rangeEndIsImmutable() { + long expectedTime = date.getTime(); + + dateField.setRangeEnd(date); + date.setTime(expectedTime + 1); + + assertThat(dateField.getRangeEnd().getTime(), is(expectedTime)); + } +} |