Package nexj.core.meta

Examples of nexj.core.meta.Argument


         boolean bMatch = true;

         // go through all event arguments and check that they were specified
         for (int k = 0, nCount = event.getArgumentCount(); k < nCount && bMatch; ++k)
         {
            Argument arg = event.getArgument(k);

            bMatch = !arg.isRequired() || getParameter(arg.getName()) != null;
         }

         if (bMatch) // ensure all required arguments for this event exist
         {
            return event;
View Full Code Here


      {
         Event event = meta.getEvent(i);

         if (isExportedEvent(event))
         {
            Argument result = event.getResult();

            // check if array <element> required for return type
            if (result != null && result.isCollection())
            {
               m_requiredArrayTypeSet.add(result.getType());
            }
         }
      }
   }
View Full Code Here

         m_writer.startElement("request");

            for (int i = 0, nCount = event.getArgumentCount(); i < nCount; ++i)
            {
               Argument arg = event.getArgument(i);
               Type type = arg.getType();
               boolean bVarArg = event.isVarArg() && i == nCount - 1;

               if (type instanceof Metaclass)
               {
                  type = Primitive.STRING; // OID parameter
               }

               writeParam(arg.getName(), getQualifiedTypeCached(type, bVarArg),
                          arg.isRequired(), arg.isCollection(),
                          arg.getSymbol().getName(), arg.getDescription());
            }

         m_writer.endElement("request");

         m_writer.startElement("response");

            Argument result = event.getResult();

            if (result != null)
            {
               QName qType = getElementTypeCached(result.getType(), result.isCollection());

               writeRepresentation(qType.getPrefix(), qType.getLocalPart(), null,
                                   null, result.getDescription());
            }

            m_writer.openElement("fault");
               m_writer.writeAttribute("href", "#exception");
            m_writer.closeEmptyElement();
View Full Code Here

            continue; // ignored event
         }

         for (int k = 0, nArgCount = event.getArgumentCount(); k < nArgCount; ++k)
         {
            Argument arg = event.getArgument(k);
            Type type = arg.getType();

            setRequiredType(type, arg.isCollection());

            if (event.isVarArg() && k == nArgCount - 1) //varArg args might require arrays e.g. WSDL
            {
               setRequiredType(type, true);
            }
         }

         if (!isExportedEventResult(event))
         {
            continue; // skip result types that are not exported
         }

         Argument result = event.getResult();

         if (result == null) // undeclared
         {
            setRequiredType(Primitive.ANY, false);
         }
         else
         {
            setRequiredType(result.getType(), result.isCollection());
         }
      }
   }
