1: We use the Celum DAM.
2: We use Datahub, and datahubbackoffice
Celum media have a reference to a raw asset, the name of which is something like RawToTempAssetxxx.
This causes errors in backoffice when trying to view a Media created by Celum. A stacktrace looks like this (edited for brevity).
2018-05-30T15:02:19,441 ERROR DefaultWidgetInstanceManager - Error during send output
javax.ws.rs.ProcessingException: URI is not absolute
at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:261) ~[jersey-client-2.25.1.jar:?]
...
at org.glassfish.jersey.client.JerseyInvocation$Builder.get(JerseyInvocation.java:321) ~[jersey-client-2.25.1.jar:?]
...
at com.hybris.datahub.client.RawItemClassClient.getItemTypes(RawItemClassClient.java:65) ~[datahub-rest-client-6.6.0.0-RC3.jar:6.6.0.0-RC3]
at de.hybris.platform.datahubbackoffice.dataaccess.rawdata.RawItemTypeFacadeStrategy.load(RawItemTypeFacadeStrategy.java:65) ~[?:?]
at com.hybris.cockpitng.dataaccess.facades.type.impl.DefaultTypeFacade.load(DefaultTypeFacade.java:46) ~[cockpit-data-integration-6.7.0.0-RC8.jar:?]
at com.hybris.cockpitng.dataaccess.facades.type.impl.DefaultTypeFacade.load(DefaultTypeFacade.java:53) ~[cockpit-data-integration-6.7.0.0-RC8.jar:?]
at com.hybris.cockpitng.labels.impl.TypeQualifierStringObjectHandler.getTypeLabel(TypeQualifierStringObjectHandler.java:121) ~[cockpit-data-integration-6.7.0.0-RC8.jar:?]
...
at com.hybris.backoffice.labels.impl.BackofficeLabelService.getObjectLabel(BackofficeLabelService.java:59) ~[classes/:?]
at com.hybris.cockpitng.common.EditorConfigurator.getAttributeLabel(EditorConfigurator.java:262) ~[backoffice-widgets-6.7.0.0-RC8.jar:?]
...
at com.hybris.cockpitng.common.EditorBuilder.configure(EditorBuilder.java:293) ~[backoffice-widgets-6.7.0.0-RC8.jar:?]
at com.hybris.cockpitng.widgets.editorarea.renderer.impl.AbstractEditorAreaComponentRenderer.createEditor(AbstractEditorAreaComponentRenderer.java:294) ~[backoffice-widgets-6.7.0.0-RC8.jar:?]
...
at de.hybris.platform.platformbackoffice.renderers.BackofficeEditorAreaRenderer.render(BackofficeEditorAreaRenderer.java:77) ~[?:?]
at com.hybris.cockpitng.widgets.editorarea.renderer.impl.DefaultEditorAreaRenderer.render(DefaultEditorAreaRenderer.java:54) ~[backoffice-widgets-6.7.0.0-RC8.jar:?]
at com.hybris.cockpitng.widgets.baseeditorarea.DefaultEditorAreaController.renderAttributes(DefaultEditorAreaController.java:1091) ~[backoffice-widgets-6.7.0.0-RC8.jar:?]
at com.hybris.cockpitng.widgets.baseeditorarea.DefaultEditorAreaController.showAllAttributes(DefaultEditorAreaController.java:1060) ~[backoffice-widgets-6.7.0.0-RC8.jar:?]
at com.hybris.cockpitng.widgets.baseeditorarea.DefaultEditorAreaController.updateView(DefaultEditorAreaController.java:883) ~[backoffice-widgets-6.7.0.0-RC8.jar:?]
at com.hybris.cockpitng.widgets.baseeditorarea.DefaultEditorAreaController.setObject(DefaultEditorAreaController.java:410) ~[backoffice-widgets-6.7.0.0-RC8.jar:?]
...
at com.hybris.cockpitng.widgets.collectionbrowser.mold.impl.DefaultSelectAndFocusDelegateController.sendItemFocusedNotification(DefaultSelectAndFocusDelegateController.java:197) ~[backoffice-widgets-6.7.0.0-RC8.jar:?]
...
at org.zkoss.zk.ui.AbstractComponent.onEvent(AbstractComponent.java:3162) [zk-8.5.0.jar:3.6.4]
...
at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) [servlet-api.jar:?]
...
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_161]
Caused by: java.lang.IllegalArgumentException: URI is not absolute
at java.net.URI.toURL(URI.java:1088) ~[?:1.8.0_161]
...
at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:252) ~[jersey-client-2.25.1.jar:?]
... 180 more
The error comes from the logic in the RawItemTypeFacadeStrategy which answers the call to canHandle(String s) with StringUtils.contains(s, "Raw") || xxx
I am unsure of what the implementation should be for this strategy, but hogging everything containing the string "Raw" is not correct.
We have made a temporary fix for this issue:
public class PyRawItemTypeFacadeStrategyAdapter implements TypeFacadeStrategy {
@Autowired(required = false)
@Qualifier("defaultRawItemTypeFacadeStrategy")
private TypeFacadeStrategy rawItemTypeFacadeStrategy;
@Override
public boolean canHandle(final String s) {
return rawItemTypeFacadeStrategy != null && !s.startsWith("RawToTempAsset") && rawItemTypeFacadeStrategy.canHandle(s);
}
// Rest of class just delegates to actual typefacade
}