Package org.apache.ws.jaxme.js

Examples of org.apache.ws.jaxme.js.JavaMethod


    return "__ser_" + pChild.getXMLFieldName();
  }

  private JavaMethod getXMLSerializersInitMethod(GroupSG pController, JavaSource pSource) throws SAXException {
    ParticleSG[] myParticles = pController.getParticles();
    JavaMethod jm = null;
    DirectAccessible pFactory = null;
    for (int i = 0;  i < myParticles.length;  i++) {
      ParticleSG particle = myParticles[i];
      if (!particle.isElement()) {
        continue;
      }
      ObjectSG child = particle.getObjectSG();
      if (!child.getTypeSG().isComplex()) {
        continue;
      }
      if (jm == null) {
        jm = pSource.newJavaMethod("init", JavaQNameImpl.VOID, JavaSource.PUBLIC);
        pFactory = jm.addParam(JAXBContextImpl.class, "pFactory");
        jm.addLine("super.init(", pFactory, ");");
        jm.addThrows(JAXBException.class);
      }
      String serializerName = getXMLSerializersFieldName(particle.getPropertySG());
      Context myClassContext = child.getTypeSG().getComplexTypeSG().getClassContext();
      JavaQName serializerClass = myClassContext.getXMLSerializerName();
      JavaField jf = pSource.newJavaField(serializerName, serializerClass, JavaSource.PRIVATE);
      JavaQName elementInterface = myClassContext.getXMLInterfaceName();
      if (child.getTypeSG().isGlobalClass()) {
        jm.addLine(jf, " = (", serializerClass, ") ", pFactory, ".getJMXmlSerializer(", elementInterface, ".class);");
      } else {
        jm.addLine(jf, " = new ", serializerClass, "();");
      }
      jm.addLine(jf, ".init(pFactory);");
    }
    return jm;
  }
