Skip to Content
avatar image
Former Member

Recursive node context mapping across component borders

Hi,

I´ve written a service provider component that is used in several other components. The service provider component retrieves data from backend systems and publishes this via it´s interface controller context to other components that use it.

One of my context nodes is a simple recursive node.

--Tree, collection-type: list, cardinality: 0..n, singleton: true

-

-


child, repeated node: Tree

-

-


description, type: String

Mapping this node to the controller context of the embedding component results in the following runtime exception.

com.sap.tc.webdynpro.progmodel.context.ContextException: unknown context ServiceProviderComp.ServiceProviderComponentInterface

at com.sap.tc.webdynpro.progmodel.context.MappingInfo.getContext(MappingInfo.java:58)

at com.sap.tc.webdynpro.progmodel.context.MappingInfo.getContext(MappingInfo.java:71)

at com.sap.tc.webdynpro.progmodel.context.MappingInfo.getDataNode(MappingInfo.java:105)

at com.sap.tc.webdynpro.progmodel.context.RecursiveNodeInfo.init(RecursiveNodeInfo.java:128)

at com.sap.tc.webdynpro.progmodel.context.NodeInfo.init(NodeInfo.java:667)

at com.sap.tc.webdynpro.progmodel.context.NodeInfo.init(NodeInfo.java:667)

at com.sap.tc.webdynpro.progmodel.context.NodeInfo.init(NodeInfo.java:667)

at com.sap.tc.webdynpro.progmodel.context.Node.init(Node.java:263)

at com.sap.tc.webdynpro.progmodel.context.Context.init(Context.java:37)

at com.sap.tc.webdynpro.progmodel.controller.Controller.init(Controller.java:181)

at com.sap.tc.webdynpro.clientserver.cal.ClientComponent.init(ClientComponent.java:350)

at com.sap.tc.webdynpro.clientserver.cal.ClientApplication.init(ClientApplication.java:341)

at com.sap.tc.webdynpro.clientserver.task.Task.createApplication(Task.java:181)

at com.sap.tc.webdynpro.clientserver.task.WebDynproMainTask.execute(WebDynproMainTask.java:494)

at com.sap.tc.webdynpro.clientserver.cal.AbstractClient.executeTasks(AbstractClient.java:49)

at com.sap.tc.webdynpro.clientserver.cal.ClientManager.doProcessing(ClientManager.java:239)

at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doWebDynproProcessing(DispatcherServlet.java:130)

at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doContent(DispatcherServlet.java:92)

at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doGet(DispatcherServlet.java:35)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:373)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:250)

at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:319)

at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:297)

at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:696)

at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:221)

at com.sap.engine.services.httpserver.server.Client.handle(Client.java:92)

at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:146)

at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:37)

at com.sap.engine.core.cluster.impl6.session.UnorderedChannel$MessageRunner.run(UnorderedChannel.java:71)

at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)

at java.security.AccessController.doPrivileged(Native Method)

at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:94)

at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:140)

Is the mapping of recursive nodes across component borders not supported?

Thanks in advance

Helmut

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

1 Answer

  • avatar image
    Former Member
    Jul 13, 2004 at 11:01 AM

    Hi Helmut,

    I guess we need a bit more information on how you are doing the mapping.

    In the interface controller context, there is a special attribute (that only appears for nodes in this one context) called isInputElement. If this is set to true, then what you are saying is that this context will be mapped to some mapping origin node outside the boundary of the component. Therefore, it is not possible (at design time) to specify exactly which node will act as the mapping reference. This must be defined at component usage time and is referred to as "external" mapping I.E. the mapping origin lies outside the boundaries of the current controller.

    If the isInputElement attribute is set to false, then the node can still be mapped, but only from the parent component controller to the usage instance in the interface controller of the child component. This

    mapping can be established at design time, and is exactly the same as mapping a node from the context of a component controller to the context of a custom controller. This type of mapping is not referred to a

    "external" mapping since the mapping origin lies inside the boundaries of the current controller. Does this help?

    We need to know which type of mapping you are trying to perform and also whether it has been done correctly.

    Best regards,

    Karin

    Add comment
    10|10000 characters needed characters exceeded