You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Alexander Klimetschek (JIRA)" <ji...@apache.org> on 2015/06/03 23:45:37 UTC

[jira] [Updated] (OAK-2956) NPE in UserImporter when importing user with modified authorizable id

     [ https://issues.apache.org/jira/browse/OAK-2956?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Alexander Klimetschek updated OAK-2956:
---------------------------------------
    Description: 
When importing a file vault package with a user that exists before (same uuid in the .content.xml) but modified authorizable id, this NPE happens:

{noformat}
Caused by: java.lang.NullPointerException: null
	at org.apache.jackrabbit.oak.security.user.UserImporter.handlePropInfo(UserImporter.java:242)
	at org.apache.jackrabbit.oak.jcr.xml.ImporterImpl.importProperties(ImporterImpl.java:287)
	at org.apache.jackrabbit.oak.jcr.xml.ImporterImpl.startNode(ImporterImpl.java:470)
	at org.apache.jackrabbit.oak.jcr.xml.SysViewImportHandler.processNode(SysViewImportHandler.java:80)
	at org.apache.jackrabbit.oak.jcr.xml.SysViewImportHandler.startElement(SysViewImportHandler.java:117)
	at org.apache.jackrabbit.oak.jcr.xml.ImportHandler.startElement(ImportHandler.java:183)
	at org.apache.jackrabbit.vault.fs.impl.io.JcrSysViewTransformer.startNode(JcrSysViewTransformer.java:167)
	at org.apache.jackrabbit.vault.fs.impl.io.DocViewSAXImporter.startElement(DocViewSAXImporter.java:598)
	... 87 common frames omitted
{noformat}

It looks like [this line|https://github.com/apache/jackrabbit-oak/blob/105f890e04ee990f0e71d88937955680670d96f7/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserImporter.java#L242], meaning {{userManager.getAuthorizable(id)}} returned null.

While the use case might not be something to support (this happens during development, changing user names/details until "right"), at least the NPE should be guarded against and a better error message given.

Looking closer, it seems like a difference between {{UserManager.getAuthorizable(Tree)}} (called earlier in the method) (I assume using UUID to look up the existing user successfully) and {{UserManager.getAuthorizable(String)}} (using the rep:authorizableId to look up the user, failing, because it changed).

  was:
When importing a file vault package with a user that exists before (same uuid in the .content.xml) but modified authorizable id, this NPE happens:

{noformat}
Caused by: java.lang.NullPointerException: null
	at org.apache.jackrabbit.oak.security.user.UserImporter.handlePropInfo(UserImporter.java:242)
	at org.apache.jackrabbit.oak.jcr.xml.ImporterImpl.importProperties(ImporterImpl.java:287)
	at org.apache.jackrabbit.oak.jcr.xml.ImporterImpl.startNode(ImporterImpl.java:470)
	at org.apache.jackrabbit.oak.jcr.xml.SysViewImportHandler.processNode(SysViewImportHandler.java:80)
	at org.apache.jackrabbit.oak.jcr.xml.SysViewImportHandler.startElement(SysViewImportHandler.java:117)
	at org.apache.jackrabbit.oak.jcr.xml.ImportHandler.startElement(ImportHandler.java:183)
	at org.apache.jackrabbit.vault.fs.impl.io.JcrSysViewTransformer.startNode(JcrSysViewTransformer.java:167)
	at org.apache.jackrabbit.vault.fs.impl.io.DocViewSAXImporter.startElement(DocViewSAXImporter.java:598)
	... 87 common frames omitted
{noformat}

It looks like [this line|https://github.com/apache/jackrabbit-oak/blob/105f890e04ee990f0e71d88937955680670d96f7/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserImporter.java#L242], meaning {{userManager.getAuthorizable(id);}} returned null.

While the use case might not be something to support (this happens during development, changing user names/details until "right"), at least the NPE should be guarded against and a better error message given.

Looking closer, it seems like a difference between {{UserManager.getAuthorizable(Tree)}} (called earlier in the method) (I assume using UUID to look up the existing user successfully) and {{UserManager.getAuthorizable(String)}} (using the rep:authorizableId to look up the user, failing).


> NPE in UserImporter when importing user with modified authorizable id
> ---------------------------------------------------------------------
>
>                 Key: OAK-2956
>                 URL: https://issues.apache.org/jira/browse/OAK-2956
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.2.2
>            Reporter: Alexander Klimetschek
>
> When importing a file vault package with a user that exists before (same uuid in the .content.xml) but modified authorizable id, this NPE happens:
> {noformat}
> Caused by: java.lang.NullPointerException: null
> 	at org.apache.jackrabbit.oak.security.user.UserImporter.handlePropInfo(UserImporter.java:242)
> 	at org.apache.jackrabbit.oak.jcr.xml.ImporterImpl.importProperties(ImporterImpl.java:287)
> 	at org.apache.jackrabbit.oak.jcr.xml.ImporterImpl.startNode(ImporterImpl.java:470)
> 	at org.apache.jackrabbit.oak.jcr.xml.SysViewImportHandler.processNode(SysViewImportHandler.java:80)
> 	at org.apache.jackrabbit.oak.jcr.xml.SysViewImportHandler.startElement(SysViewImportHandler.java:117)
> 	at org.apache.jackrabbit.oak.jcr.xml.ImportHandler.startElement(ImportHandler.java:183)
> 	at org.apache.jackrabbit.vault.fs.impl.io.JcrSysViewTransformer.startNode(JcrSysViewTransformer.java:167)
> 	at org.apache.jackrabbit.vault.fs.impl.io.DocViewSAXImporter.startElement(DocViewSAXImporter.java:598)
> 	... 87 common frames omitted
> {noformat}
> It looks like [this line|https://github.com/apache/jackrabbit-oak/blob/105f890e04ee990f0e71d88937955680670d96f7/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserImporter.java#L242], meaning {{userManager.getAuthorizable(id)}} returned null.
> While the use case might not be something to support (this happens during development, changing user names/details until "right"), at least the NPE should be guarded against and a better error message given.
> Looking closer, it seems like a difference between {{UserManager.getAuthorizable(Tree)}} (called earlier in the method) (I assume using UUID to look up the existing user successfully) and {{UserManager.getAuthorizable(String)}} (using the rep:authorizableId to look up the user, failing, because it changed).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)