Package org.exolab.castor.xml

Examples of org.exolab.castor.xml.XMLClassDescriptor


        if (_forceIntrospection && (!Types.isConstructable(cls))) {
            throw new MappingException("mapping.classNotConstructable", cls.getName());
        }

        XMLClassDescriptor xmlClass;
        FieldDescriptor[] fields;
        ClassMapping classMap;
        FieldMapping fieldMap;

        boolean introspected = false;
        try {
            if (_forceIntrospection) {
                xmlClass = _internalContext.getIntrospector().generateClassDescriptor(cls);
                introspected = true;
            } else {
                xmlClass = (XMLClassDescriptor) _internalContext.getXMLClassDescriptorResolver().resolve(cls);
                introspected = _internalContext.getIntrospector().introspected(xmlClass);
            }
        } catch (Exception except) {
            throw new MappingException(except);
        }
        classMap = new ClassMapping();
        classMap.setName(cls.getName());
        classMap.setDescription("Default mapping for class " + cls.getName());

        // -- prevent default access from showing up in the mapping
        classMap.setAccess(null);

        // -- map-to
        MapTo mapTo = new MapTo();
        mapTo.setXml(xmlClass.getXMLName());
        mapTo.setNsUri(xmlClass.getNameSpaceURI());
        mapTo.setNsPrefix(xmlClass.getNameSpacePrefix());
        classMap.setMapTo(mapTo);

        // -- add mapping to hashtable before processing
        // -- fields so we can do recursive processing
        _mappings.put(cls, classMap);

        fields = xmlClass.getFields();
        for (int i = 0; i < fields.length; ++i) {
            FieldDescriptor fdesc = fields[i];

            String fieldName = fdesc.getFieldName();
View Full Code Here


            }
        } catch (ClassNotFoundException cnfe) {
            //-- do nothing...handled below
        }

        XMLClassDescriptor listDescriptor = null;
        if (descriptorClass != null) {
            try {
                listDescriptor = (XMLClassDescriptor) descriptorClass.newInstance();
            } catch (InstantiationException ie) {
                //-- just ignore
View Full Code Here

            throw new IllegalStateException(message);
        }
        Class clazz = ResolveHelpers.loadClass(classLoader, className);
        if (clazz != null) {
            try {
                XMLClassDescriptor descriptor = introspector.generateClassDescriptor(clazz);
                if (descriptor != null) {
                    if (LOG.isDebugEnabled()) {
                        LOG.debug("Found descriptor: " + descriptor);
                    }
                    results.put(clazz.getName(), descriptor);
View Full Code Here

        if (mappingLoader == null) {
            LOG.debug("No mapping loader specified");
            return results;
        }
       
        XMLClassDescriptor descriptor = (XMLClassDescriptor) mappingLoader.getDescriptor(className);
        if (descriptor != null) {
            if (LOG.isDebugEnabled()) {
                LOG.debug("Found descriptor: " + descriptor);
            }
            results.put(className, descriptor);
View Full Code Here

            String message = "Class name to resolve must not be null or empty!";
            LOG.warn(message);
            throw new IllegalArgumentException(message);
        }
       
        XMLClassDescriptor descriptor = this.getDescriptor(resolverResults, className);
        return descriptor;
    } //-- resolve
View Full Code Here

    private XMLClassDescriptor getDescriptor(final ResolverStrategy.ResolverResults resolverResults,
            final String className) throws ResolverException {
       
        String packageName = ResolveHelpers.getPackageName(className);

        XMLClassDescriptor descriptor = resolverResults.getDescriptor(className);
        if (descriptor != null) {
            return descriptor;
        }
       
        resolverResults.addAllDescriptors(new ByMappingLoader().resolve(className, _properties));
View Full Code Here

                MappingUnmarshaller unmarshaller = new MappingUnmarshaller();
                // TODO: Joachim 2007-09-07 the InternalContext should be set into the unmarshaller!
                MappingLoader mappingLoader = unmarshaller.getMappingLoader(mapping, BindingType.XML);
                Iterator descriptors = mappingLoader.descriptorIterator();
                while (descriptors.hasNext()) {
                    XMLClassDescriptor descriptor = (XMLClassDescriptor) descriptors.next();
                    if (LOG.isDebugEnabled()) {
                        LOG.debug("Found descriptor: " + descriptor);
                    }
                    results.put(descriptor.getJavaClass().getName(), descriptor);
                }
            }
        } catch (MappingException e) {
            if (LOG.isDebugEnabled()) {
                LOG.debug("Ignored exception: " + e + " while loading mapping for package: "
View Full Code Here

                      }
                }

                //handle container
                if ( desc.isContainer() ) {
                    XMLClassDescriptor xcd = (XMLClassDescriptor)desc.getClassDescriptor();
                    //prevent endless loop
                    if (xcd != this) {
                        //is it in this class descriptor?
                        if (xcd.getFieldDescriptor(name, namespace, NodeType.Element) != null) {
                            result = desc;
                            break;
                        }
                    }
                }//container
            }

            if (result != null)
                return result;
        }

        //-- handle attributes
        if (wild || (nodeType == NodeType.Attribute))
        {
            if (attributes == null) attributes = getAttributeArray();
            for (int i = 0; i < attributes.length; i++) {
                XMLFieldDescriptor desc = attributes[i];
                if (desc == null) continue;
                if (desc.matches(name)) {
                    return desc;
                }
            }
        }

        //-- handle namespace node
        if (nodeType == NodeType.Namespace) {
            if (attributes == null) attributes = getAttributeArray();
            for (int i = 0; i < attributes.length; i++) {
                if (attributes[i] == null) continue;
                if (attributes[i].getNodeType() == NodeType.Namespace) {
                    return attributes[i];
                }
            }
        }

        // To handle container object, we need to check if an attribute of a
        // container field match this attribute
        if (nodeType == NodeType.Attribute) {
            if (elements == null) elements = getElementArray();
            for (int i = 0; i < elements.length; i++) {
                XMLFieldDescriptor desc = elements[i];
                if (desc.isContainer()) {
                    XMLClassDescriptor xcd = (XMLClassDescriptor)desc.getClassDescriptor();
                    //prevent endless loop
                    if (xcd != this) {
                        //is it in this class descriptor?
                        XMLFieldDescriptor temp = xcd.getFieldDescriptor(name, namespace, NodeType.Attribute);
                        if (temp != null) {
                            return desc;
                        }
                    }
                }
View Full Code Here

    public void setMappingLoader(final MappingLoader mappingLoader) {
        _mappingLoader = mappingLoader;
        if (mappingLoader != null) {
            Iterator descriptors = mappingLoader.descriptorIterator();
            while (descriptors.hasNext()) {
                XMLClassDescriptor descriptor = (XMLClassDescriptor) descriptors.next();
                _descriptorCache.addDescriptor(descriptor.getJavaClass().getName(), descriptor);
            }
        }
    }
View Full Code Here

            return (XMLClassDescriptor) possibleMatches.get(0);
        }

        // we have more than one result - only an exact match can be the result
        for (Iterator i = possibleMatches.iterator(); i.hasNext(); ) {
            XMLClassDescriptor descriptor = (XMLClassDescriptor) i.next();

            if (ResolveHelpers.namespaceEquals(namespaceURI, descriptor.getNameSpaceURI())) {
                return descriptor;
            }
        }

        // no exact match and too many possible matches...
View Full Code Here

TOP

Related Classes of org.exolab.castor.xml.XMLClassDescriptor

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.