Hi all,
I have a plugin which uses images coming from the media “repository”.
What it does is that it creates a URL from the name of the file that is given by the user, so the code, very basic is:
URL url = new URL(“media:///” + medianame);
Now this code works fine in developper for my plugin, when used in smart or web client.
When I put it on a real server though, the code still works fine in smart client, but for the web client a MalformedURLException is throwed:
java.net.MalformedURLException: unknown protocol: media
Note that the code hasn’t changed and is working well in the plugin used by a web client when the web client is launched from developer. Not so on a real server. That’s the only difference. So I suspect that the code that installs your URL protocol ‘media’ handler is not initialized correctly on the server, or in any case that a plugin used by web client has no access to it.
This is Servoy 5.1.1 on Windows.
I will file a case with a simple plugin example soon. Please have a look at it.
Hi Patrick was this solved?
I have this code in a calculated field, shown in a field of IMAGE_MEDIA displayType in a list view, to display the adobe icon if print_history_id has a value
function button_display()
{
var mediaName = "Forward.gif"
if(print_history_id)
mediaName = "adobe16red.gif"
var r = "media:///" + mediaName
return plugins.http.getMediaData(r)
}
It works in developer and on the server in SC but not WC. Here’s the error log. This is Servoy 5.2.8 on a Windows server
2011-05-24 23:20:57,094 ERROR [http-443-4] com.servoy.j2db.util.Debug - Throwable
java.net.MalformedURLException: unknown protocol: media
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at com.servoy.extensions.plugins.http.HttpProvider.js_getMediaData(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:179)
at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:353)
at com.servoy.j2db.scripting.RecordingFunction.call(RecordingFunction.java:40)
at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:3666)
at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:2680)
at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:166)
at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:387)
at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3135)
at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:165)
at com.servoy.j2db.scripting.ScriptEngine.executeFunction(ScriptEngine.java:476)
at com.servoy.j2db.scripting.TableScope.getCalculationValue(TableScope.java:191)
at com.servoy.j2db.scripting.TableScope.getCalculationValue(TableScope.java:214)
at com.servoy.j2db.dataprocessing.FoundSet.getCalculationValue(FoundSet.java:2567)
at com.servoy.j2db.dataprocessing.Record.getValue(Record.java:181)
at com.servoy.extensions.beans.dbtreeview.BindingInfo.getIcon(Unknown Source)
at com.servoy.extensions.beans.dbtreeview.FoundSetTreeModel$UserNode.getIcon(Unknown Source)
at com.servoy.extensions.beans.dbtreeview.WicketDBTreeViewNode.newImageComponent(Unknown Source)
at com.servoy.extensions.beans.dbtreeview.WicketDBTreeViewNode.addComponents(Unknown Source)
at org.apache.wicket.markup.html.tree.LabelIconPanel.<init>(LabelIconPanel.java:50)
at org.apache.wicket.markup.html.tree.LinkIconPanel.<init>(LinkIconPanel.java:43)
at com.servoy.extensions.beans.dbtreeview.WicketDBTreeViewNode.<init>(Unknown Source)
at com.servoy.extensions.beans.dbtreeview.WicketDBTreeView$6.<init>(Unknown Source)
at com.servoy.extensions.beans.dbtreeview.WicketDBTreeView.newNodeComponent(Unknown Source)
at org.apache.wicket.markup.html.tree.BaseTree.populateTreeItem(BaseTree.java:112)
at org.apache.wicket.markup.html.tree.AbstractTree$TreeItem.<init>(AbstractTree.java:136)
at org.apache.wicket.markup.html.tree.AbstractTree.newTreeItem(AbstractTree.java:1549)
at org.apache.wicket.markup.html.tree.AbstractTree.buildTreeItems(AbstractTree.java:1225)
at org.apache.wicket.markup.html.tree.AbstractTree.buildItemChildren(AbstractTree.java:1194)
at org.apache.wicket.markup.html.tree.AbstractTree.onBeforeRenderInternal(AbstractTree.java:642)
at org.apache.wicket.markup.html.tree.AbstractTree.onBeforeRender(AbstractTree.java:657)
at com.servoy.extensions.beans.dbtreeview.WicketDBTreeView.onBeforeRender(Unknown Source)
at org.apache.wicket.Component.internalBeforeRender(Component.java:1065)
at org.apache.wicket.Component.beforeRender(Component.java:1099)
at org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1753)
at org.apache.wicket.Component.onBeforeRender(Component.java:3950)
at com.servoy.j2db.server.headlessclient.dataui.WebDataRenderer.onBeforeRender(WebDataRenderer.java:407)
at org.apache.wicket.Component.internalBeforeRender(Component.java:1065)
at org.apache.wicket.Component.beforeRender(Component.java:1099)
at org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1753)
at org.apache.wicket.Component.onBeforeRender(Component.java:3950)
at org.apache.wicket.Component.internalBeforeRender(Component.java:1065)
at org.apache.wicket.Component.beforeRender(Component.java:1099)
at org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1753)
at org.apache.wicket.Component.onBeforeRender(Component.java:3950)
at org.apache.wicket.Component.internalBeforeRender(Component.java:1065)
at org.apache.wicket.Component.beforeRender(Component.java:1099)
at org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1753)
at org.apache.wicket.Component.onBeforeRender(Component.java:3950)
at com.servoy.j2db.server.headlessclient.WebForm.onBeforeRender(WebForm.java:1658)
at org.apache.wicket.Component.internalBeforeRender(Component.java:1065)
at org.apache.wicket.Component.beforeRender(Component.java:1099)
at org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1753)
at org.apache.wicket.Component.onBeforeRender(Component.java:3950)
at com.servoy.j2db.server.headlessclient.dataui.WebTabPanel.onBeforeRender(WebTabPanel.java:524)
at org.apache.wicket.Component.internalBeforeRender(Component.java:1065)
at org.apache.wicket.Component.beforeRender(Component.java:1099)
at org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1753)
at org.apache.wicket.Component.onBeforeRender(Component.java:3950)
at com.servoy.j2db.server.headlessclient.dataui.WebDataRenderer.onBeforeRender(WebDataRenderer.java:407)
at org.apache.wicket.Component.internalBeforeRender(Component.java:1065)
at org.apache.wicket.Component.beforeRender(Component.java:1099)
at org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1753)
at org.apache.wicket.Component.onBeforeRender(Component.java:3950)
at org.apache.wicket.Component.internalBeforeRender(Component.java:1065)
at org.apache.wicket.Component.beforeRender(Component.java:1099)
at org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1753)
at org.apache.wicket.Component.onBeforeRender(Component.java:3950)
at org.apache.wicket.Component.internalBeforeRender(Component.java:1065)
at org.apache.wicket.Component.beforeRender(Component.java:1099)
at org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1753)
at org.apache.wicket.Component.onBeforeRender(Component.java:3950)
at com.servoy.j2db.server.headlessclient.WebForm.onBeforeRender(WebForm.java:1658)
at org.apache.wicket.Component.internalBeforeRender(Component.java:1065)
at org.apache.wicket.Component.beforeRender(Component.java:1099)
at org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1753)
at org.apache.wicket.Component.onBeforeRender(Component.java:3950)
at org.apache.wicket.Component.internalBeforeRender(Component.java:1065)
at org.apache.wicket.Component.beforeRender(Component.java:1099)
at org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1753)
at org.apache.wicket.Component.onBeforeRender(Component.java:3950)
at org.apache.wicket.markup.repeater.AbstractRepeater.onBeforeRender(AbstractRepeater.java:151)
at com.servoy.j2db.server.headlessclient.MainPage$15.onBeforeRender(MainPage.java:662)
at org.apache.wicket.Component.internalBeforeRender(Component.java:1065)
at org.apache.wicket.Component.beforeRender(Component.java:1099)
at org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1753)
at org.apache.wicket.Component.onBeforeRender(Component.java:3950)
at org.apache.wicket.markup.html.form.Form.onBeforeRender(Form.java:2056)
at org.apache.wicket.Component.internalBeforeRender(Component.java:1065)
at org.apache.wicket.Component.beforeRender(Component.java:1099)
at org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1753)
at org.apache.wicket.Component.onBeforeRender(Component.java:3950)
at org.apache.wicket.Component.internalBeforeRender(Component.java:1065)
at org.apache.wicket.Component.beforeRender(Component.java:1099)
at org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1753)
at org.apache.wicket.Component.onBeforeRender(Component.java:3950)
at org.apache.wicket.Page.onBeforeRender(Page.java:1550)
at com.servoy.j2db.server.headlessclient.MainPage.onBeforeRender(MainPage.java:948)
at org.apache.wicket.Component.internalBeforeRender(Component.java:1065)
at org.apache.wicket.Component.beforeRender(Component.java:1099)
at org.apache.wicket.Component.prepareForRender(Component.java:2282)
at org.apache.wicket.Page.prepareForRender(Page.java:1540)
at org.apache.wicket.Component.prepareForRender(Component.java:2319)
at org.apache.wicket.Page.renderPage(Page.java:911)
at org.apache.wicket.request.target.component.PageRequestTarget.respond(PageRequestTarget.java:63)
at org.apache.wicket.request.AbstractRequestCycleProcessor.respond(AbstractRequestCycleProcessor.java:105)
at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1258)
at org.apache.wicket.RequestCycle.step(RequestCycle.java:1329)
at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1436)
at org.apache.wicket.RequestCycle.request(RequestCycle.java:545)
at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:486)
at com.servoy.j2db.server.servlets.Zl.doGet(Zl.java:10)
at org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:138)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:567)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Unknown Source)
Yes, it was solved. And the fix is part of Servoy 5.1.x and Servoy 5.2.x.
But you will have to use a different constructor for URL, see URL (Java Platform SE 6)
You will be able to get a URLStreamHandler from IClientPluginAccess.getMediaURLStreamHandler(), the rest you can construct from the media reference String you have.
for 6 i fixed the http plugin getMediaData() that it uses that mediastreamhandler:
https://www.servoyforge.net/projects/se … sions/3289
Thanks Johan,
In 5.2.8 is there anything I can do to get this code working?
function button_display()
{
var mediaName = "Forward.gif"
if(print_history_id)
mediaName = "adobe16red.gif"
var r = "media:///" + mediaName
return plugins.http.getMediaData(r)
}
var mediaName = "Forward.gif"
if(print_history_id)
mediaName = "adobe16red.gif"
return solutionModel.getMedia(mediaName).bytes;
That did the trick
thanks*10^6