Package nexj.core.meta.integration

Examples of nexj.core.meta.integration.MessagePart


      if (root.getPartCount() == 0)
      {
         return null;
      }

      MessagePart hdr = root.getPart(0);
      HL7MessagePartMapping mapping = (HL7MessagePartMapping)hdr.getMapping();

      return (mapping.getLevel() == HL7MessagePartMapping.LEVEL_SEGMENT &&
         mapping.getName().equals("MSH")) ? (CompositeMessagePart)hdr : null;
   }
View Full Code Here


      {
         throw new MetadataException("err.meta.integration.xml.inapplicableSubtype",
            new Object[]{SUBTYPE_NAMES[m_nSubtype], part.getFullPath()});
      }

      MessagePart rootPart = part.getRoot();
      RootXMLMessagePartMapping rootMapping = (RootXMLMessagePartMapping)rootPart.getMapping();

      // Ensure XSI namespace is used on message root if nillable elements are used
      if (m_bNillable && rootMapping != null)
      {
         rootMapping.addNamespace(XMLNamespace.XSI_NAME, XMLNamespace.XSI, null, false);
View Full Code Here

         boolean bInstance = part instanceof CompositeMessagePartInstance;
         CompositeMessagePart composite = (CompositeMessagePart)part;

         for (int i = 0, nCount = composite.getPartCount(); i < nCount; i++)
         {
            MessagePart child = composite.getPart(i);
            MessagePartMapping mapping = child.getMapping();

            if (mapping != null)
            {
               if (bInstance)
               {
                  mapping.finish(child);
               }

               if (child.isRequired()
                     && ((XMLMessagePartMapping)mapping).getNodeType() == XMLMessagePartMapping.ATTRIBUTE)
               {
                  m_bHasRequiredAttributes = true;
               }
            }
View Full Code Here

    * @param msg The message part metadata.
    * @throws IntegrationException if an error occurs.
    */
   protected Object transfer1(Object obj, MessagePart msg) throws IntegrationException
   {
      MessagePart processedPart = msg;
      String sMessageName = null;
      Metaclass metaclass;
      Instance instance = (obj instanceof Instance) ? (Instance)obj : null;
      TransferObject srcTobj = (obj instanceof TransferObject) ? (TransferObject)obj : null;
      Message message = null;

      if (instance != null || srcTobj != null)
      {
         if (msg instanceof CompositeMessagePartRef)
         {
            CompositeMessagePartRef ref = (CompositeMessagePartRef)msg;
            CompositeMessagePart referencedPart = ref.getRefPart();

            message = ((ObjectMessagePartMapping)referencedPart.getMapping()).getMessage();
         }
         else if (msg.getParent() == null)
         {
            message = ((ObjectMessagePartMapping)msg.getRoot().getMapping()).getMessage();
         }
      }

      // Process inheritance
      if (message != null)
      {
         metaclass = (instance != null) ? instance.getMetaclass() :
            m_context.getMetadata().getMetaclass(srcTobj.getClassName());

         Message derivedMessage = findDerivedMessage(message, metaclass);

         if (derivedMessage == null)
         {
            throw new IntegrationException("err.integration.object.missingMapping",
               new Object[]{metaclass.getName(), message.getName(), msg.getFullPath()});
         }

         Message.validatePolymorphism(message, derivedMessage, msg);
         msg = derivedMessage.getRoot();
         message = derivedMessage;
         sMessageName = message.getName();
      }

      ObjectMessagePartMapping mapping = (ObjectMessagePartMapping)msg.getMapping();

      if (m_context.isSecure())
      {
         if (mapping.getAttribute() != null)
         {
            mapping.getAttribute().checkReadAccess(m_context.getPrivilegeSet());
         }
         else
         {
            mapping.getMetaclass().checkReadAccess(m_context.getPrivilegeSet());
         }
      }

      if (obj == null)
      {
         if (msg.isRequired())
         {
            throw new IntegrationException("err.integration.minPartCount", new Object[]{msg.getFullPath()});
         }
        
         return null;
      }
     
      if (msg instanceof PrimitiveMessagePart)
      {
         return ((PrimitiveMessagePart)msg).convertValue(obj);
      }

      CompositeMessagePart composite = (CompositeMessagePart)msg;
      int nCount = composite.getPartCount();
     
      if (obj instanceof TransferObject)
      {
         if (isFetchInstance())
         {
            instance = (Instance)RPCUtil.instantiateClean(srcTobj, new HashTab(), m_context);
         }
         else
         {
            TransferObject tobj = new TransferObject(sMessageName, composite.getPartCount());

            tobj.setEventName(srcTobj.getEventName());
            tobj.setOID(srcTobj.getOID());
  
            for (int i = 0; i < nCount; ++i)
            {
               MessagePart part = composite.getPart(i);
               ObjectMessagePartMapping objectMessagePartMapping = (ObjectMessagePartMapping)part.getMapping();
               Attribute attribute = objectMessagePartMapping.getAttribute();
               Object value = null;

               if (attribute != null)
               {
                  value = transfer(srcTobj.findValue(attribute.getName()), part);
               }
               else
               {
                  switch (objectMessagePartMapping.getSystemAttribute())
                  {
                     case ObjectMessagePartMapping.ATTR_OID:
                        value = srcTobj.getOID().toBinary();
                        break;

                     case ObjectMessagePartMapping.ATTR_CLASS:
                        value = srcTobj.getClassName();
                        break;

                     case ObjectMessagePartMapping.ATTR_EVENT:
                        value = srcTobj.getEventName();
                        break;
                  }
               }

               tobj.setValue(part.getName(), value);
            }
  
            return tobj;
         }
      }

      if (m_context.isSecure() && !instance.isReadable())
      {
         return null;
      }

      metaclass = instance.getMetaclass();

      TransferObject tobj = new TransferObject(sMessageName, composite.getPartCount());
     
      if (!mapping.getMetaclass().isUpcast(metaclass))
      {
         throw new IntegrationException("err.integration.object.partClass",
            new Object[]{mapping.getMetaclass().getName(), composite.getFullPath()});
      }

      String sEvent = null;
      boolean bProcessed = m_processedSet.put(instance, processedPart, Boolean.TRUE) != null;
     
      m_instanceMap.put(instance, tobj);
      tobj.setOID(instance.getOID());

      if (srcTobj != null)
      {
         sEvent = srcTobj.getEventName();
      }
      else
      {
         switch (instance.getState())
         {
            case Instance.NEW:
               sEvent = "create";
               break;

            case Instance.DIRTY:
               sEvent = "update";
               break;

            case Instance.DELETED:
               sEvent = "delete";
               break;
         }
      }

      tobj.setEventName(sEvent);

      for (int i = 0; i < nCount; ++i)
      {
         MessagePart part = composite.getPart(i);
         ObjectMessagePartMapping objectMessagePartMapping = (ObjectMessagePartMapping)part.getMapping();
         Attribute attribute = objectMessagePartMapping.getAttribute();
         Object value = null;

         if (attribute != null)
         {
            if (bProcessed && objectMessagePartMapping.isKey() && !(part instanceof PrimitiveMessagePart))
            {
               throw new IntegrationException("err.integration.object.recursive", new Object[]{msg.getName()});
            }
           
            if (!bProcessed || objectMessagePartMapping.isKey())
            {
               value = transfer(instance.getValue(attribute.getOrdinal()), part);
               tobj.setValue(part.getName(), value);
            }
         }
         else
         {
            switch (objectMessagePartMapping.getSystemAttribute())
            {
               case ObjectMessagePartMapping.ATTR_OID:
                   value = (instance.getOID() == null) ? null : instance.getOID().toBinary();
                   break;

               case ObjectMessagePartMapping.ATTR_CLASS:
                  value = instance.getMetaclass().getName();
                  break;

               case ObjectMessagePartMapping.ATTR_EVENT:
                  value = sEvent;
                  break;
            }

            tobj.setValue(part.getName(), value);
         }
      }

      if (!bProcessed)
      {
View Full Code Here

    */
   protected Object instantiate1(Object obj, MessagePart part)
   {
      ObjectMessagePartMapping mapping = (ObjectMessagePartMapping)part.getMapping();
      Metaclass derivedClass = (mapping == null) ? null : mapping.getMetaclass();
      MessagePart derivedPart = part;

      if (part instanceof CompositeMessagePart)
      {
         derivedPart = getPolymorphic((CompositeMessagePart)part, (TransferObject)obj);

         if (derivedPart != part)
         {
            ObjectMessagePartMapping derivedMapping = (ObjectMessagePartMapping)derivedPart.getMapping();

            if (mapping == null)
            {
               mapping = derivedMapping;
            }
View Full Code Here

      ObjectMessagePartMapping mapping = (ObjectMessagePartMapping)composite.getMapping();
      Object value = null;

      if (mapping != null)
      {
         MessagePart part = mapping.getSystemPart(nAttr);

         if (part != null)
         {
            value =  tobj.findValue(part.getName());
         }

         switch (nAttr)
         {
            case ObjectMessagePartMapping.ATTR_CLASS:
View Full Code Here

   protected void updateInstance(CompositeMessagePart composite, TransferObject tobj, Instance instance,
      boolean bNew, ConflictResolutionStrategy conflictResolution)
   {
      for (int i = 0, n = composite.getPartCount(); i != n; ++i)
      {
         MessagePart part = composite.getPart(i);

         if (tobj.hasValue(part.getName()))
         {
            ObjectMessagePartMapping partMapping = (ObjectMessagePartMapping)part.getMapping();

            if (isUpdateRequired(partMapping, instance, bNew))
            {
               Object value = instantiate(tobj.getValue(part.getName()), part);
               Attribute attribute = partMapping.getAttribute();

               if (attribute == null || instance == null)
               {
                  if (partMapping.getSystemAttribute() == ObjectMessagePartMapping.ATTR_OID)
View Full Code Here

      boolean bSameKey = true;
      boolean bSameValues = true;

      for (int nPartIndex = 0, nPartCount = composite.getPartCount(); nPartIndex != nPartCount; ++nPartIndex)
      {
         MessagePart part = composite.getPart(nPartIndex);
         ObjectMessagePartMapping mapping = (ObjectMessagePartMapping)part.getMapping();
         String sName = part.getName();

         if (newTobj.hasValue(sName) || oldTobj.hasValue(sName))
         {
            boolean bDifferent = newTobj.hasValue(sName) != oldTobj.hasValue(sName);

            if (!bDifferent)
            {
               if (part instanceof CompositeMessagePart && !part.isCollection())
               {
                  CompositeMessagePart derivedMessagePart = getPolymorphic((CompositeMessagePart)part, newTobj,
                     context);

                  bDifferent = !isSameKey((TransferObject)oldTobj.getValue(sName),
View Full Code Here

         }
        
         return;
      }
     
      MessagePart previousPart = rowPart;
     
      //Format fields in ordinal order
      for (int nPartIndex=0; nPartIndex < partsInOrder.length; nPartIndex++)
      {
         PrimitiveMessagePart part = partsInOrder[nPartIndex];
        
         if (part == null)
         {
            nDelimiterAccumulator += 1;
            continue;
         }
        
         CSVMessagePartMapping partMapping = (CSVMessagePartMapping)part.getMapping();
        
         //Get the transfer object for this part's datum.
         String[] dataKeyPath = partMapping.getDataKeyPath();
         Object datum = rowTransferObj;

         for (int nKeyPathIndex=0; nKeyPathIndex < dataKeyPath.length; nKeyPathIndex++)
         {
            datum = ((TransferObject)datum).findValue(dataKeyPath[nKeyPathIndex], Undefined.VALUE);
           
            if (datum == Undefined.VALUE)
            {
               break;
            }
         }
        
         //Always write the absolute minimum number of delimiters: if there is no data
         //for the last fields on the line, then no delimiter is written.
         if (datum != Undefined.VALUE)
         {
            for (int nDelim = 0; nDelim < nDelimiterAccumulator; nDelim++)
            {
               m_writer.write(((CSVMessagePartMapping)previousPart.getMapping()).getDelimiter().charValue());
            }
           
            nDelimiterAccumulator = 1;
            formatField(datum, partMapping, part);
         }
View Full Code Here

         //Check for missing required parts.
         if (nDataIndex >= rawRow.length || rawRow[nDataIndex] == Invalid.VALUE)
         {
            for (int nPartScanIndex = nDataIndex; nPartScanIndex < partsInOrder.length; nPartScanIndex++)
            {
               MessagePart scanPart = partsInOrder[nPartScanIndex];

               if (scanPart != null && scanPart.isRequired())
               {
                  throw new IntegrationException("err.integration.minPartCount",
                     new Object[]{scanPart.getFullPath()});
               }
            }

            continue;
         }
View Full Code Here

TOP

Related Classes of nexj.core.meta.integration.MessagePart

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.