Package org.apache.ws.jaxme.js

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


  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 (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);
      }

      if (!particle.isElement()) {
        // TODO: Implement handling for wildcards and subgroups
        //throw new IllegalStateException("Wildcards and subgroups are not implemented.");
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 handlerClassName = childSG.getClassContext().getXMLHandlerName();
          jm2.addTry();
          if (typeSG.isGlobalClass()) {
            JavaQName interfaceName;
            if (objectSG.isGlobal()) {
                interfaceName = objectSG.getClassContext().getXMLInterfaceName();
            } else {
              interfaceName = childSG.getClassContext().getXMLInterfaceName();
            }
            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];
          if (child.isGroup()) {
              // TODO: Process group case properly
          } else if (child.isWildcard()) {
              throw new IllegalStateException("Wildcards aren't implemented yet.");
          } else if (child.isElement()) {
              namespaces.add(child.getObjectSG().getName().getNamespaceURI());
          } else {
              throw new IllegalStateException("Unknown particle type");
          }
      }

      boolean firstNamespace = true;
      for (Iterator iter = namespaces.iterator();  iter.hasNext()) {
          String uri = (String) iter.next();
          if ("".equals(uri)) {
              jm.addIf(firstNamespace, pNamespaceURI, " == null  ||  ", pNamespaceURI, ".length() == 0");
          } else {
              jm.addIf(firstNamespace, JavaSource.getQuoted(uri), ".equals(", pNamespaceURI, ")");
          }
          firstNamespace = false;

          extendXMLHandlersStartElementMethodAddNamespace(pController, pHandlerVar, pStateVar,
                                                        jm, uri, pNamespaceURI,
                                                          pQName, pLocalName, pAttr,
                                                          myParticles);
      }
      if (!firstNamespace) {
          jm.addElse();
      }
      jm.addLine("super.startElement(", pNamespaceURI, ", ", pLocalName, ", ", pQName, ", ", pAttr, ");");
      if (!firstNamespace) {
          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];
      // TODO: process group case properly.
      if (myParticles[i].isGroup()) continue;
      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

      }
    }
    else {
      runtimeType = pController.getRuntimeType();
    }
    JavaMethod jm = pSource.newJavaMethod(pMethodName, runtimeType, 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);
      JavaQName runtimeType;
        if (pFieldName.equals("value") && pController.getComplexTypeSG().hasSimpleContent()) {
          SimpleContentSG obj = pController.getComplexTypeSG().getSimpleContentSG();
          runtimeType = obj.getContentTypeSG().getRuntimeType();
          if (pController.isRestriction()) {
            if (pController.getRestrictedType().isExtension()) {
              runtimeType = pController.getRestrictedType().getExtendedType().getRuntimeType();
            }
          }
        }
        else {
          runtimeType = pController.getRuntimeType();
        }
      DirectAccessible param = jm.addParam(runtimeType, pName);
      if (!pSource.isInterface()) {
        jm.addLine(pFieldName, " = ", param, ";");
      }
      return jm;
    } else {
      return pController.getSimpleTypeSG().getXMLSetMethod(pSource, pFieldName, pMethodName);
    }
View Full Code Here

   * The implementation of this method is temporarily experimental.
   * isSet and unset methods will be implemented by a flag and corresponding default value if it exist.
   */
  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

    return pParamNum;
  }

  protected JavaMethod getPMClassInsertMethod(TypeSG pController, JavaSource pSource, CustomTableData pData)
      throws SAXException {
    JavaMethod jm = pSource.newJavaMethod("insert", JavaQNameImpl.VOID, JavaSource.PUBLIC);
    Parameter pElement = jm.addParam(Element.class, "pElement");
    jm.addThrows(PMException.class);
    Table table = pData.getTable();

    String q = table.getSchema().getSQLFactory().newSQLGenerator().getQuery(table.getInsertStatement());
    LocalJavaField query = jm.newJavaField(String.class);
    query.setFinal(true);
    query.addLine(JavaSource.getQuoted(q));

    JavaQName qName = pController.getComplexTypeSG().getClassContext().getXMLInterfaceName();
    LocalJavaField elem = jm.newJavaField(qName);
    elem.addLine("(", qName, ") ", pElement);

    LocalJavaField connection = jm.newJavaField(Connection.class);
    connection.addLine("null");
    jm.addTry();
    jm.addLine(connection, " = getConnection();");
    LocalJavaField stmt = jm.newJavaField(PreparedStatement.class);
    stmt.addLine(connection, ".prepareStatement(", query, ")");
    jm.addTry();
    getPreparedStatementParameters(jm, stmt, elem, table.getColumns(), 0);
    jm.addLine(stmt, ".executeUpdate();");
    getFinally(jm, stmt, null, null);
    getFinally(jm, connection, new Object[]{JavaSource.getQuoted("Failed to execute query "),
                                            " + ", query}, null);
    return jm;
  }
View Full Code Here

    return jm;
  }

  protected JavaMethod getPMClassUpdateMethod(TypeSG pController, JavaSource pSource, CustomTableData pData)
      throws SAXException {
    JavaMethod jm = pSource.newJavaMethod("update", JavaQNameImpl.VOID, JavaSource.PUBLIC);
    Parameter pElement = jm.addParam(Element.class, "pElement");
    jm.addThrows(PMException.class);
    Table table = pData.getTable();

    String q = table.getSchema().getSQLFactory().newSQLGenerator().getQuery(table.getUpdateStatement());
    LocalJavaField query = jm.newJavaField(String.class);
    query.setFinal(true);
    query.addLine(JavaSource.getQuoted(q));

    JavaQName qName = pController.getComplexTypeSG().getClassContext().getXMLInterfaceName();
    LocalJavaField elem = jm.newJavaField(qName);
    elem.addLine("(", qName, ") ", pElement);

    LocalJavaField connection = jm.newJavaField(Connection.class);
    connection.addLine("null");
    jm.addTry();
    jm.addLine(connection, " = getConnection();");

    LocalJavaField stmt = jm.newJavaField(PreparedStatement.class);
    stmt.addLine(connection, ".prepareStatement(", query, ")");
    jm.addTry();

    List nonKeyColumns = new ArrayList();
    for (Iterator iter = table.getColumns();  iter.hasNext()) {
      Column col = (Column) iter.next();
      if (!col.isPrimaryKeyPart()) {
        nonKeyColumns.add(col);
      }
    }
    int i = 0;
    i = getPreparedStatementParameters(jm, stmt, elem, nonKeyColumns.iterator(), i);
    getPreparedStatementParameters(jm, stmt, elem, table.getPrimaryKey().getColumns(), i);
    jm.addLine(stmt, ".executeUpdate();");

    getFinally(jm, stmt, null, null);
    getFinally(jm, connection, new Object[]{JavaSource.getQuoted("Failed to execute query "),
                                            " + ", query}, null);
    return jm;
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.