CQWorkflowSerializationService.java 3.18 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.day.cq.workflow.model.WorkflowModel
 *  com.day.cq.workflow.model.WorkflowModelSerializer
 *  org.apache.felix.scr.annotations.Component
 *  org.apache.felix.scr.annotations.Property
 *  org.apache.felix.scr.annotations.Reference
 *  org.apache.felix.scr.annotations.ReferenceCardinality
 *  org.apache.felix.scr.annotations.ReferencePolicy
 *  org.apache.felix.scr.annotations.Service
 *  org.slf4j.Logger
 *  org.slf4j.LoggerFactory
 */
package com.day.cq.workflow.serialization.impl;

import com.day.cq.workflow.model.WorkflowModel;
import com.day.cq.workflow.model.WorkflowModelSerializer;
import com.day.cq.workflow.serialization.SerializationService;
import java.util.ArrayList;
import java.util.List;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.apache.felix.scr.annotations.ReferencePolicy;
import org.apache.felix.scr.annotations.Service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Component(metatype=0)
@Service(value={SerializationService.class})
@Property(name="service.description", value={"Workflow Serialization Service"})
public class CQWorkflowSerializationService
implements SerializationService {
    private static final Logger log = LoggerFactory.getLogger(CQWorkflowSerializationService.class);
    @Reference(policy=ReferencePolicy.DYNAMIC, cardinality=ReferenceCardinality.OPTIONAL_MULTIPLE, referenceInterface=WorkflowModelSerializer.class)
    private List<WorkflowModelSerializer> serializer = new ArrayList<WorkflowModelSerializer>();

    @Override
    public String getMimeType(String type) {
        WorkflowModelSerializer ser = this.getSerializer(type);
        if (ser != null) {
            return ser.getMimeType();
        }
        return null;
    }

    @Override
    public WorkflowModel deserialize(String modelDefinition, String type) throws Exception {
        WorkflowModelSerializer ser = this.getSerializer(type);
        if (ser != null) {
            return ser.deserialize(modelDefinition);
        }
        return null;
    }

    @Override
    public String serialize(WorkflowModel model, String type) throws Exception {
        WorkflowModelSerializer ser = this.getSerializer(type);
        if (ser != null) {
            return ser.serialize(model);
        }
        return null;
    }

    protected void bindSerializer(WorkflowModelSerializer serializer) {
        this.serializer.add(serializer);
    }

    protected void unbindSerializer(WorkflowModelSerializer serializer) {
        this.serializer.remove((Object)serializer);
    }

    private WorkflowModelSerializer getSerializer(String type) {
        log.debug("Looking for workflow model serializer with type: " + type);
        for (WorkflowModelSerializer ser : this.serializer) {
            if (!ser.getType().equals(type)) continue;
            log.debug("Workflow model serializer found for type: " + type);
            return ser;
        }
        log.debug("No workflow model serializer found for type: " + type);
        return null;
    }
}