0

Can anyone help with this error?

    System.NullPointerException: Attempt to de-reference a null object

    Class.productdata.getMapOfContent: line 24, column 1

Here is the Apex Class. "Line 24" refers to "if(LoopContentData.TagCsv.contains(getTag())) {"

public class productdata {

    LIST<ContentVersion> allContentData= [select Available_To__c, IsLatest,ContentModifiedDate, Title, ReasonForChange, VersionNumber, RatingCount, Description, ContentDocumentId, TagCsv, ContentDocument.ParentId FROM ContentVersion WHERE IsLatest=TRUE];
    LIST<CONTENTWORKSPACE> WorkspaceObjects = [SELECT Name, ID FROM CONTENTWORKSPACE];
    MAP<string,LIST<ContentVersion>> MyMapOfContent = new MAP<string,LIST<ContentVersion>>();
    //string prod = [SELECT Name FROM Product2 WHERE Id = :ApexPages.currentPage().getParameters().get('id')].Name;
    string prod;
    product2 myProduct;

    public productdata(ApexPages.StandardController controller) {
        this.myProduct = (Product2)controller.getRecord();
    }

    public String getTag(){
        return prod = [SELECT Name FROM Product2 WHERE Id = :myProduct.ID].Name;
    }


    public MAP<string,LIST<ContentVersion>> getMapOfContent(){
        for(CONTENTWORKSPACE loopIds : WorkspaceObjects){
            LIST<ContentVersion> theContentVersionMapLoop = new LIST<contentversion>();         
            for(ContentVersion LoopContentData : allContentData){
                if(LoopContentData.ContentDocument.ParentId == loopIds.ID){
                    if(LoopContentData.TagCsv.contains(getTag())) {
                        theContentVersionMapLoop.add(LoopContentData);
                    }
                }
            }
            MyMapOfContent.put(loopIds.Name,theContentVersionMapLoop);
        }
        return MyMapOfContent;
    }

}

I know it has something to do with getTag method but I have no idea why. Thanks!

11
  • Can you tell us what line 24 is? Commented Jan 14, 2014 at 18:42
  • "Line 24" refers to "if(LoopContentData.TagCsv.contains(getTag())) {" THANKS! Commented Jan 14, 2014 at 18:43
  • 1
    Is TagCsv null for any of those records? Commented Jan 14, 2014 at 18:44
  • Yeah, it very well could be. I'll test that and escape the next few rows if that is the case. Thanks! Commented Jan 14, 2014 at 19:01
  • Note: you have SOQL (getTag()) inside of nested loops. You could just reference myProduct.Name directly instead of querying for it every iteration. Commented Jan 14, 2014 at 19:04

1 Answer 1

2

Did you check to see if TagCsv is null for any of those rows? If you attempt an instance method call on a null value, you'll get the "Attempt to De-Reference a Null Object" error.

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.