/* * Copyright (c) 2008-2011 EMC Corporation * All Rights Reserved */ package com.emc.storageos.plugins.common.processor; import java.util.Iterator; import java.util.List; import java.util.Map; import javax.cim.CIMObjectPath; import javax.cim.CIMProperty; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.emc.storageos.plugins.BaseCollectionException; import com.emc.storageos.plugins.common.Constants; import com.emc.storageos.plugins.common.Processor; import com.emc.storageos.plugins.common.domainmodel.Operation; /** * Responsible for handling Iterators and updating CIMPaths in Map. This * processor is responsible for handling Result from providers of type * CIMObjectPaths. It just extracts the CIMOBject and push into the Map. */ public class CIMPathProcessor extends Processor { private Logger _logger = LoggerFactory.getLogger(CIMPathProcessor.class); @Override public void processResult( Operation operation, Object resultObj, Map<String, Object> keyMap) throws BaseCollectionException { String serialID = null; _logger.debug("ID :" + (String) keyMap.get(Constants._serialID)); try { final Iterator<?> it = (Iterator<?>) resultObj; while (it.hasNext()) { final CIMObjectPath path = (CIMObjectPath) it.next(); if (operation.getMethod().contains(Constants._enum)) { CIMProperty<?> ccprop = path.getKey(Constants._CreationClassName); String ccName = (String) ccprop.getValue(); _logger.debug("CCName :" + ccName); if (ccName.contains(Constants._StorageSystem)) { // Filter out the ObjectPath based on Array Serial ID CIMProperty<?> prop = path.getKey(Constants._Name); serialID = (String) prop.getValue(); _logger.info("serial ID Found:" + serialID); if (serialID.toLowerCase().contains(((String) keyMap .get(Constants._serialID)).toLowerCase())) { addPath(keyMap, operation.getResult(), path); break; } } } else { addPath(keyMap, operation.getResult(), path); } } } catch (Exception e) { _logger.error("Failed while processing Result with serialID : {}", serialID, e.fillInStackTrace()); } } @Override public void setPrerequisiteObjects(List<Object> inputArgs) throws BaseCollectionException { } }