I am working on setting up the ability to open a specific “job” from a URL. I am feeling like I am starting to spin my wheels on it, and I am probably missing something simple. Any help pointing me in the right direction would be greatly appreciated.
Following along URL Routes Generator - CUBA Platform. Developer’s Manual
I have added the @Route portion to the browse and edit screens
@LoadDataBeforeShow
@Route("jobs")
public class JobBrowse extends StandardLookup<Job>
AND
@EditedEntityContainer("jobDc")
@LoadDataBeforeShow
@Route(path = "edit", parentPrefix = "jobs")
public class JobEdit extends StandardEditor<Job>
Here is the version of the generateRoute() modified for the jobs table.
@Inject
private UrlRouting urlRouting;
@Inject
private GroupTable<Job> jobsTable;
@Inject
private Dialogs dialogs;
public void generateRoute() {
Job selectedJob = jobsTable.getSingleSelected();
if (selectedJob != null) {
String route = urlRouting.getRouteGenerator().getEditorRoute(selectedJob);
dialogs.createMessageDialog()
.withCaption("Generated route")
.withMessage(route)
.withWidth("710")
.show();
}
}
I created a button for route and invoked the generateRoute() method when selecting a single job on the browse screen.
I get an ID Proxy Unexpected Error when executing the Route for a selected job.
The error states an inability to serialize the ID, and that id is the same “ID” number for the selected job in the database.
Here is the entity details for the jobs table from the database.
CREATE TABLE public.test_job
(
id integer NOT NULL DEFAULT nextval(‘test_job_id_seq’::regclass),
uuid uuid,
And here is the job.java from the Data Model
Here is the full stack trace from the error
java.lang.IllegalArgumentException: Unable to serialize id '521' of type 'class com.haulmont.cuba.core.entity.IdProxy'
at com.haulmont.cuba.web.sys.navigation.UrlIdSerializer.serializeId(UrlIdSerializer.java:68)
at com.haulmont.cuba.web.sys.WebUrlRouting$RouteGeneratorImpl.prepareEditorUrlParams(WebUrlRouting.java:532)
at com.haulmont.cuba.web.sys.WebUrlRouting$RouteGeneratorImpl.getEditorRoute(WebUrlRouting.java:487)
at com.haulmont.cuba.gui.UrlRouting$RouteGenerator.getEditorRoute(UrlRouting.java:142)
at com.company.hermes.web.screens.job.JobBrowse.generateRoute(JobBrowse.java:36)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.haulmont.cuba.gui.xml.DeclarativeAction.actionPerform(DeclarativeAction.java:101)
at com.haulmont.cuba.web.gui.components.WebButton.buttonClicked(WebButton.java:64)
at com.haulmont.cuba.web.widgets.CubaButton.fireClick(CubaButton.java:76)
at com.vaadin.ui.Button$1.click(Button.java:57)
at sun.reflect.GeneratedMethodAccessor257.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:153)
at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:115)
at com.vaadin.server.communication.ServerRpcHandler.handleInvocation(ServerRpcHandler.java:431)
at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:396)
at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:260)
at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:82)
at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40)
at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1577)
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:425)
at com.haulmont.cuba.web.sys.CubaApplicationServlet.serviceAppRequest(CubaApplicationServlet.java:329)
at com.haulmont.cuba.web.sys.CubaApplicationServlet.service(CubaApplicationServlet.java:215)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:107)
at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:73)
at com.haulmont.cuba.web.sys.CubaHttpFilter.doFilter(CubaHttpFilter.java:93)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:836)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1747)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Any ideas?