View Full Code Here


  private JavaMethod getXMLSerializersMarshalChildsMethod(GroupSG pController, JavaSource pSource) throws SAXException {
    final String mName = "getXMLSerializersMarshalChildsMethod";
    log.finest(mName, "->", pSource.getQName());
    ParticleSG[] myParticles = pController.getParticles();
    JavaMethod jm = null;
    LocalJavaField pElement = null;
    XMLSerializersMarshalChildsSGlet sgLet = null;
    for (int i = 0;  i < myParticles.length;  i++) {
      ParticleSG particle = myParticles[i];
      if (!particle.isElement()) {
        // TODO: Implement handling for wildcards and subgroups
        throw new IllegalStateException("Wildcards and subgroups are not implemented.");
      }
      if (jm == null) {
        jm = pSource.newJavaMethod("marshalChilds", JavaQNameImpl.VOID, JavaSource.PROTECTED);
        DirectAccessible pData = jm.addParam(JavaQNameImpl.getInstance(JMXmlSerializer.Data.class), "pData");
        sgLet = new XMLSerializersMarshalChildsSGlet(pData);
        JavaQName elementInterface = pController.getClassContext().getXMLInterfaceName();
        DirectAccessible pObject = jm.addParam(Object.class, "pObject");
        pElement = jm.newJavaField(elementInterface);
        pElement.addLine("(", elementInterface, ") ", pObject);
        jm.addThrows(SAXException.class);
      }

      sgLet.setChild(particle);
      sgLet.setFieldName(getXMLSerializersFieldName(particle.getPropertySG()));
      particle.getPropertySG().forAllNonNullValues(jm, pElement, sgLet);
View Full Code Here

    return "getHandlerFor" + Character.toUpperCase(f.charAt(0)) + f.substring(1);
  }
   

  private JavaMethod getXMLHandlersInitMethod(GroupSG pController, JavaSource pSource) throws SAXException {
    JavaMethod jm = null;
    DirectAccessible pData = null;
    ParticleSG[] myParticles = pController.getParticles();
    for (int i = 0;  i < myParticles.length;  i++) {
      ParticleSG particle = myParticles[i];
      if (particle.isElement()) {
        ObjectSG objectSG = particle.getObjectSG();
        TypeSG typeSG = objectSG.getTypeSG();
        if (typeSG.isComplex()) {
          if (jm == null) {
            jm = pSource.newJavaMethod("init", JavaQNameImpl.VOID, JavaSource.PUBLIC);
            pData = jm.addParam(JMHandler.Data.class, "pData");
            jm.addThrows(JAXBException.class);
            jm.addLine("super.init(", pData, ");");
          }

          String f = particle.getPropertySG().getXMLFieldName();
          String handlerFieldName = "__handler_" + f;
          String handlerMethodName = getXMLHandlersMethodName(particle.getPropertySG());

          JavaField jf = pSource.newJavaField(handlerFieldName, JMHandler.class, JavaSource.PRIVATE);
          JavaMethod jm2 = pSource.newJavaMethod(handlerMethodName, JMHandler.class, "protected");
          jm2.addThrows(SAXException.class);
          jm2.addIf(handlerFieldName, " == null");
         
          ComplexTypeSG childSG = typeSG.getComplexTypeSG();
          JavaQName interfaceName = childSG.getClassContext().getXMLInterfaceName();
          JavaQName handlerClassName = childSG.getClassContext().getXMLHandlerName();
          jm2.addTry();
          if (typeSG.isGlobalClass()) {
            jm2.addLine(handlerFieldName, " = getData().getFactory().getJMHandler(",
                        interfaceName, ".class);");
          } else {
            jm2.addLine(jf, " = new ", handlerClassName, "();");
          }
          jm2.addLine(jf, ".init(getData());");
          DirectAccessible e = jm2.addCatch(JAXBException.class);
          jm2.addThrowNew(SAXException.class, e);
          jm2.addEndTry();
          jm2.addEndIf();
          jm2.addLine("return ", jf, ";");

          jm.addIf(jf, " != null");
          jm.addLine(jf, ".init(", pData, ");");
          jm.addEndIf();
        }
View Full Code Here

      return;
    }

    JavaQName STRING_TYPE = JavaQNameImpl.getInstance(String.class);
    JavaQName ATTRIBUTES_TYPE = JavaQNameImpl.getInstance(Attributes.class);
    JavaMethod jm = pSource.getMethod("startElement", new JavaQName[]{STRING_TYPE, STRING_TYPE, STRING_TYPE,
                                                                      ATTRIBUTES_TYPE});
    if (jm == null) {
      throw new IllegalStateException("No such method: 'startElement' in '" + pSource.getQName() + "'.");
    }
    PlaceHolder placeHolder = jm.getPlaceHolder("GroupSG");
    if (placeHolder == null) {
      throw new IllegalStateException("No such placeholder: 'GroupSG' in method 'startElement'");
    }
    placeHolder.remove();
    Parameter[] parameters = jm.getParams();
    Parameter pNamespaceURI = parameters[0];
    Parameter pLocalName = parameters[1];
    Parameter pQName = parameters[2];
    Parameter pAttr = parameters[3];

    jm.addCase("1");
    Set namespaces = new HashSet();
    for (int i = 0;  i < myParticles.length;  i++) {
      ParticleSG child = myParticles[i];
      // Did we have the same namespace before? If so, skip
      String uri = child.getObjectSG().getName().getNamespaceURI();
      if (namespaces.contains(uri)) {
        continue;
      }

      if ("".equals(uri)) {
        jm.addIf(namespaces.isEmpty(), pNamespaceURI, " == null  ||  ", pNamespaceURI, ".length() == 0");
      } else {
        jm.addIf(namespaces.isEmpty(), JavaSource.getQuoted(uri), ".equals(", pNamespaceURI, ")");
      }
      namespaces.add(uri);

      // Now handle all elements with the namespace uri
      for (int j = i;  j < myParticles.length;  j++) {
        child = myParticles[j];
        XsQName name = child.getObjectSG().getName();
        if (!name.getNamespaceURI().equals(uri)) {
          continue;
        }
        jm.addIf(j == i, JavaSource.getQuoted(name.getLocalName()), ".equals(", pLocalName, ")");

        List validStates = new ArrayList();
        if (child.isMultiple()) {
          validStates.add(new Integer(j+3));
        }
        if (pController.isChoice()) {
          validStates.add(new Integer(0));
        } else if (pController.isSequence()) {
          boolean stateZeroIsValid = true;
          for (int k = j-1;  k >= 0;  k--) {
            ParticleSG kChild = myParticles[k];
            validStates.add(new Integer(k+3));
            if (kChild.getMinOccurs() > 0) {
              stateZeroIsValid = false;
              break;
            }
          }
          if (stateZeroIsValid) {
            validStates.add(new Integer(0));
          }
        } else if (pController.isAll()) {
          validStates.add(new Integer(0));
          for (int k = 0;  k < myParticles.length;  k++) {
            validStates.add(new Integer(k));
          }
        } else {
          throw new IllegalStateException("Don't know how to handle type which is neither sequence nor choice, or all.");
        }
        Collections.sort(validStates);
        jm.addSwitch(pStateVar);
        for (int k = 0;  k < validStates.size();  k++) {
          jm.addCase(validStates.get(k));
        }

        jm.addLine(pStateVar, " = " + (j+3) + ";");
        if (child.getObjectSG().getTypeSG().isComplex()) {
          String handlerMethodName = getXMLHandlersMethodName(child.getPropertySG());
          jm.addLine(pHandlerVar, " = ", handlerMethodName, "();");
        } else {
          jm.addLine(pHandlerVar, " = getData().getAtomicHandler();");
        }
        jm.addLine(pHandlerVar, ".startDocument();");
        jm.addLine(pHandlerVar, ".startElement(pNamespaceURI, pLocalName, pQName, pAttr);");

        jm.addBreak();
        jm.addDefault();
        jm.addLine("validationEvent(", ValidationEvent.class, ".WARNING, ",
                   JavaSource.getQuoted("The element "), " + ", pQName, " + ",
                   JavaSource.getQuoted(" was unexpected at this place."),
                   ", ", ValidationEvents.class,
                   ".EVENT_UNEXPECTED_CHILD_STATE);");
        jm.addBreak();
        jm.addEndSwitch();
      }

      jm.addEndIf();
    }
    jm.addEndIf();
    jm.addBreak();

    jm.addDefault();
    jm.addIf(pHandlerVar, " == null");
    jm.addLine("super.startElement(", pNamespaceURI, ", ", pLocalName, ", ", pQName, ", ", pAttr, ");");
    jm.addElse();
    jm.addLine(pHandlerVar, ".startElement(", pNamespaceURI, ", ", pLocalName, ", ", pQName, ", ", pAttr, ");");
    jm.addEndIf();
  }
View Full Code Here

    ParticleSG[] myParticles = pController.getParticles();
    if (myParticles.length == 0) {
      return null;
    }

    JavaMethod jm = pSource.newJavaMethod("endElement", JavaQNameImpl.VOID, JavaSource.PUBLIC);
    DirectAccessible pNamespaceURI = jm.addParam(String.class, "pNamespaceURI");
    DirectAccessible pLocalName = jm.addParam(String.class, "pLocalName");
    DirectAccessible pQName = jm.addParam(String.class, "pQName");
    jm.addThrows(SAXException.class);

    jm.addIf(pHandlerVar, " == null");
    jm.addIf(pLevelVar, " != 1");
    jm.addLine("super.endElement(", pNamespaceURI, ", ", pLocalName, ", ", pQName, ");");
    jm.addEndIf();
    jm.addElse();
    jm.addLine(pHandlerVar, ".endElement(", pNamespaceURI, ", ", pLocalName, ", ", pQName, ");");
    jm.addEndIf();

    jm.addSwitch("--", pLevelVar);
    jm.addCase("0");
    jm.addBreak();
    jm.addCase("1");
    JavaQName elementInterface = pController.getClassContext().getXMLInterfaceName();
    LocalJavaField element = jm.newJavaField(elementInterface);
    element.addLine("(", elementInterface, ") getResult()");
    jm.addSwitch(pStateVar);
    for (int i = 0;  i < myParticles.length;  i++) {
      ParticleSG child = myParticles[i];
      ObjectSG osg = child.getObjectSG();
      TypeSG childType = osg.getTypeSG();
      jm.addCase(Integer.toString(3+i));
      jm.addIf(pHandlerVar, " != null");
      jm.addLine(pHandlerVar, ".endDocument();");
      jm.addEndIf();
      Object v;
      JavaQName type;
      if (childType.isComplex()) {
        type = childType.getComplexTypeSG().getClassContext().getXMLInterfaceName();
        v = new Object[]{pHandlerVar, ".getResult()"};
      } else {
        type = null;
        v = new Object[]{"(", String.class, ") ", pHandlerVar, ".getResult()"};
        Object castedValue = childType.getSimpleTypeSG().getCastFromString(jm, v, "getData()");
        if (v == castedValue) {
          v = new Object[]{pHandlerVar, ".getResult()"};
          type = JavaQNameImpl.getInstance(String.class);
        } else {
          v = castedValue;
          type = null;
        }
      }
      child.getPropertySG().addValue(jm, element, v, type);
      jm.addBreak();
    }
    jm.addDefault();
    jm.addThrowNew(IllegalStateException.class, JavaSource.getQuoted("Illegal state: "), " + ",  pStateVar);
    jm.addEndSwitch();
    jm.addEndSwitch();

    return jm;
  }
View Full Code Here

  }

  public JavaMethod getXMLHandlersCharactersMethod(GroupSG pController, JavaSource pSource,
                                                    DirectAccessible pHandlerVar)
      throws SAXException {
    JavaMethod jm = pSource.newJavaMethod("characters", JavaQNameImpl.VOID, JavaSource.PUBLIC);
    DirectAccessible pChars = jm.addParam(char[].class, "pChars");
    DirectAccessible pOffset = jm.addParam(int.class, "pOffset");
    DirectAccessible pLen = jm.addParam(int.class, "pLen");
    jm.addThrows(SAXException.class);
    jm.addIf(pHandlerVar, " == null");
    jm.addLine("super.characters(", pChars,", ", pOffset, ", ", pLen, ");");
    jm.addElse();
    jm.addLine(pHandlerVar, ".characters(", pChars, ", ", pOffset, ", ", pLen, ");");
    jm.addEndIf();
    return jm;
  }
