cancel
Showing results for 
Search instead for 
Did you mean: 

Problem w/ com.sapportals.portal.security.usermanagement.IUser in EP6 SP2

Former Member
0 Kudos

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!

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

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?

Former Member
0 Kudos

Hi Guy,

can you post the stack trace. If not then can you tell me what line is it crashing on? What version of KM do have? Is it KM 5.0 or you have the new release KM 6.0.

Former Member
0 Kudos

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!!!

Former Member
0 Kudos

Guy,

I am not too sure what is going on with your code? email me at singhpra@hotmail.com. I will send you the that i have demonstrated in my weblog. You can try it out and let me know if you get the same error.

Former Member
0 Kudos

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

Former Member
0 Kudos

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>

Answers (2)

Answers (2)

Former Member
0 Kudos

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)

Former Member
0 Kudos

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.

https://www.sdn.sap.com/sdn/weblogs.sdn?blog=/pub/wlg/1424