Изменение продукта

Для завершения интеграции нужно изменить код продукта.

Процедура

  1. Добавьте в файл soapactionurl.xml дополнительное действие для нового запроса. <soap-url action="GET_CATALOG_ITEMS">http://localhost:8080/services/PortalIntegratedService</soap-url>
  2. Добавьте переменную в файл ISOAPMessageKeys.java.
    public static final String REQ_GET_CATALOG_ITEMS = "GET_CATALOG_ITEMS";
  3. Добавьте метод в файл WPCMediator.java для получения элементов:
    public HashMap getItems(WPSContext context)
        throws WPCMediatorException {
        WPCUser user = context.getWpcUser();
    
        // invoke WSHelper to return all catalog items
        Element catalogs = wsHelper.getItems(user);
    
       return CatalogNodeXMLHelper.parseCatalogsNode(catalogs);
  4. Добавьте метод в файл WSHelper.java для создания соответствующих запросов IBM® InfoSphere Master Data Management Collaboration Server:
    public Element getItems(WPCUser user) throws WPCMediatorException {
       String requestXML = XMLHelper.prepareWPCRequest("", REQ_GET_CATALOG_ITEMS,
       SYNCHRONOUS, user);
    
       SoapResponse soapResponse = invokeSOAP(getSoapURL(
    		ISoapMessageKeys.REQ_GET_CATALOG_ITEMS), requestXML, 
    		(String)user.getProperty(WPCUser.WPC_AXIS_SESSIONID));
    		setWPCSessionID(soapResponse,user);           
    
        String responseXML = soapResponse.getDataXML();
    
       Element responseEnvelopElement = 
    		XMLHelper.getRootElementFromString(responseXML);
    
            // anaylize the result element.
            WPCNotificationBean notificationBean = 
    				WSHelper.getNotificationDetails(responseEnvelopElement);
    
            if (notificationBean.getCode() == IMediatorResultState.SUCCESS) {
                return XMLHelper.getFirstElementInNS(responseEnvelopElement,
                    ISoapMessageKeys.CATALOGS);
            }
    
       throw new WPCMediatorException(WPCMediatorException.APPLICAION_ERROR,
                notificationBean);
        }
  5. Добавьте методы помощника (helper) для обработки ответов. В этом примере в CatalogNodeXMLHelper.java добавляются два метода helper для обработки ответов:
    public static HashMap parseCatalogsNode(Element ctgs) {
            if (ctgs == null) {
                return null;
            }
    
            Element[] childElements = XMLHelper.getElementsInNS(ctgs,
                    ISoapMessageKeys.CATALOG);
    
            return getItemsFromCatalogs(childElements);
        }
    
    
    
       private static HashMap getItemsFromCatalogs(Element[] catalogs) {
        	if (catalogs == null) {
        		return null;
        	}
    
            	HashMap itemsMap = new HashMap();
        	for (int i = 0; i < catalogs.length; i++) {
    String ctgName = XMLHelper.getFirstElementValueInNS(catalogs[i],
    ISoapMessageKeys.CATALOG_NAME);
    Element childElement = 	XMLHelper.getFirstElementInNS(catalogs[i],
    ISoapMessageKeys.CATALOG_CHILD);
    Element [] childNames = XMLHelper.getElementsInNS(childElement,
    ISoapMessageKeys.CATALOG_CHILD_DISP_NAME);
     	if(childNames!=null)
        		{
        			
        			List itemNames = new ArrayList();
        			for (int j = 0; j < childNames.length; ++j)
        			{
        				String itemName = XMLHelper.getElementValue(childNames[j]);
        				    				itemNames.add(itemName); 
        			}
    
        			itemsMap.put(ctgName,itemNames); 
        			    		} 	 
        	}
        }
  6. Сделайте вызов из метода doView() нового добавленного портлета, чтобы получить число элементов:
    public void doView(PortletRequest request, PortletResponse response) 
    throws PortletException, IOException {
    		// Set the MIME type for the render response
    		
    		WPSContext context = null;
    		PortletSession session = request.getPortletSession();
    		context = getWPSContext(request);
    		
    		
    		HashMap hm = new HashMap();
    		
    		        WPCMediator mediator = WPCMediator.getInstance();
    		        try {
    					hm = mediator.getItems(context);
    					hierarchy = mediator.getCatalogs(context);
    					     
    				} catch (WPCMediatorException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
             session.setAttribute(ITEMLIST,hm);
    }
  7. Создайте страницу JSP для извлечения атрибутов и вывода значений:
    <%
    PortletSession portletSession = portletRequest.getPortletSession();
    CategoryHierarchy[] hierarchy = 
    (CategoryHierarchy[])session.getAttribute
    (MyPortletProjectPortlet.AVAILABLE_CATALOGS);
    HashMap hm = (HashMap)session.getAttribute
    (MyPortletProjectPortlet.ITEMLIST);
    Iterator itAtt = hm.entrySet().iterator();
    
    %>
    <table border="0">
    	
    <% 
    
    while(itAtt.hasNext())
    		{	
                   
    			Map.Entry mapEntry = (Map.Entry) itAtt.next();
         			String catalogName = (String)mapEntry.getKey();
    			List itemNames = (ArrayList)mapEntry.getValue();
    			out.println("<tr><td>"+ catalogName+"</td>");
    			List itemIds =(List) hm.get(catalogName);
    			  int noOfItems = itemIds.size();
    			  
    		  out.println("<td>"+noOfItems+"</td></tr>");
    	  }
      
    %>


Последнее изменение: 12 Mar 2019