View Full Code Here

    }
  }

  public JavaMethod getXMLGetMethod(TypeSG pController, JavaSource pSource,
                                     String pFieldName, String pMethodName) throws SAXException {
    JavaMethod jm = pSource.newJavaMethod(pMethodName, pController.getRuntimeType(), JavaSource.PUBLIC);
    if (!pSource.isInterface()) {
      jm.addLine("return " + pFieldName + ";");
    }
    return jm;
  }
View Full Code Here

  public JavaMethod getXMLSetMethod(TypeSG pController, JavaSource pSource,
                                     String pFieldName, String pMethodName) throws SAXException {
    if (pController.isComplex()) {
      String pName = "p" + Character.toUpperCase(pFieldName.charAt(0)) + pFieldName.substring(1);
      JavaMethod jm = pSource.newJavaMethod(pMethodName, JavaQNameImpl.VOID, JavaSource.PUBLIC);
      DirectAccessible param = jm.addParam(pController.getRuntimeType(), pName);
      if (!pSource.isInterface()) {
        jm.addLine(pFieldName, " = ", param, ";");
        JavaQName checkQName = pController.getRuntimeType();
        boolean isPrimitive = "".equals(checkQName.getPackageName());
        if (isPrimitive) {
          String checkFieldName = "has" + Character.toUpperCase(pFieldName.charAt(0)) + pFieldName.substring(1);
          jm.addLine(checkFieldName, " = true;");
        }
      }
      return jm;
    } else {
      return pController.getSimpleTypeSG().getXMLSetMethod(pSource, pFieldName, pMethodName);
View Full Code Here

    }
  }

  public JavaMethod getXMLIsSetMethod(TypeSG pController, JavaSource pSource,
    String pFieldName, String pMethodName) throws SAXException {
    JavaMethod jm = pSource.newJavaMethod(pMethodName, BooleanSG.BOOLEAN_TYPE, JavaSource.PUBLIC);
    if (!pSource.isInterface()) {
      JavaQName checkQName = pController.getRuntimeType();
      boolean isPrimitive = "".equals(checkQName.getPackageName());
      if (isPrimitive) {
        String checkFieldName = "has" + Character.toUpperCase(pFieldName.charAt(0)) + pFieldName.substring(1);
        pSource.newJavaField(checkFieldName, BooleanSG.BOOLEAN_TYPE);
        jm.addLine("return " + checkFieldName + ";");
      } else {
        jm.addLine("return (" + pFieldName + " != null);");
      }
    }
    return jm;
  }
