on 04-14-2005 8:54 PM
I'm trying to develop a program to read through a KM repository, but before I get started I must get around the issue of establishing a ResourceContext (which needs a valid com.sapportals.portal.security.usermanagement.IUser passed to it)...
Anyway does anyone have any ideas as to why I'm having the following issues with the code that I have below:
package src.api;
import com.sapportals.wcm.util.uri.RID;
import com.sapportals.portal.security.usermanagement.IUser;
import com.sapportals.wcm.util.usermanagement.WPUMFactory;
import com.sapportals.portal.prt.session.IUserContext;
import com.sapportals.portal.prt.component.*;
public class MyComponent extends AbstractPortalComponent
{
public void doContent(IPortalComponentRequest request, IPortalComponentResponse response)
{
System.out.println("dan88");
System.out.println("dan test222");
response.write("testing 2 ");
RID rid = RID.getRID("/Corporate Services");
System.out.println(rid.toString());
System.out.println("dan test222");
//Issue need to:
//IResourceContext ctxt = new
//ResourceContext(com.sapportals.portal.security.usermanagement.IUser);
//Need a com.sapportals.portal.security.usermanagement.IUser
//Also No java doc for com.sapportals.portal.security.usermanagement.IUser
// #1
try
{
IUser loggedOnUser = (IUser)request.getUser().getUser();
// Exception caught ...java.lang.ClassCastException: com.sapportals.portal.
// security.usermanagement.User50_Impl
String user = loggedOnUser.getId();
System.out.println(user);
}
catch (Exception ex)
{
// System.err.println("Exception caught ..." + ex);
System.out.println("Exception caught ..." + ex);
}
// #2
try
{
IUser user = WPUMFactory.getUserFactory().getEP5User(request.getUser());
//Exception caught ...java.lang.NullPointerException
System.out.println("made it!");
}
catch (Exception ex)
{
// System.err.println("Exception caught ..." + ex);
System.out.println("Exception caught ..." + ex);
}
// #3
try
{
//IUser user = WPUMFactory.getUserFactory().getEP5User();
// No java doc for com.sapportals.portal.security.usermanagement.IUserFactory
System.out.println("number 3!");
}
catch (Exception ex)
{
// System.err.println("Exception caught ..." + ex);
System.out.println("Exception caught ..." + ex);
}
// #4
try
{
System.out.println("in 4!");
//String userID = request.getUser().getUserID();
//String userID2 = ((IUser) request.getUser().getUser()).getDisplayID();
IUserContext userContext = request.getUser();
System.out.println("did first instruction");
IUser user = (IUser) userContext.getUser();
System.out.println("made it!");
}
catch (Exception ex)
{
// System.err.println("Exception caught ..." + ex);
System.out.println("Exception caught ..." + ex);
}
System.out.println("donexx");
}
}
The log yields the following:
dan88
dan test222
/Corporate Services
dan test222
Exception caught ...java.lang.ClassCastException: com.sapportals.portal.security
.usermanagement.User50_Impl
Exception caught ...java.lang.NullPointerException
number 3!
in 4!
did first instruction
Exception caught ...java.lang.ClassCastException: com.sapportals.portal.security
.usermanagement.User50_Impl
donexx
Any thoughts on this would be greatly appreciated!
Prakash,
Thanks for your reply... I had seen your weblog on this already.
I must be missing something, but I tried your suggestion with no luck.
here is my code...
...
import com.sapportals.wcm.repository.ResourceContext;
...
// #Prakash's solution
try
{
System.out.println("start of Prakash solution");
IUser user = WPUMFactory.getUserFactory().getEP5User(request.getUser());
System.out.println("did first instruction");
ResourceContext ctxt = new ResourceContext(user);
System.out.println("end of Prakash solution");
}
catch (Exception ex)
{ System.out.println("Exception caught ..." + ex);
}...
my log yields:
...start of Prakash solution
Exception caught ...java.lang.NullPointerException...
As you can see instruction:
IUser user = WPUMFactory.getUserFactory().getEP5User(request.getUser());
is throwing a null pointer exception.
Any ideas on why I might be getting this?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Prakash,
We have TREX 6.0 (I assume that means KM 6.0??)
The line it is crashing on is:
IUser user = WPUMFactory.getUserFactory().getEP5User(request.getUser());
I've capture the stack trace...
// #Prakash's solution
try
{
System.out.println("start of Prakash solution");
IUser user = WPUMFactory.getUserFactory().getEP5User(request.getUser());
System.out.println("did first instruction");
ResourceContext ctxt = new ResourceContext(user);
System.out.println("end of Prakash solution");
}
catch (Exception ex)
{
// System.err.println("Exception caught ..." + ex);
// System.out.println("Exception caught ..." + ex);
try{
throw ex.fillInStackTrace();
}
catch(Throwable e)
{
e.printStackTrace(printWriter);
System.out.println("Stack Trace " + result.toString());
}
}...
here is the actual trace...
start of Prakash solution
Stack Trace java.lang.NullPointerException
at src.api.MyComponent.doContent(MyComponent.java:50)
at com.sapportals.portal.prt.component.AbstractPortalComponent.serviceDe
precated(AbstractPortalComponent.java(Compiled Code))
at com.sapportals.portal.prt.component.AbstractPortalComponent.service(A
bstractPortalComponent.java(Compiled Code))
at com.sapportals.portal.prt.core.PortalRequestManager.callPortalCompone
nt(PortalRequestManager.java(Compiled Code))
at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(P
ortalRequestManager.java(Compiled Code))
at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(P
ortalRequestManager.java(Compiled Code))
at com.sapportals.portal.prt.component.PortalComponentResponse.include(P
ortalComponentResponse.java(Compiled Code))
at com.sapportals.portal.prt.pom.PortalNode.service(PortalNode.java:576)
at com.sapportals.portal.prt.core.PortalRequestManager.callPortalCompone
nt(PortalRequestManager.java(Compiled Code))
at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(P
ortalRequestManager.java(Compiled Code))
at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(P
ortalRequestManager.java(Compiled Code))
at com.sapportals.portal.prt.core.PortalRequestManager.runRequestCycle(P
ortalRequestManager.java:669)
at com.sapportals.portal.prt.connection.ServletConnection.handleRequest(
ServletConnection.java:208)
at com.sapportals.portal.prt.dispatcher.Dispatcher$doService.run(Dispatc
her.java:532)
at java.security.AccessController.doPrivileged(Native Method)
at com.sapportals.portal.prt.dispatcher.Dispatcher.service(Dispatcher.ja
va:415)
at javax.servlet.http.HttpServlet.service(HttpServlet.java(Compiled Code
))
at com.inqmy.services.servlets_jsp.server.InvokerServlet.service(Invoker
Servlet.java:126)
at javax.servlet.http.HttpServlet.service(HttpServlet.java(Compiled Code
))
at com.inqmy.services.servlets_jsp.server.FilterChainImpl.runServlet(Fil
terChainImpl.java(Inlined Compiled Code))
at com.inqmy.services.servlets_jsp.server.FilterChainImpl.doFilter(Filte
rChainImpl.java(Compiled Code))
at com.sapportals.portal.crosstopics.reverseproxyfilter.ReverseProxyFilt
er.doFilter(ReverseProxyFilter.java(Compiled Code))
at com.inqmy.services.servlets_jsp.server.FilterChainImpl.doFilter(Filte
rChainImpl.java(Compiled Code))
at com.inqmy.services.servlets_jsp.server.RunServlet.runSerlvet(RunServl
et.java(Compiled Code))
at com.inqmy.services.servlets_jsp.server.ServletsAndJspImpl.startServle
t(ServletsAndJspImpl.java(Compiled Code))
at com.inqmy.services.httpserver.server.RequestAnalizer.checkFilename(Re
questAnalizer.java(Compiled Code))
at com.inqmy.services.httpserver.server.RequestAnalizer.handle(RequestAn
alizer.java(Compiled Code))
at com.inqmy.services.httpserver.server.Response.handle(Response.java(In
lined Compiled Code))
at com.inqmy.services.httpserver.server.HttpServerFrame.request(HttpServ
erFrame.java(Compiled Code))
at com.inqmy.core.service.context.container.session.ApplicationSessionMe
ssageListener.process(ApplicationSessionMessageListener.java(Compiled Code))
at com.inqmy.core.cluster.impl5.ParserRunner.run(ParserRunner.java(Compi
led Code))
at com.inqmy.core.thread.impl0.ActionObject.run(ActionObject.java(Compil
ed Code))
at java.security.AccessController.doPrivileged(Native Method)
at com.inqmy.core.thread.impl0.SingleThread.run(SingleThread.java(Compil
ed Code))
Thanks Again for your time!!!
Hi Guy,
Dan sent the project. I know why your project is not working . The portalapp.xml is incorrect. Take a look at the following portalapp.xml and modify yours accordingly.
The sharingreference was incorrect and it should go under application-config.
<?xml version="1.0" encoding="utf-8"?>
<application>
<application-config>
<property name="PrivateSharingReference" value="com.sap.portal.htmlb,com.sap.km.application"/>
</application-config>
<components>
<component name="links_tree">
<component-config>
<property name="ClassName" value="com.ust.kmtree.display"/>
<property name="SecurityZone" value="com.ust.kmtree/high_safety"/>
</component-config>
<component-profile>
<property name="path" value="/documents/prakash"/>
<property name="tagLib" value="/SERVICE/htmlb/taglib/htmlb.tld"/>
</component-profile>
</component>
</components>
<services/>
</application>
Message was edited by: Prakash Singh
Hi Guy,
I looked at the project that Dan send me. Delete the libraries from PORTAL-INF->lib folder. If you put the following reference in your project , portal will automatically call this libraries.
<application-config>
<property name="PrivateSharingReference" value="com.sap.km.application"/>
</application-config>
The following is your fixed portalapp.xml.
<?xml version="1.0" encoding="utf-8"?>
<application>
application-config>
<property name="PrivateSharingReference" value="com.sap.km.application"/>
</application-config>
<components>
<component name="MyComponent">
<component-config>
<property name="ClassName" value="src.api.MyComponent"/>
<property name="SecurityZone" value="src.api/high_safety"/>
</component-config>
<component-profile/>
</component>
<component name="MyComponent2">
<component-config>
<property name="ClassName" value="com.ep6.test.MyComponent2"/>
<property name="SecurityZone" value="com.ep6.test/high_safety"/>
</component-config>
<component-profile/>
</component>
</components>
<services/>
</application>
Prakash suggested that Dan do the following:
Do the following and your project will work.
1. Move MyComponent.java to src.core->com->ep6->test
folder.
2. Delete the existing package name from
MyComponent.jav and add the following package name.
package com.ep6.test;
3. Cut and pasted the following portalapp.xml.
<?xml version="1.0" encoding="utf-8"?>
<application>
<application-config>
<property name="PrivateSharingReference"
value="com.sap.km.application"/>
</application-config>
<components>
<component name="MyComponent">
<component-config>
<property name="ClassName"
value="com.ep6.test.MyComponent"/>
<property name="SecurityZone"
value="com.ep6.test/high_safety"/>
</component-config>
<component-profile/>
</component>
</components>
<services/>
</application>...
Dan did this and it worked great!
Thanks Prakash... much appreciated (Dan)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
This is how you get the user context.
IUser user = WPUMFactory.getUserFactory().getEP5User(request.getUser());
ResourceContext ctxt = new ResourceContext(user);
The import for resource context is
import com.sapportals.wcm.repository.ResourceContext;
You can also checkout this weblog which might give you a clear picture.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
85 | |
10 | |
10 | |
9 | |
7 | |
6 | |
5 | |
5 | |
4 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.