Change-Id: I46557f6c6f8543ab61b863145863824785d14784tags/7.6.0.alpha4
@@ -26,6 +26,7 @@ import java.util.List; | |||
import java.util.Locale; | |||
import java.util.Map; | |||
import java.util.Set; | |||
import java.util.logging.Level; | |||
import java.util.logging.Logger; | |||
import com.google.gwt.thirdparty.guava.common.collect.BiMap; | |||
@@ -1238,7 +1239,13 @@ public class RpcDataProviderExtension extends AbstractExtension { | |||
safeConverter.getPresentationType(), locale); | |||
} | |||
JsonValue encodedValue = renderer.encode(presentationValue); | |||
JsonValue encodedValue; | |||
try { | |||
encodedValue = renderer.encode(presentationValue); | |||
} catch (Exception e) { | |||
getLogger().log(Level.SEVERE, "Unable to encode data", e); | |||
encodedValue = renderer.encode(null); | |||
} | |||
return encodedValue; | |||
} |
@@ -58,7 +58,7 @@ public class ImageRenderer extends ClickableRenderer<Resource> { | |||
if (!(resource == null || resource instanceof ExternalResource || resource instanceof ThemeResource)) { | |||
throw new IllegalArgumentException( | |||
"ImageRenderer only supports ExternalResource and ThemeResource (" | |||
+ resource.getClass().getSimpleName() + "given )"); | |||
+ resource.getClass().getSimpleName() + " given)"); | |||
} | |||
return encode(ResourceReference.create(resource, this, null), |
@@ -0,0 +1,43 @@ | |||
/* | |||
* 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.components.grid; | |||
import com.vaadin.server.ClassResource; | |||
import com.vaadin.server.Resource; | |||
import com.vaadin.server.VaadinRequest; | |||
import com.vaadin.tests.components.AbstractTestUIWithLog; | |||
import com.vaadin.tests.integration.FlagSeResource; | |||
import com.vaadin.ui.Grid; | |||
import com.vaadin.ui.renderers.ImageRenderer; | |||
public class GridWithBrokenRenderer extends AbstractTestUIWithLog { | |||
@Override | |||
protected void setup(VaadinRequest request) { | |||
final Grid grid = new Grid(); | |||
grid.addColumn("short", String.class); | |||
grid.addColumn("icon", Resource.class); | |||
grid.addColumn("country", String.class); | |||
grid.getColumn("icon").setRenderer(new ImageRenderer()); | |||
addComponent(grid); | |||
grid.addRow("FI", new ClassResource("fi.gif"), "Finland"); | |||
grid.addRow("SE", new FlagSeResource(), "Sweden"); | |||
} | |||
} |
@@ -0,0 +1,41 @@ | |||
/* | |||
* 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.components.grid; | |||
import org.junit.Assert; | |||
import org.junit.Test; | |||
import com.vaadin.testbench.elements.GridElement; | |||
import com.vaadin.tests.tb3.SingleBrowserTest; | |||
public class GridWithBrokenRendererTest extends SingleBrowserTest { | |||
@Test | |||
public void ensureRendered() { | |||
openTestURL(); | |||
GridElement grid = $(GridElement.class).first(); | |||
assertRow(grid, 0, "FI", "", "Finland"); | |||
assertRow(grid, 1, "SE", "", "Sweden"); | |||
} | |||
private void assertRow(GridElement grid, int row, String... texts) { | |||
for (int column = 0; column < texts.length; column++) { | |||
Assert.assertEquals("Cell " + row + "," + column, texts[column], | |||
grid.getCell(row, column).getText()); | |||
} | |||
} | |||
} |