0

I recently had to modify my Apex class code because I ran a PMD Apex scan. After reading the SF docs, I made changes and the PMD Scan passed the code. However, when I started to deploy code, I am getting bunch of errors during deployed. Here is what I am getting:

  1. Method does not exist or incorrect signature: void stripInaccessible(System.AccessType, Order) from the type System.Security

  2. Method does not exist or incorrect signature: void stripInaccessible(System.AccessType, Account) from the type System.Security

I am really confused as to why I am getting this because I feel like I have followed the SF developer guide. Here is a sample of my apex class:

global with sharing class MyApexCtrl {
@AuraEnabled
    global static String createOrder(String firstName, String lastName, String title, String accId){
        
        if(firstName != '' && lastName != '' && title != ''){
            Product2 pr = getProductRecord();
            //Contact objCon = getContact(firstName, lastName, title, accId);
            //System.debug('To show contact :: '+objCon);
            
            String priceBookId = [SELECT Id, Name FROM Pricebook2 WHERE Name = 'Standard Price Book' Limit 1].Id;
            
            List<PricebookEntry> listPBEntry = [SELECT Id, Name, Pricebook2Id, Product2Id, UnitPrice, IsActive, UseStandardPrice 
                                                FROM PricebookEntry WHERE Pricebook2Id =: priceBookId AND Product2Id =: pr.Id 
                                                AND IsActive = True WITH SECURITY_ENFORCED];
            Order ord = new Order();
            ord.AccountId = accId;
            ord.EffectiveDate = Date.today();
            ord.Pricebook2Id = priceBookId;
            ord.Type = 'Regular';
            
            SObjectAccessDecision decision = Security.stripInaccessible(AccessType.CREATABLE, ord);
            insert decision.getRecords();

Account accUpd = new Account(Id = accId, Order_Confirmation__c = true);
            SObjectAccessDecision decisionAcc = Security.stripInaccessible(AccessType.UPDATABLE, accUpd);
            update decisionAcc.getRecords();
            
            return 'Order created successfully';
            
        }else {
            return 'Error';
        }
    }

Can someone please help me resolve this? Why is this code not deploying and why I am getting these errors during deploy? Thanks

2 Answers 2

4

The most likely explanation I see is that your Apex class is set to an old API version, prior to the introduction of stripInaccessible(). Updating your class to use the latest API version (53.0 for production) should allow this code to deploy.

4
  • my API version is 53 Commented Jan 27, 2022 at 14:27
  • do you see any other problem with my code? I am still getting error deploying the code Commented Jan 28, 2022 at 0:15
  • Is the API version for this class (in its meta-xml file) set to 53.0? Just setting it in sfdx-project.json is not enough.
    – David Reed
    Commented Jan 28, 2022 at 0:45
  • this is the meta file for the apex class: <?xml version="1.0" encoding="UTF-8"?> <ApexClass xmlns="soap.sforce.com/2006/04/metadata"> <apiVersion>53.0</apiVersion> <status>Active</status> </ApexClass> Commented Jan 28, 2022 at 1:34
2

The compiler message says:

Method does not exist or incorrect signature: void stripInaccessible(System.AccessType, Order) from the type System.Security

The second parameter for stripInaccessible() must be a list of objects (List<SObject>). You are calling it with a single object. This leads to the compiler error.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .