Package org.jboss.ws.metadata.umdm

Examples of org.jboss.ws.metadata.umdm.OperationMetaData


      NameImpl faultCode = (NameImpl)soapFault.getFaultCodeAsName();
      if (faultCode.getURI().length() > 0)
         serContext.getNamespaceRegistry().registerQName(faultCode.toQName());

      OperationMetaData opMetaData = msgContext.getOperationMetaData();
      Class<? extends Exception> exClass = ex.getClass();
      if (opMetaData != null && opMetaData.getFaultMetaData(exClass) != null)
      {
         FaultMetaData faultMetaData = opMetaData.getFaultMetaData(exClass);
         Object faultBean = faultMetaData.toFaultBean(ex);

         Detail detail = soapFault.addDetail();
         SOAPElement detailEntry = toDetailEntry(faultBean, serContext, faultMetaData);
         detail.addChildElement(detailEntry);
View Full Code Here


      // An invocation on the service endpoint interface
      else
      {
         EndpointMetaData epMetaData = call.getEndpointMetaData();
         OperationMetaData opMetaData = epMetaData.getOperation(method);
         if (opMetaData == null)
            throw new WSException("Cannot obtain operation meta data for: " + methodName);

         call.setOperationName(opMetaData.getQName());

         try
         {
            if (opMetaData.isOneWay())
            {
               call.invokeOneWay(args);
               return null;
            }
            else
View Full Code Here

      {
         String methodname = m.getName();
         Class[] paramTypes = m.getParameterTypes();
         int len = paramTypes.length;

         OperationMetaData om = getOperationMetaData(m);
         OperationConfig opc = getOperationConfig(methodname, m.getParameterTypes());
         if (opc != null)
            om.setOneWay(opc.isOneWay);

         ParameterMetaData wrappedParameter = null;
         List<WrappedParameter> wrappedParameters = null;

         if (om.isDocumentWrapped())
         {
            QName xmlName = new QName(tmd.typeNamespace, om.getQName().getLocalPart());
            QName xmlType = xmlName;

            wrappedParameter = new ParameterMetaData(om, xmlName, xmlType, null);
            wrappedParameters = new ArrayList<WrappedParameter>(len);
            wrappedParameter.setWrappedParameters(wrappedParameters);

            om.addParameter(wrappedParameter);

            if (! om.isOneWay())
            {
               xmlType = xmlName = new QName(tmd.typeNamespace, om.getResponseName().getLocalPart());
               ParameterMetaData retMetaData = new ParameterMetaData(om, xmlName, xmlType, null);
               retMetaData.setWrappedParameters(new ArrayList<WrappedParameter>(0));
               om.setReturnParameter(retMetaData);
            }
         }

         for (int i = 0; i < len; i++)
         {
            Class paramType = paramTypes[i];
            /**
             * Test if method param extends java.rmi.Remote
             */
            if (Remote.class.isAssignableFrom(paramType))
               throw new WSException("Param Type " + paramType.getName() + " should not extend java.rmi.Remote");

            if (om.isDocumentWrapped() && !isHeaderParameter(opc, i))
            {
               QName xmlName = getXmlName(paramType, opc, i, null);
               wrappedParameters.add(new WrappedParameter(xmlName, paramType.getName(), convertToProperty(xmlName.getLocalPart()), i));
            }
            else
            {
               om.addParameter(getParameterMetaData(paramType, om, opc, i));
            }
         }

         // Handle return type
         Class returnType = m.getReturnType();
         if (void.class != returnType)
         {
            if (Remote.class.isAssignableFrom(returnType))
               throw new WSException("Return Type " + returnType.getName() + " should not extend java.rmi.Remote");

            if (om.isDocumentWrapped())
            {
               QName name = getReturnXmlName(opc, null);

               WrappedParameter wrapped = new WrappedParameter(name, returnType.getName(), convertToProperty(name.getLocalPart()), -1);
               ParameterMetaData retMetaData = om.getReturnParameter();
               retMetaData.getWrappedParameters().add(wrapped);
            }
            else
            {
               om.setReturnParameter(getParameterMetaDataForReturnType(returnType, om, opc));
            }
         }

         if (om.isDocumentWrapped())
         {
            ParameterWrapping.generateWrapper(wrappedParameter, false);
            if (! om.isOneWay())
               ParameterWrapping.generateWrapper(om.getReturnParameter(), false);
         }

         Class[] exceptionTypes = m.getExceptionTypes();
         boolean remoteExceptionFound = false;
         if (exceptionTypes != null)
         {
            for (int i = 0; i < exceptionTypes.length; i++)
            {
               if (RemoteException.class.isAssignableFrom(exceptionTypes[i]))
                  remoteExceptionFound = true;
               else
                  om.addFault(getFaultMetaData(exceptionTypes[i], om));
            }
         }

         if (! remoteExceptionFound)
            throw new WSException(m.getName() + " does not throw RemoteException.");

         om.assertDocumentBare();
         tmd.addOperation(om);
      }
   }
View Full Code Here

         count = operationNameCount.get(methodName);

      operationNameCount.put(methodName, ++count);

      String localName = (count > 1) ? methodName + count : methodName;
      OperationMetaData om = new OperationMetaData(tmd, new QName(targetNamespace, localName), methodName);
      om.setSOAPAction("");// FIXME:Default SOAP Action
      return om;
   }
View Full Code Here

      if (msgContext == null)
         throw new WSException("MessageContext not available");

      SerializationContext serContext = msgContext.getSerializationContext();
      ParameterMetaData pmd = container.getParamMetaData();
      OperationMetaData opMetaData = pmd.getOperationMetaData();
      serContext.setProperty(ParameterMetaData.class.getName(), pmd);
      serContext.setJavaType(javaType);
      List<Class> registeredTypes = opMetaData.getEndpointMetaData().getRegisteredTypes();
      serContext.setProperty(SerializationContextJAXWS.JAXB_CONTEXT_TYPES, registeredTypes.toArray(new Class[0]));

      try
      {
         // Get the deserializer from the type mapping
View Full Code Here

         soapAction = an.action();
      }
      if(opname == null || opname.length() == 0)
         opname = m.getName();

      OperationMetaData om = new OperationMetaData(em, new QName(targetNamespace,opname),
            m.getName());
      om.setSOAPAction(soapAction);

      Style style = Style.RPC;

      SOAPBinding sb = (SOAPBinding)endpoint.getAnnotation(SOAPBinding.class);
      if(sb != null)
      {
         String wsdlStyle = sb.style().name();
         if(wsdlStyle != null && wsdlStyle.equalsIgnoreCase("DOCUMENT"))
            style = Style.DOCUMENT;
      }
      em.setStyle(style);

      Class[] paramTypes = m.getParameterTypes();
      int lenparam = paramTypes != null ? paramTypes.length : 0;

      for (int j = 0; j < lenparam; j++)
      {
         Class paramType = paramTypes[j];
         if(Remote.class.isAssignableFrom(paramType))
            throw new WSException("OpName:" + opname + " param:" + paramType.getName() +
                  " should not extend Remote" );
         //Get the ParameterMetaData for the individual parameters
         om.addParameter(getParameterMetaData(paramType, om, j + 1));
      }


      //Oneway annotation
      Oneway ow = m.getAnnotation(Oneway.class);
      if(ow != null)
         om.setOneWay(true);

      Class ret = m.getReturnType();
      ParameterMetaData retPmd = getParameterMetaDataForReturnType(ret, om, 1);
      if(retPmd != null )
         om.setReturnParameter(retPmd);

      //Take care of exceptions also
      Class[] exarr = m.getExceptionTypes();
      if(exarr != null)
      {
         int len = Array.getLength(exarr);
         int i = 0;
         fori = 0 ; i < len ; i++)
         {
            Class exClass = exarr[i];
            if(!RemoteException.class.isAssignableFrom(exClass))
               om.addFault(getFaultMetaData(exClass,om));
         }
      }
      return om;
   }
