Hallo zusammen,
Ich versuche gerade einen ValueService zu schreiben, der Service soll sowohl für SiteArchitect als auch für den ContentCreator funktioniert.
Ich versuche auf die page.getId() zurückzugreifen.
private String findPageId(final SpecialistsBroker broker){
WebeditUiAgent uiWebEditAgent = broker.requestSpecialist(WebeditUiAgent.TYPE);
if (uiWebEditAgent == null) {
UIStoreAgent uiStoreAgent = broker.requestSpecialist(UIStoreAgent.TYPE);
Logging.logInfo("access over the site architect " , logger);
GuiStoreElement activeUiElement = uiStoreAgent.getActiveUiElement();
return Long.toString(activeUiElement.getId());
} else if (uiWebEditAgent != null){
Logging.logInfo("access over the content creator " , logger);
return Long.toString(uiWebEditAgent.getPreviewElement().getId());
}
Logging.logWarning("page id is empty!" , logger);
return null;
}
so kann nicht funktionieren, da der UIStoreAgent nicht teil der offiziellen API ist.
Nun habe ich das ganze mit dem ModelListener implementiert ohne viele Erfolg
private String findPageId(final SpecialistsBroker broker){
WebeditUiAgent uiWebEditAgent = broker.requestSpecialist(WebeditUiAgent.TYPE);
if (uiWebEditAgent == null) {
Logging.logInfo("access over the site architect" , logger);
PageModelListener pageModelListener = new PageModelListener();
ServicesBroker servicesBroker = broker.requireSpecialist(ServicesBroker.TYPE);
servicesBroker.getService(ModelService.class).addModelListener(SelectionModel.EDITORIAL, pageModelListener);
return Long.toString(pageModelListener.getCurrentPagePageId());
} else if (uiWebEditAgent != null){
Logging.logInfo("access over the content creator " , logger);
return Long.toString(uiWebEditAgent.getPreviewElement().getId());
}
Logging.logWarning("page id is empty!" , logger);
return null;
}
public class PageModelListener implements ModelListener {
private Object currentObject;
@Override
public void modelChanged(Object o) {
currentObject = o;
}
public long getCurrentPagePageId(){
long longValue = 0L;
if(currentObject != null) {
IDProvider elementWrapper = ((SelectionModel) currentObject).getElement();
if (elementWrapper instanceof Page){
longValue = elementWrapper.getId();
}
}
return longValue;
}
}
und bekomme folgende Exception:
WARN 27.11.2019 13:48:40.757 (org.eclipse.jetty.server.handler.ContextHandler): fs5webedit_14: Exception while dispatching incoming RPC call
FSVersion=5.2.190808.78484#4442;JDK=1.8.0_211 64bit Oracle Corporation;OS=Windows 10 10.0 amd64;Date=27.11.2019 13:48:40
com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract de.espirit.firstspirit.webedit.client.io.SerializableWrapper de.espirit.firstspirit.webedit.client.gadgets.ValueServiceMediator.getValue(java.lang.String,de.espirit.firstspirit.webedit.client.io.MapWrapper) throws de.espirit.firstspirit.webedit.client.gadgets.ValueServiceMediator.ServiceNotAvailableException' threw an unexpected exception: java.lang.NoClassDefFoundError: de/espirit/firstspirit/client/gui/model/ModelListener
at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:416)
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:605)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:333)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:303)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:373)
at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:876)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1623)
at de.espirit.firstspirit.io.servlet.WebAuthentication.doChain(WebAuthentication.java:956)
at de.espirit.firstspirit.webedit.server.ServiceAuthentication.doChain(ServiceAuthentication.java:37)
at de.espirit.firstspirit.io.servlet.WebAuthentication.doFilter(WebAuthentication.java:714)
at de.espirit.firstspirit.io.servlet.WebAuthentication.doFilter(WebAuthentication.java:199)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
at de.espirit.firstspirit.webedit.server.BrowserCachingFilter.doFilter(BrowserCachingFilter.java:37)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:566)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1711)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1347)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1678)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1249)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:227)
at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:78)
at de.espirit.firstspirit.io.servlet.HttpSubSessionFilter.doFilter(HttpSubSessionFilter.java:125)
at de.espirit.firstspirit.io.servlet.HttpSubSessionFilter.doFilter(HttpSubSessionFilter.java:73)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1711)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1347)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1678)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1249)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:152)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.Server.handle(Server.java:505)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:781)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:917)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoClassDefFoundError: de/espirit/firstspirit/client/gui/model/ModelListener
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
at java.lang.Class.getConstructor0(Class.java:3075)
at java.lang.Class.newInstance(Class.java:412)
at de.espirit.firstspirit.service.value.ValueServiceBrokerImpl.getValueService(ValueServiceBrokerImpl.java:22)
at de.espirit.firstspirit.webedit.server.gadgets.ValueServiceMediatorImpl.getValue(ValueServiceMediatorImpl.java:32)
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.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:587)
... 65 more
Caused by: java.lang.ClassNotFoundException: de.espirit.firstspirit.client.gui.model.ModelListener
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 76 more
Die Exception verstehe ich nicht. Die Klasse de.espirit.firstspirit.client.gui.model.ModelListener ist in der fs-client bzw. fs-server.jar
Hat jemand eine Idee wie das geht?