View Full Code Here

      {
         request.addInvocation(
            m_instance, m_event.getName(), (m_argList == null) ? null : m_argList.toArray(), null);
      }

      Argument result = m_event.getResult();
      Type resultType = (result == null) ? null : result.getType();
      Object resultObj = server.invoke(request).getResult(0);

      if (m_resultElement == null)
      {
         return resultObj; // no defined result element tag
View Full Code Here

                        writeElement(XML.BASE_PREFIX, "instance", meta);
                     }

                     for (int k = 0, nArgCount = event.getArgumentCount(); k < nArgCount; ++k)
                     {
                        Argument arg = event.getArgument(k);
                        Type type = arg.getType();
                        boolean bVarArg = event.isVarArg() && k == nArgCount - 1;
                        QName qType = getQualifiedTypeCached(type, bVarArg);

                        // don't use nillable="true" as that will automatically set minOccurs="1"
                        // in MS.NET
                        writeElement(
                           arg.getName(), null, qType,
                           (arg.isRequired()) ? 1 : 0, (arg.isCollection()) ? -1 : 1, false,
                           arg.getDescription());
                     }

                  m_writer.endElement("sequence");
               m_writer.endElement("complexType");

            m_writer.endElement("element");

            if (!isExportedEventResult(event))
            {
               continue; // skip result types that are not exported e.g. for WSDL Basic
            }

            Argument result = event.getResult();
            Type type = (result == null) ? null : result.getType();
            boolean bTyped = type != null;

            // NOTE: MS.NET requires the result to be wrapped if the arguments are wrapped
            //       hence must place result inside a complexType
            // @see http://servicefactory.codeplex.com/Thread/View.aspx?ThreadId=21981
            if (bTyped && result.isCollection())
            {
               m_writer.openElement("element");
                  m_writer.writeAttribute("name", sEvent, "_Response");

                  if (!result.isRequired())
                  {
                     m_writer.writeAttribute("nillable", true);
                  }

               m_writer.closeElement();

                  if (m_bIncludeDocumentation)
                  {
                     writeDocumentation(null, result.getDescription());
                  }

                  // NOTE: MS.NET complains about "(Elt:Elt -- NameAndTypeOK)" with "restriction"
                  m_writer.startElement("complexType");
                     m_writer.startElement("sequence");
                        writeElement("item", null, type, 0, -1, true, null);
                     m_writer.endElement("sequence");
                  m_writer.endElement("complexType");

               m_writer.endElement("element");
            }
            else // single element
            {
               m_writer.openElement("element");
                  m_writer.writeAttribute("name", sEvent, "_Response");
               m_writer.closeElement();
                  m_writer.startElement("complexType");
                     m_writer.startElement("sequence");

                        if (bTyped)
                        {
                           writeElement(
                              "item", null, type,
                              1, 1, !result.isRequired(), result.getDescription());
                        }
                        else
                        {
                           writeElement("item", null, Primitive.ANY, 1, 1, true, null);
                        }
View Full Code Here

      protected void init(XMLUnmarshaller unmsh)
      {
         // for every argument add an accessor (do first so arg ID's match accessor ordinal)
         for (int i = 0, nCount = m_event.getArgumentCount(); i < nCount; ++i)
         {
            Argument arg = m_event.getArgument(i);
            QName element = new QName(m_sURI, arg.getName());
            Unmarshaller unmarshaller = null;
            boolean bVarArg = m_event.isVarArg() && i == nCount - 1;
            boolean bTyped = false;

            // find unmarshaller for typed argument
            if (arg.getType() != Primitive.ANY)
            {
               QName qType = XML.getQualifiedType(arg.getType());

               bTyped = true;
               unmarshaller = (bVarArg && arg.isCollection())
                  ? unmsh.getListUnmarshaller(qType.getNamespaceURI(), qType.getLocalPart(), null)
                  : unmsh.getUnmarshaller(qType.getNamespaceURI(), qType.getLocalPart(), null);
            }

            assert unmarshaller != null || !bTyped; // ensure can unmarshall every argument

            addAccessor((bVarArg || (bTyped && arg.isCollection()))
                        ? new ObjectListAccessor(element, false, true, unmarshaller, !bTyped)
                        : new ObjectInstanceAccessor(element, false, true, unmarshaller, !bTyped));
         }

         // non-static events have an extra <_instance> element
View Full Code Here

            assertEquals(0, tmpNode.getChildNodes().getLength());
         }

         for (int k = 0, nArgCount = event.getArgumentCount(); k < nArgCount; ++k) // for each arg
         {
            Argument arg = event.getArgument(k);
            QName type = XML.getQualifiedType(
               arg.getType(), event.isVarArg() && arg.isCollection() && k == nArgCount - 1);
            int nAttrCount = 2;

            tmpNode = XMLUtil.findChildElementByName(node, arg.getName());
            assertNotNull(tmpNode);
            assertEquals(type.getPrefix() + ':' + type.getLocalPart(),
                         XMLUtil.getStringAttr(tmpNode, "type"));

            if (!arg.isRequired())
            {
               assertEquals("0", XMLUtil.getStringAttr(tmpNode, "minOccurs"));
               ++nAttrCount;
            }

            if (arg.isCollection())
            {
               assertEquals("unbounded", XMLUtil.getStringAttr(tmpNode, "maxOccurs"));
               ++nAttrCount;
            }

            assertEquals(nAttrCount, tmpNode.getAttributes().getLength());
            assertEquals(0, tmpNode.getChildNodes().getLength());
         }

         Argument result = event.getResult();
         boolean bTyped = result != null;
         QName type = XML.getQualifiedType((bTyped) ? result.getType() : Primitive.ANY);
         int nAttrCount = 1;

         element = XMLUtil.findChildElementByName(schema, sEvent + "_Response"); // response
         assertNotNull(element);

         if (bTyped && result.isCollection() && !result.isRequired())
         {
            assertEquals("true", XMLUtil.getStringAttr(element, "nillable"));
            ++nAttrCount;
         }

         assertEquals(nAttrCount, element.getAttributes().getLength());
         assertEquals(1, element.getChildNodes().getLength());
         node = element.getFirstChild();
         assertEquals("complexType", node.getNodeName());
         assertEquals(0, node.getAttributes().getLength());
         assertEquals(1, node.getChildNodes().getLength());
         node = node.getFirstChild();
         assertEquals("sequence", node.getNodeName());
         assertEquals(0, node.getAttributes().getLength());
         assertEquals(1, node.getChildNodes().getLength());
         node = node.getFirstChild();
         nAttrCount = 2;
         assertEquals("element", node.getNodeName());
         assertEquals("item", XMLUtil.getStringAttr(node, "name"));
         assertEquals(type.getPrefix() + ':' + type.getLocalPart(),
                      XMLUtil.getStringAttr(node, "type"));

         if (!bTyped || result.isCollection())
         {
            assertEquals("true", XMLUtil.getStringAttr(node, "nillable"));
            ++nAttrCount;
         }

         if (bTyped && result.isCollection())
         {
            assertEquals("0", XMLUtil.getStringAttr(node, "minOccurs"));
            assertEquals("unbounded", XMLUtil.getStringAttr(node, "maxOccurs"));
            nAttrCount += 2;
         }
View Full Code Here

      assertEquals(0, request.getAttributes().getLength());
      assertEquals(event.getArgumentCount(), request.getChildNodes().getLength());

      for (int i = 0, nArgCount = event.getArgumentCount(); i < nArgCount; ++i)
      {
         Argument arg = event.getArgument(i);
         Node param = XMLUtil.findChildElement(request, "param", "name", arg.getName());
         boolean bVarArg = event.isVarArg() && i == nArgCount - 1;
         QName type = XML.getQualifiedType(arg.getType(), bVarArg);
         int nAttrCount = 3;

         assertNotNull(param);
         assertEquals("query", XMLUtil.getStringAttr(param, "style"));
         assertEquals(type.getPrefix() + ':' + type.getLocalPart(),
                      XMLUtil.getStringAttr(param, "type"));

         if (arg.isRequired())
         {
            assertEquals("true", XMLUtil.getStringAttr(param, "required"));
            ++nAttrCount;
         }

         if (arg.isCollection())
         {
            assertEquals("true", XMLUtil.getStringAttr(param, "repeating"));
            ++nAttrCount;
         }
View Full Code Here

TOP

Related Classes of nexj.core.meta.Argument

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.