CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-com-liferay--com-liferay-dynamic-data-mapping-api

Liferay Dynamic Data Mapping API provides comprehensive APIs for creating, managing, and processing dynamic forms and data structures within Liferay Portal.

Pending
Overview
Eval results
Files

data-providers.mddocs/

Data Provider Framework

External data source integration for populating form field options dynamically from REST APIs, databases, and other sources.

Capabilities

Data Provider Interface

Core interface for implementing external data sources that can populate form field options.

interface DDMDataProvider {
    /**
     * Fetches data from external source based on request parameters
     */
    DDMDataProviderResponse getData(DDMDataProviderRequest ddmDataProviderRequest) 
        throws DDMDataProviderException;
}

class DDMDataProviderRequest {
    String getDDMDataProviderInstanceId();
    Map<String, String> getParameters();
    Locale getLocale();
    long getCompanyId();
    long getGroupId();
}

class DDMDataProviderResponse {
    Map<String, List<Map<String, String>>> getData();
    int getStatus();
}

Data Provider Configuration

Configuration and settings for data provider instances.

class DDMDataProviderInstanceSettings {
    String getCacheable();
    String getPassword();
    String getTimeout();
    String getUrl();
    String getUsername();
    Map<String, String> getInputParameters();
    Map<String, String> getOutputParameters();
}

interface DDMDataProviderTracker {
    DDMDataProvider getDDMDataProvider(String type);
    Set<String> getDDMDataProviderTypes();
}

Usage Examples

Creating a REST API Data Provider

@Component
public class RestApiDataProviderExample {
    
    @Reference
    private DDMDataProviderInstanceLocalService dataProviderLocalService;
    
    public DDMDataProviderInstance createCountriesDataProvider(long groupId, long userId) 
        throws PortalException {
        
        // Create data provider form definition
        DDMForm settingsForm = new DDMForm();
        settingsForm.setDefaultLocale(Locale.US);
        
        // URL field
        DDMFormField urlField = new DDMFormField("url", "text");
        urlField.setLabel(new LocalizedValue(Locale.US, "API URL"));
        urlField.setRequired(true);
        settingsForm.addDDMFormField(urlField);
        
        // Timeout field  
        DDMFormField timeoutField = new DDMFormField("timeout", "numeric");
        timeoutField.setLabel(new LocalizedValue(Locale.US, "Timeout (ms)"));
        settingsForm.addDDMFormField(timeoutField);
        
        // Create data provider instance
        Map<Locale, String> nameMap = Collections.singletonMap(Locale.US, "Countries API");
        Map<Locale, String> descriptionMap = Collections.singletonMap(Locale.US, "REST API for country data");
        
        ServiceContext serviceContext = new ServiceContext();
        serviceContext.setScopeGroupId(groupId);
        
        return dataProviderLocalService.addDataProviderInstance(
            userId, groupId, nameMap, descriptionMap, 
            settingsForm, "rest", serviceContext
        );
    }
}

Types

Data Provider Types

class DDMDataProviderException extends PortalException {
    DDMDataProviderException(String msg);
    DDMDataProviderException(String msg, Throwable cause);
}

interface DDMDataProviderParameterSettings {
    String getInputParameterLabel();
    String getInputParameterName(); 
    String getInputParameterRequired();
    String getInputParameterType();
    String getOutputParameterName();
    String getOutputParameterPath();
    String getOutputParameterType();
}

Install with Tessl CLI

npx tessl i tessl/maven-com-liferay--com-liferay-dynamic-data-mapping-api

docs

data-providers.md

expressions.md

form-management.md

index.md

integration-extensions.md

models-services.md

security-validation.md

storage-io.md

templates.md

tile.json