View Full Code Here

   {
      if (opName == null)
         throw new IllegalArgumentException("Cannot get OperationMetaData for null");

      EndpointMetaData epMetaData = getEndpointMetaData();
      OperationMetaData opMetaData = epMetaData.getOperation(opName);
      if (opMetaData == null && epMetaData.getServiceMetaData().getWsdlDefinitions() == null)
      {
         opMetaData = new OperationMetaData(epMetaData, opName, opName.getLocalPart());
         epMetaData.addOperation(opMetaData);
      }

      if (opMetaData == null)
         throw new WSException("Cannot obtain operation meta data for: " + opName);
View Full Code Here

   protected Object invoke(QName opName, Object[] inputParams, boolean forceOneway) throws Exception
   {
      if (opName.equals(operationName) == false)
         setOperationName(opName);

      OperationMetaData opMetaData = getOperationMetaData();
      boolean oneway = forceOneway || opMetaData.isOneWay();

      // Associate a message context with the current thread
      CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
      msgContext.setOperationMetaData(opMetaData);
View Full Code Here

   private Object syncOutputParams(Object[] inParams, EndpointInvocation epInv) throws SOAPException
   {
      Object retValue = null;

      // Assign the return value, if we have a return param
      OperationMetaData opMetaData = getOperationMetaData();
      ParameterMetaData retMetaData = opMetaData.getReturnParameter();
      if (retMetaData != null)
      {
         retValue = epInv.getReturnValue();
         if (opMetaData.isDocumentWrapped() && retMetaData.isMessageType() == false)
            retValue = ParameterWrapping.unwrapResponseParameters(retMetaData, retValue, inParams);
      }

      // Set the holder values for INOUT parameters
      for (ParameterMetaData paramMetaData : opMetaData.getParameters())
      {
         ParameterMode paramMode = paramMetaData.getMode();

         int index = paramMetaData.getIndex();
         if (index == -1 || paramMode == ParameterMode.INOUT || paramMode == ParameterMode.OUT)
View Full Code Here

      // An invocation on the service endpoint interface
      else
      {
         EndpointMetaData epMetaData = client.getEndpointMetaData();
         OperationMetaData opMetaData = epMetaData.getOperation(method);
         if (opMetaData == null)
            throw new WSException("Cannot obtain operation meta data for: " + methodName);

         QName opName = opMetaData.getQName();

         if (log.isTraceEnabled())
            log.trace("Invoke method: " + method + opMetaData);

         try
View Full Code Here

TOP

Related Classes of org.jboss.ws.metadata.umdm.OperationMetaData

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.