View Full Code Here

    jcon.addThrows(JAXBException.class);
    jcon.addLine(jf, " = (", JAXBContextImpl.class, ") ",
                 JAXBContext.class, ".newInstance(",
                 JavaSource.getQuoted(pPackageName), ");");

    JavaMethod newInstanceMethod = js.newJavaMethod("newInstance", Object.class, "public");
    newInstanceMethod.addThrows(JAXBException.class);
    Parameter pElementInterface = newInstanceMethod.addParam(Class.class, "pElementInterface");
    newInstanceMethod.addLine("return ", jf, ".getElement(", pElementInterface, ");");

    {
      JavaMethod getPropertyMethod = js.newJavaMethod("getProperty", Object.class, "public");
      Parameter pName = getPropertyMethod.addParam(String.class, "pName");
      getPropertyMethod.addIf(properties, " == null");
      getPropertyMethod.addLine("return null;");
      getPropertyMethod.addEndIf();
      getPropertyMethod.addLine("return ", properties, ".get(", pName, ");");
    }

    {
      JavaMethod setPropertyMethod = js.newJavaMethod("setProperty", void.class, "public");
      Parameter pName = setPropertyMethod.addParam(String.class, "pName");
      Parameter pValue = setPropertyMethod.addParam(Object.class, "pValue");
      setPropertyMethod.addIf(properties, " == null");
      setPropertyMethod.addLine(properties, " = new ", HashMap.class, "();");
      setPropertyMethod.addEndIf();
      setPropertyMethod.addLine(properties, ".put(", pName, ", ", pValue, ");");
    }

    for (Iterator iter = pContextList.iterator();  iter.hasNext()) {
      Object o = iter.next();
      if (!(o instanceof ObjectSG)) {
        continue;
      }
      ObjectSG objectSG = (ObjectSG) o;
      TypeSG typeSG = objectSG.getTypeSG();
      if (!typeSG.isComplex()) {
        continue;
      }
      ComplexTypeSG complexTypeSG = typeSG.getComplexTypeSG();

      JavaQName resultName = complexTypeSG.getClassContext().getXMLInterfaceName();
      String className = resultName.getClassName();
      String methodName = "create" + Character.toUpperCase(className.charAt(0)) + className.substring(1);
      JavaMethod createMethod = js.newJavaMethod(methodName, resultName, "public");
      createMethod.addThrows(JAXBException.class);
      createMethod.addLine("return (", resultName, ") newInstance(", resultName, ".class);");
    }
   
    return js;
  }
View Full Code Here

TOP

Related Classes of org.apache.ws.jaxme.js.JavaMethod

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.