You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Bruno P. Kinoshita (JIRA)" <ji...@apache.org> on 2016/11/19 06:06:58 UTC

[jira] [Created] (WEAVER-16) NullPointerException when weaving class with no package

Bruno P. Kinoshita created WEAVER-16:
----------------------------------------

             Summary: NullPointerException when weaving class with no package
                 Key: WEAVER-16
                 URL: https://issues.apache.org/jira/browse/WEAVER-16
             Project: Commons Weaver
          Issue Type: Bug
          Components: core
            Reporter: Bruno P. Kinoshita
            Priority: Minor


This issue happened while quickly writing an example with weaver to test another issue.

I created a sample project to call the maven-plugin with privilizer, as in the project home page example.

{code}
import org.apache.commons.weaver.privilizer.Privileged;

public class SimpleClass {

    public void sayA() {
        System.out.println("Aaa");
    }
    
    @Privileged
    public void sayNothing() {
        System.out.println("Nothing");
    }
}
{code}

As I was in a hurry, I didn't bother creating a package, adding comments, etc. When I asked Eclipse to build the project, it threw a NPE. Then I tried via command line, same behavior.

My pom.xml was using version 1.3, but since I have the project sources in my workspace, I re-synced the local repo, `mvn install`'d, and then updated the pom to use 1.4-SNAPSHOT.

Same issue. I believe the issue is in the ScanResult#getWeavable method that returns a WeavablePackage.

{code}
// snip
    /**
     * Public for use by {@link WeaveProcessor}.
     * @param pkg to wrap
     * @return {@link WeavablePackage}
     */
    public WeavablePackage getWeavable(final Package pkg) {
        final String key = pkg.getName();
        if (packages.containsKey(key)) {
            return packages.get(key);
        }
        final WeavablePackage result = new WeavablePackage(pkg);
        final WeavablePackage faster = packages.putIfAbsent(key, result);
        return faster == null ? result : faster;
    }
// snip
{code}

I believe when you create a class with no package, trying to get its package (i.e. obj.getClass().getPackage()) will return null. So I'm no sure how this issue could be fixed. Simply passing a null to WeavablePackage's contructor seems like will create other issues...

For the time being, will update my example to use packages.



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