/* * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. * * WSO2 Inc. licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file except * in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.wso2.carbon.identity.workflow.mgt.template; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.wso2.carbon.identity.workflow.mgt.bean.metadata.InputData; import org.wso2.carbon.identity.workflow.mgt.bean.metadata.MetaData; import org.wso2.carbon.identity.workflow.mgt.bean.metadata.ParameterMetaData; import org.wso2.carbon.identity.workflow.mgt.bean.metadata.ParametersMetaData; import org.wso2.carbon.identity.workflow.mgt.exception.WorkflowException; import org.wso2.carbon.identity.workflow.mgt.exception.WorkflowRuntimeException; import org.wso2.carbon.identity.workflow.mgt.util.WorkflowManagementUtil; import javax.xml.bind.JAXBException; /** * Abstract Template class can be extend to create concrete * template that is providing its own details and metadata */ public abstract class AbstractTemplate { private Log log = LogFactory.getLog(AbstractTemplate.class); private ParametersMetaData parametersMetaData = null; private MetaData metaData; protected abstract InputData getInputData(String parameterName) throws WorkflowException; /** * AbstractTemplate Constructor with metadata xml string parameter * * @param metaDataXML metadata xml string that is validated against ParameterMetaData.xsd * @throws WorkflowRuntimeException */ public AbstractTemplate(String metaDataXML) throws WorkflowRuntimeException { try { this.metaData = WorkflowManagementUtil.unmarshalXML(metaDataXML, MetaData.class); if (this.metaData == null || this.metaData.getTemplate() == null) { throw new WorkflowRuntimeException("Error occurred while Loading Template Meta Data"); } this.parametersMetaData = this.metaData.getTemplate().getParametersMetaData(); } catch (JAXBException e) { String errorMsg = "Error occured while converting template parameter data to object : " + e.getMessage(); log.error(errorMsg); throw new WorkflowRuntimeException(errorMsg, e); } } /** * Retrieve template specific metadata * * @return ParametersMetaData object that is contain all the template specific parameter metadata. */ public ParametersMetaData getParametersMetaData() throws WorkflowException { if (parametersMetaData != null) { ParameterMetaData[] parameterMetaData = parametersMetaData.getParameterMetaData(); for (ParameterMetaData metaData : parameterMetaData) { if (metaData.isIsInputDataRequired()) { InputData inputData = getInputData(metaData.getName()); metaData.setInputData(inputData); } } } return parametersMetaData; } public void setParametersMetaData( ParametersMetaData parametersMetaData) { this.parametersMetaData = parametersMetaData; } /** * Template Id is unique representation of the template * * @return String templateId */ public String getTemplateId() { return this.metaData.getTemplate().getTemplateId(); } /** * Template Name * * @return String Template Name */ public String getName() { return this.metaData.getTemplate().getTemplateName(); } /** * Template Description * * @return String description */ public String getDescription() { return this.metaData.getTemplate().getTemplateDescription(); } }