Examples of XPathQName


Examples of org.eclipse.persistence.internal.oxm.XPathQName

                name = qName;
            } else {
                name = localName;
            }

            XPathQName rootQName;
            if (namespaceURI == null || namespaceURI.length() == 0) {
                rootQName = new XPathQName(name, xmlReader.isNamespaceAware() );
            } else {
                rootQName = new XPathQName(namespaceURI, name, xmlReader.isNamespaceAware() );
            }
           
            Class primitiveWrapperClass = null;
            Descriptor xmlDescriptor = xmlContext.getDescriptor(rootQName);
                            
            //if no match on root element look for xsi:type
            if(xmlDescriptor == null){ 
              boolean isPrimitiveType = false;
                String type = null;
                if(xmlReader.isNamespaceAware()){
                    type = atts.getValue(javax.xml.XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI, Constants.SCHEMA_TYPE_ATTRIBUTE);
                }else{
                  type = atts.getValue(Constants.EMPTY_STRING, Constants.SCHEMA_TYPE_ATTRIBUTE);
                }
                if (null != type) {
                    XPathFragment typeFragment = new XPathFragment(type, xmlReader.namespaceSeparator, xmlReader.isNamespaceAware());
                    // set the prefix using a reverse key lookup by uri value on namespaceMap
                    if (xmlReader.isNamespaceAware() && null != unmarshalNamespaceResolver) {
                        typeFragment.setNamespaceURI(unmarshalNamespaceResolver.getNamespaceURI(typeFragment.getPrefix()));
                    }
                    Descriptor lookupDescriptor = xmlContext.getDescriptorByGlobalType(typeFragment);
                    if(lookupDescriptor == null) {
                      QName lookupQName = null;
                      if(typeFragment.getNamespaceURI() == null){
                        lookupQName= new QName(javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI, typeFragment.getLocalName());
                      }else{
                        lookupQName= new QName(typeFragment.getNamespaceURI(), typeFragment.getLocalName());
                      }
                        //check to see if type attribute represents simple type
                      if(null == session) {
                         session = (CoreAbstractSession) xmlContext.getSession();
                      }

                    primitiveWrapperClass = (Class)XMLConversionManager.getDefaultXMLTypes().get(lookupQName);
                    }else{         
                      //found descriptor based on type attribute
                      xmlDescriptor = lookupDescriptor;
                      session = xmlContext.getSession(xmlDescriptor);  
                    }
                }
            } else if(xmlDescriptor.hasInheritance()){
               //if descriptor has inheritance check class indicator
               session = xmlContext.getSession(xmlDescriptor);             
               UnmarshalRecord tmpUnmarshalRecord = new UnmarshalRecordImpl(null);
               tmpUnmarshalRecord.setUnmarshaller(unmarshaller);
               tmpUnmarshalRecord.setUnmarshalNamespaceResolver(unmarshalNamespaceResolver);
               tmpUnmarshalRecord.setXMLReader(this.getXMLReader());
               tmpUnmarshalRecord.setAttributes(atts);
                
                 Class classValue = xmlDescriptor.getInheritancePolicy().classFromRow(new org.eclipse.persistence.oxm.record.UnmarshalRecord(tmpUnmarshalRecord), (CoreAbstractSession) session);
                 if (classValue == null) {
                     // no xsi:type attribute - look for type indicator on the default root element
                     QName leafElementType = xmlDescriptor.getDefaultRootElementType();
                     // if we have a user-set type, try to get the class from the inheritance policy
                     if (leafElementType != null) {
                         Object indicator = xmlDescriptor.getInheritancePolicy().getClassIndicatorMapping().get(leafElementType);
                         if(indicator != null) {
                             classValue = (Class)indicator;
                         }
                     }
                 }
                 if (classValue != null) {                  
                     xmlDescriptor = (Descriptor)session.getDescriptor(classValue);
                     shouldWrap = false;
                 } else {
                     // since there is no xsi:type attribute, we'll use the descriptor
                     // that was retrieved based on the rootQName -  we need to make
                     // sure it is non-abstract
                     if (Modifier.isAbstract(xmlDescriptor.getJavaClass().getModifiers())) {
                         // need to throw an exception here
                         throw DescriptorException.missingClassIndicatorField((XMLRecord) tmpUnmarshalRecord, (org.eclipse.persistence.oxm.XMLDescriptor)xmlDescriptor.getInheritancePolicy().getDescriptor());
                     }
                 }
            } else if(xmlDescriptor.getTables().size() == 1){
              //found a descriptor based on root element and no inheritance then know we won't need to wrap in an XMLRoot
              shouldWrap = false;
            }
           
            if (null == xmlDescriptor) {
                //check for a cached object and look for descriptor by class
                Object obj = this.xmlReader.getCurrentObject(session, null);
                if (obj != null) {
                    xmlDescriptor = (Descriptor)xmlContext.getSession(obj.getClass()).getDescriptor(obj.getClass());
                }             
            }         
         
            if (null == xmlDescriptor && primitiveWrapperClass == null){
                if(!this.keepAsElementPolicy.isKeepNoneAsElement()) {
                    this.documentBuilder = new SAXDocumentBuilder();
                    documentBuilder.startDocument();
                    //start any prefixes that have already been started
                    for(String prefix:this.unmarshalNamespaceResolver.getPrefixes()) {
                        documentBuilder.startPrefixMapping(prefix, this.unmarshalNamespaceResolver.getNamespaceURI(prefix));
                    }
                    documentBuilder.startElement(namespaceURI, localName, qName, atts);
                    this.xmlReader.setContentHandler(documentBuilder);
                    return;
                }
                Class unmappedContentHandlerClass = unmarshaller.getUnmappedContentHandlerClass();
                if (null == unmappedContentHandlerClass) {
                    throw XMLMarshalException.noDescriptorWithMatchingRootElement(rootQName.toString());
                } else {
                    UnmappedContentHandler unmappedContentHandler;
                    try {
                        PrivilegedNewInstanceFromClass privilegedNewInstanceFromClass = new PrivilegedNewInstanceFromClass(unmappedContentHandlerClass);
                        unmappedContentHandler = (UnmappedContentHandler)privilegedNewInstanceFromClass.run();
View Full Code Here

Examples of org.eclipse.persistence.internal.oxm.XPathQName

                }

                String xmlRootLocalName = xr.getLocalName();
                String xmlRootUri = xr.getNamespaceURI();

                XPathQName qName = new XPathQName(xmlRootUri, xmlRootLocalName, namespaceAware);
                Descriptor xdesc = marshaller.getContext().getDescriptor(qName);
                if (xdesc != null) {
                    boolean writeTypeAttribute = xdesc.getJavaClass() != descriptor.getJavaClass();
                    if (writeTypeAttribute) {
                        writeXsiTypeAttribute(descriptor, xmlRef, isRootElement);
View Full Code Here

Examples of org.eclipse.persistence.internal.oxm.XPathQName

             // no xsi:type attribute - look for type indicator on the default root element
             QName leafElementType = xmlDescriptor.getDefaultRootElementType();

             // if we have a user-set type, try to get the class from the inheritance policy
             if (leafElementType != null) {
                  XPathQName xpathQName = new XPathQName(leafElementType, isNamespaceAware());
                 Object indicator = inheritancePolicy.getClassIndicatorMapping().get(xpathQName);
                 if(indicator != null) {
                     classValue = (Class)indicator;
                 }
             }
View Full Code Here

Examples of org.eclipse.persistence.internal.oxm.XPathQName

    }

    @Override
    public void setLeafElementType(QName type) {
        if (type != null) {
            setLeafElementType(new XPathQName(type, isNamespaceAware()));
        } else {
            setLeafElementType((XPathQName) null);
        }
    }
View Full Code Here

Examples of org.eclipse.persistence.internal.oxm.XPathQName

                name = qName;
            } else {
                name = localName;
            }

            XPathQName rootQName;
            if (namespaceURI == null || namespaceURI.length() == 0) {
                rootQName = new XPathQName(name, xmlReader.isNamespaceAware() );
            } else {
                rootQName = new XPathQName(namespaceURI, name, xmlReader.isNamespaceAware() );
            }
           
            Class primitiveWrapperClass = null;
            Descriptor xmlDescriptor = xmlContext.getDescriptor(rootQName);
                            
            //if no match on root element look for xsi:type
            if(xmlDescriptor == null){ 
              boolean isPrimitiveType = false;
                String type = null;
                if(xmlReader.isNamespaceAware()){
                    type = atts.getValue(javax.xml.XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI, Constants.SCHEMA_TYPE_ATTRIBUTE);
                }else{
                  type = atts.getValue(Constants.EMPTY_STRING, Constants.SCHEMA_TYPE_ATTRIBUTE);
                }
                if (null != type) {
                    XPathFragment typeFragment = new XPathFragment(type, xmlReader.namespaceSeparator, xmlReader.isNamespaceAware());
                    // set the prefix using a reverse key lookup by uri value on namespaceMap
                    if (xmlReader.isNamespaceAware() && null != unmarshalNamespaceResolver) {
                        typeFragment.setNamespaceURI(unmarshalNamespaceResolver.getNamespaceURI(typeFragment.getPrefix()));
                    }
                    Descriptor lookupDescriptor = xmlContext.getDescriptorByGlobalType(typeFragment);
                    if(lookupDescriptor == null) {
                      QName lookupQName = null;
                      if(typeFragment.getNamespaceURI() == null){
                        lookupQName= new QName(javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI, typeFragment.getLocalName());
                      }else{
                        lookupQName= new QName(typeFragment.getNamespaceURI(), typeFragment.getLocalName());
                      }
                        //check to see if type attribute represents simple type
                      if(null == session) {
                         session = (CoreAbstractSession) xmlContext.getSession();
                      }
                      ConversionManager conversionManager = (ConversionManager) session.getDatasourcePlatform().getConversionManager();
                        primitiveWrapperClass = conversionManager.javaType(lookupQName);                      
                    }else{         
                      //found descriptor based on type attribute
                      xmlDescriptor = lookupDescriptor;
                      session = xmlContext.getSession(xmlDescriptor);  
                    }
                }
            } else if(xmlDescriptor.hasInheritance()){
               //if descriptor has inheritance check class indicator
               session = xmlContext.getSession(xmlDescriptor);             
               UnmarshalRecord tmpUnmarshalRecord = new UnmarshalRecordImpl(null);
               tmpUnmarshalRecord.setUnmarshaller(unmarshaller);
               tmpUnmarshalRecord.setUnmarshalNamespaceResolver(unmarshalNamespaceResolver);
               tmpUnmarshalRecord.setXMLReader(this.getXMLReader());
               tmpUnmarshalRecord.setAttributes(atts);
                
                 Class classValue = xmlDescriptor.getInheritancePolicy().classFromRow(new org.eclipse.persistence.oxm.record.UnmarshalRecord(tmpUnmarshalRecord), (CoreAbstractSession) session);
                 if (classValue == null) {
                     // no xsi:type attribute - look for type indicator on the default root element
                     QName leafElementType = xmlDescriptor.getDefaultRootElementType();
                     // if we have a user-set type, try to get the class from the inheritance policy
                     if (leafElementType != null) {
                         Object indicator = xmlDescriptor.getInheritancePolicy().getClassIndicatorMapping().get(leafElementType);
                         if(indicator != null) {
                             classValue = (Class)indicator;
                         }
                     }
                 }
                 if (classValue != null) {                  
                     xmlDescriptor = (Descriptor)session.getDescriptor(classValue);
                     shouldWrap = false;
                 } else {
                     // since there is no xsi:type attribute, we'll use the descriptor
                     // that was retrieved based on the rootQName -  we need to make
                     // sure it is non-abstract
                     if (Modifier.isAbstract(xmlDescriptor.getJavaClass().getModifiers())) {
                         // need to throw an exception here
                         throw DescriptorException.missingClassIndicatorField((XMLRecord) tmpUnmarshalRecord, (org.eclipse.persistence.oxm.XMLDescriptor)xmlDescriptor.getInheritancePolicy().getDescriptor());
                     }
                 }
            } else if(null != xmlDescriptor.getTables() && xmlDescriptor.getTables().size() == 1){
              //found a descriptor based on root element and no inheritance then know we won't need to wrap in an XMLRoot
              shouldWrap = false;
            }
           
            if (null == xmlDescriptor) {
                //check for a cached object and look for descriptor by class
                Object obj = this.xmlReader.getCurrentObject(session, null);
                if (obj != null) {
                    xmlDescriptor = (Descriptor)xmlContext.getSession(obj.getClass()).getDescriptor(obj.getClass());
                }             
            }         
         
            if (null == xmlDescriptor && primitiveWrapperClass == null){
                if(!this.keepAsElementPolicy.isKeepNoneAsElement()) {
                    this.documentBuilder = new SAXDocumentBuilder();
                    documentBuilder.startDocument();
                    //start any prefixes that have already been started
                    for(String prefix:this.unmarshalNamespaceResolver.getPrefixes()) {
                        documentBuilder.startPrefixMapping(prefix, this.unmarshalNamespaceResolver.getNamespaceURI(prefix));
                    }
                    documentBuilder.startElement(namespaceURI, localName, qName, atts);
                    this.xmlReader.setContentHandler(documentBuilder);
                    return;
                }
                Class unmappedContentHandlerClass = unmarshaller.getUnmappedContentHandlerClass();
                if (null == unmappedContentHandlerClass) {
                    throw XMLMarshalException.noDescriptorWithMatchingRootElement(rootQName.toString());
                } else {
                    UnmappedContentHandler unmappedContentHandler;
                    try {
                        PrivilegedNewInstanceFromClass privilegedNewInstanceFromClass = new PrivilegedNewInstanceFromClass(unmappedContentHandlerClass);
                        unmappedContentHandler = (UnmappedContentHandler)privilegedNewInstanceFromClass.run();
View Full Code Here

Examples of org.eclipse.persistence.internal.oxm.XPathQName

                }

                String xmlRootLocalName = xr.getLocalName();
                String xmlRootUri = xr.getNamespaceURI();

                XPathQName qName = new XPathQName(xmlRootUri, xmlRootLocalName, namespaceAware);
                Descriptor xdesc = marshaller.getContext().getDescriptor(qName);
                if (xdesc != null) {
                    boolean writeTypeAttribute = xdesc.getJavaClass() != descriptor.getJavaClass();
                    if (writeTypeAttribute) {
                        writeXsiTypeAttribute(descriptor, xmlRef, isRootElement);
View Full Code Here

Examples of org.eclipse.persistence.internal.oxm.XPathQName

    }

    @Override
    public void setLeafElementType(QName type) {
        if(type != null){
            setLeafElementType(new XPathQName(type, isNamespaceAware()));
        }
    }
View Full Code Here

Examples of org.eclipse.persistence.internal.oxm.XPathQName

             // no xsi:type attribute - look for type indicator on the default root element
             QName leafElementType = xmlDescriptor.getDefaultRootElementType();

             // if we have a user-set type, try to get the class from the inheritance policy
             if (leafElementType != null) {
                  XPathQName xpathQName = new XPathQName(leafElementType, isNamespaceAware());
                 Object indicator = inheritancePolicy.getClassIndicatorMapping().get(xpathQName);
                 if(indicator != null) {
                     classValue = (Class)indicator;
                 }
             }
View Full Code Here

Examples of org.eclipse.persistence.internal.oxm.XPathQName

    }

    @Override
    public void setLeafElementType(QName type) {
        if (type != null) {
            setLeafElementType(new XPathQName(type, isNamespaceAware()));
        } else {
            setLeafElementType((XPathQName) null);
        }
    }
View Full Code Here

Examples of org.eclipse.persistence.internal.oxm.XPathQName

        return object;

    }
   
    private void setDeclaredTypeOnXMLRoot(Root xmlRoot, String elementNamespaceUri, String elementLocalName, boolean isNamespaceAware, Unmarshaller unmarshaller){
      XPathQName xpathQName = new XPathQName(elementNamespaceUri, elementLocalName, isNamespaceAware);
      Descriptor desc = unmarshaller.getContext().getDescriptor(xpathQName);
      if(desc != null){
        xmlRoot.setDeclaredType(desc.getJavaClass());
      }
    }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. 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.