function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Prallavi DuaPrallavi Dua 

Error in Visualforce using the Metadata methods

Hi,
Belew is the VF page and controller using the metadata methods.And there are two errors:
-->Method does not exist or incorrect signature: void createService() from the type MetadataController
--->Variable does not exist: customField

<apex:page controller="MetadataController">
    <apex:form id="form">
        <apex:sectionHeader title="Metadata Demo">
            <apex:pageMessages/>
                <apex:actionPoller action="{!checkStatus}" interval="5" rerender="form" rendered="{!NOT(ISNULL(Result))}">
                    <apex:outputPanel rendered="{!ISNULL(Result)}">
                        <apex:commandButton value="Create Field" action="{!createField}"/>
                        <!--apex:commandButton value="Delete Field" action="{!deleteField}"/-->
                    </apex:outputPanel>
                </apex:actionPoller>
        </apex:sectionHeader>
    </apex:form>
</apex:page>
--------------------------------------------------------------
public with sharing class MetadataController {
    
    public MetadataService.AsyncResult result {get;set;}
    public Book__c b{get;set;}
    
    public MetadataController(){
    
        result = new MetadataService.AsyncResult();        
    }
    
    
    public PageReference createField()
    {
        // .. as per above ...
        result = createService().create(new List<MetadataService.Metadata>{customField})[0];
        displayStatus();
        return null;
    }
    
    public PageReference checkStatus()
    {
        // Check status of the request
        //result = createService().checkStatus(new List<String> { result.Id })[0];
        displayStatus();
        return null;
    }
    
    private void displayStatus()
    {
        // Inspect the AsyncResult and display the result
        ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.Info,
                                                   result.done ? 'Request completed' : 'Request in progress...'));
        if(result.state == 'Error')
            ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.Error, result.message));
        if(result.done)
            result = null;
    }
}
Can someone help me

Thanks in Advance
D-CoderD-Coder
Use this to set up  a custom field :

customObject.nameField = new MetadataService.CustomField();
customObject.nameField.type_x = 'Text';
customObject.nameField.label = 'Test Record';

Add this method to resolve createService() error :

public static MetadataService.MetadataPort createService(){             
MetadataService.MetadataPort service = new MetadataService.MetadataPort(); service.SessionHeader = new MetadataService.SessionHeader_element();            
service.SessionHeader.sessionId = UserInfo.getSessionId();             
return service;         
}


If this answers your query please mark this question as a solved so that it can be filtered out from unsolved questions.
Lokesh Lokesh  MalviyaLokesh Lokesh Malviya
i am getting 2 errors in my code please help me




code-
public class CreateObject {
    public static void createObject() {
        
        MetadataService.MetadataPort service = createService();
        
        MetadataService.customObject customObject = new MetadataService.customObject();
        
        customObject.fullName = 'Test__c';
        
        customObject.label = 'Test';
        
        customObject.pluralLabel = 'Tests';
        
        customObject.nameField = new MetadataService.CustomField();
        
        customObject.nameField.type_x = 'Text';
        
        customObject.nameField.label = 'Test Record';
        
        customObject.deploymentStatus = 'Deployed';
        
        customObject.sharingModel = 'ReadWrite';
        
        List<MetadataService.SaveResult> results =
            
            service.createMetadata(

                new MetadataService.Metadata[] { customObject });
        
        handleSaveResults(results[0]);
        
    }
}




errors

Method does not exist or incorrect signature: void createService() from the type CreateObject
Method does not exist or incorrect signature: void handleSaveResults(MetadataService.SaveResult) from the type CreateObject