Package org.datanucleus.metadata

Examples of org.datanucleus.metadata.FileMetaData


     * @param resolver Entity Resolver to use (null if not available)
     */
    public JPAMetaDataHandler(MetaDataManager mgr, String filename, EntityResolver resolver)
    {
        super(mgr, filename, resolver);
        metadata = new FileMetaData();
        ((FileMetaData)metadata).setFilename(filename);
        ((FileMetaData)metadata).setMetaDataManager(mgr); // Parsing via this manager, so set it
        pushStack(metadata); // Start with FileMetaData on the stack
    }
View Full Code Here


        }
        try
        {
            if (localName.equals("entity-mappings"))
            {
                FileMetaData filemd = (FileMetaData)getStack();
                filemd.setType(MetadataFileType.JPA_MAPPING_FILE);
            }
            else if (localName.equals("description"))
            {
                // Of no practical use so ignored
            }
            else if (localName.equals("persistence-unit-metadata"))
            {
                // Nothing to do - we use subelements
            }
            else if (localName.equals("xml-mapping-metadata-complete"))
            {
                // All classes in the file are complete without any annotations
                metaDataComplete = true;
            }
            else if (localName.equals("persistence-unit-defaults"))
            {
                // Nothing to do - we use subelements
            }
            else if (localName.equals("package"))
            {
                // Processed in endElement()
            }
            else if (localName.equals("schema"))
            {
                // Processed in endElement()
            }
            else if (localName.equals("catalog"))
            {
                // Processed in endElement()
            }
            else if (localName.equals("access"))
            {
                // Processed in endElement()
            }
            else if (localName.equals("column-name"))
            {
                // Processed in endElement()
            }
            else if (localName.equals("sequence-generator"))
            {
                // Find the package for this sequence
                PackageMetaData pmd = null;
                FileMetaData filemd = (FileMetaData)metadata;
                if (defaultPackageName != null)
                {
                    pmd = filemd.getPackage(defaultPackageName);
                }
                else
                {
                    if (filemd.getNoOfPackages() > 0)
                    {
                        pmd = filemd.getPackage(0);
                    }
                    else
                    {
                        // Add a dummy (root) package to hold our sequences since no default package name set
                        pmd = filemd.newPackageMetadata("");
                    }
                }
                String initValue = getAttr(attrs, "initial-value");
                if (StringUtils.isWhitespace(initValue))
                {
                    initValue = "1"; // JPA default
                }
                String allocSize = getAttr(attrs, "allocation-size");
                if (StringUtils.isWhitespace(allocSize))
                {
                    allocSize = "50"; // JPA default
                }
                SequenceMetaData seqmd = pmd.newSequenceMetadata(getAttr(attrs, "name"), null);
                String datastoreSeqName = getAttr(attrs, "sequence-name");
                if (StringUtils.isWhitespace(datastoreSeqName))
                {
                    datastoreSeqName = seqmd.getName();
                }
                seqmd.setDatastoreSequence(datastoreSeqName);
                seqmd.setInitialValue(initValue);
                seqmd.setAllocationSize(allocSize);
            }
            else if (localName.equals("table-generator"))
            {
                // Find the package for this table generator
                PackageMetaData pmd = null;
                FileMetaData filemd = (FileMetaData)metadata;
                if (defaultPackageName != null)
                {
                    pmd = filemd.getPackage(defaultPackageName);
                }
                else
                {
                    if (filemd.getNoOfPackages() > 0)
                    {
                        pmd = filemd.getPackage(0);
                    }
                    else
                    {
                        // Add a dummy (root) package to hold our sequences since no default package name set
                        pmd = filemd.newPackageMetadata("");
                    }
                }
                TableGeneratorMetaData tgmd = pmd.newTableGeneratorMetadata(getAttr(attrs, "name"));
                tgmd.setTableName(getAttr(attrs, "table"));
                tgmd.setCatalogName(getAttr(attrs, "catalog"));
                tgmd.setSchemaName(getAttr(attrs, "schema"));
                tgmd.setPKColumnName(getAttr(attrs, "pk-column-name"));
                tgmd.setPKColumnValue(getAttr(attrs, "pk-column-value"));
                tgmd.setValueColumnName(getAttr(attrs, "value-column-name"));
                tgmd.setInitialValue(getAttr(attrs, "initial-value"));
                tgmd.setAllocationSize(getAttr(attrs, "allocation-size"));
            }
            else if (localName.equals("named-query"))
            {
                // Named JPQL query
                MetaData md = getStack();
                if (md instanceof FileMetaData)
                {
                    FileMetaData filemd = (FileMetaData)md;
                    QueryMetaData qmd = filemd.newQueryMetadata(getAttr(attrs, "name"));
                    qmd.setLanguage(QueryLanguage.JPQL.toString());
                    pushStack(qmd);
                }
                else if (md instanceof ClassMetaData)
                {
                    ClassMetaData cmd = (ClassMetaData)md;
                    QueryMetaData qmd = new QueryMetaData(getAttr(attrs, "name"));
                    qmd.setLanguage(QueryLanguage.JPQL.toString());
                    cmd.addQuery(qmd);
                    pushStack(qmd);
                }
            }
            else if (localName.equals("named-native-query"))
            {
                // Named SQL query
                MetaData md = getStack();
                if (md instanceof FileMetaData)
                {
                    FileMetaData filemd = (FileMetaData)md;
                    QueryMetaData qmd = filemd.newQueryMetadata(getAttr(attrs, "name"));
                    qmd.setLanguage(QueryLanguage.SQL.toString());
                    qmd.setResultClass(getAttr(attrs, "result-class"));
                    qmd.setResultMetaDataName(getAttr(attrs, "result-set-mapping"));
                    pushStack(qmd);
                }
                else if (md instanceof ClassMetaData)
                {
                    ClassMetaData cmd = (ClassMetaData)md;
                    QueryMetaData qmd = new QueryMetaData(getAttr(attrs, "name"));
                    qmd.setLanguage(QueryLanguage.SQL.toString());
                    qmd.setResultClass(getAttr(attrs, "result-class"));
                    qmd.setResultMetaDataName(getAttr(attrs, "result-set-mapping"));
                    cmd.addQuery(qmd);
                    pushStack(qmd);
                }
            }
            else if (localName.equals("sql-result-set-mapping"))
            {
                MetaData md = getStack();
                if (md instanceof FileMetaData)
                {
                    FileMetaData filemd = (FileMetaData)md;
                    QueryResultMetaData qrmd = filemd.newQueryResultMetadata(getAttr(attrs, "name"));
                    pushStack(qrmd);
                }
                else if (md instanceof ClassMetaData)
                {
                    ClassMetaData cmd = (ClassMetaData)md;
                    QueryResultMetaData qrmd = new QueryResultMetaData(getAttr(attrs, "name"));
                    cmd.addQueryResultMetaData(qrmd);
                    pushStack(qrmd);
                }
            }
            else if (localName.equals("entity-result"))
            {
                // Add an entity (persistent class) mapping
                QueryResultMetaData qrmd = (QueryResultMetaData)getStack();
                queryResultEntityName = getAttr(attrs, "entity-class"); // Save this for any field-result that arrives
                qrmd.addPersistentTypeMapping(queryResultEntityName,
                    null, // No field-column mappings info at this point
                    getAttr(attrs, "discriminator-column"));
            }
            else if (localName.equals("field-result"))
            {
                // Add a field-column mapping for the entity (persistent class)
                QueryResultMetaData qrmd = (QueryResultMetaData)getStack();
                qrmd.addMappingForPersistentTypeMapping(queryResultEntityName,
                    getAttr(attrs, "name"), getAttr(attrs, "column"));
            }
            else if (localName.equals("column-result"))
            {
                // Add a scalar column mapping
                QueryResultMetaData qrmd = (QueryResultMetaData)getStack();
                qrmd.addScalarColumn(getAttr(attrs, "name"));
            }
            else if (localName.equals("mapped-superclass"))
            {
                // New entity for this package
                FileMetaData filemd = (FileMetaData)getStack();
                String className = getAttr(attrs, "class");
                String packageName = null;
                if (className.indexOf('.') > 0)
                {
                    // Fully-qualified so use package name from class
                    packageName = className.substring(0, className.lastIndexOf('.'));
                }
                PackageMetaData pmd = null;
                if (packageName != null)
                {
                    pmd = filemd.getPackage(packageName);
                }
                if (pmd == null)
                {
                    if (packageName != null)
                    {
                        // Class fully qualified so add its package
                        pmd = filemd.newPackageMetadata(packageName);
                    }
                    else if (defaultPackageName != null)
                    {
                        // Use default package for entity-mappings
                        pmd = filemd.getPackage(defaultPackageName);
                    }
                    else
                    {
                        // Add root package
                        pmd = filemd.newPackageMetadata("");
                    }
                }

                ClassMetaData cmd = newClassObject(pmd, attrs, false);
                pmd.addClass(cmd);

                // Set to use "subclass-table" since all subclasses inherit these fields
                InheritanceMetaData inhmd = new InheritanceMetaData();
                inhmd.setStrategy(InheritanceStrategy.SUBCLASS_TABLE);
                cmd.setInheritanceMetaData(inhmd);

                pushStack(cmd);
            }
            else if (localName.equals("query"))
            {
                // Processed in endElement()
            }
            else if (localName.equals("entity"))
            {
                // New entity for this package
                FileMetaData filemd = (FileMetaData)getStack();
                String className = getAttr(attrs, "class");
                String packageName = null;
                if (className.indexOf('.') > 0)
                {
                    // Fully-qualified so use package name from class
                    packageName = className.substring(0, className.lastIndexOf('.'));
                }
                PackageMetaData pmd = null;
                if (packageName != null)
                {
                    pmd = filemd.getPackage(packageName);
                }
                if (pmd == null)
                {
                    if (packageName != null)
                    {
                        // Class fully qualified so add its package
                        pmd = filemd.newPackageMetadata(packageName);
                    }
                    else if (defaultPackageName != null)
                    {
                        // Use default package for entity-mappings
                        pmd = filemd.getPackage(defaultPackageName);
                    }
                    else
                    {
                        // Add root package
                        pmd = filemd.newPackageMetadata("");
                    }
                }

                ClassMetaData cmd = newClassObject(pmd, attrs, false);
                pmd.addClass(cmd);

                pushStack(cmd);
            }
            else if (localName.equals("embeddable"))
            {
                // New embedded-only entity for this package
                FileMetaData filemd = (FileMetaData)getStack();
                String className = getAttr(attrs, "class");
                String packageName = null;
                if (className.indexOf('.') > 0)
                {
                    // Fully-qualified so use package name from class
                    packageName = className.substring(0, className.lastIndexOf('.'));
                }
                PackageMetaData pmd = null;
                if (packageName != null)
                {
                    pmd = filemd.getPackage(packageName);
                }
                if (pmd == null)
                {
                    if (packageName != null)
                    {
                        // Class fully qualified so add its package
                        pmd = filemd.newPackageMetadata(packageName);
                    }
                    else if (defaultPackageName != null)
                    {
                        // Use default package for entity-mappings
                        pmd = filemd.getPackage(defaultPackageName);
                    }
                    else
                    {
                        // Add root package
                        pmd = filemd.newPackageMetadata("");
                    }
                }

                ClassMetaData cmd = newClassObject(pmd, attrs, true);
                pmd.addClass(cmd);
View Full Code Here

            else if (localName.equals("package"))
            {
                if (md instanceof FileMetaData)
                {
                    // Add the default package
                    FileMetaData filemd = (FileMetaData)md;
                    filemd.newPackageMetadata(currentString);
                    defaultPackageName = currentString;
                }
            }
            else if (localName.equals("discriminator-value"))
            {
View Full Code Here

            // Not allowing further metadata load so just return
            return null;
        }

        // No MetaData so check for annotations
        FileMetaData annFilemd = loadAnnotationsForClass(c, clr, true, true);
        if (annFilemd != null)
        {
            // No MetaData but annotations present so use that
            return annFilemd.getPackage(0).getClass(0);
        }

        // Not found, so add to known classes/interfaces without MetaData
        if (NucleusLogger.METADATA.isDebugEnabled())
        {
View Full Code Here

            // Not allowing further metadata load so just return
            return null;
        }

        // No loaded MetaData so search valid location for a file for this class and load all in the process
        FileMetaData filemd = loadMetaDataForClass(c, clr, null, getJDOFileSuffix(),
            MetadataFileType.JDO_FILE, true);
        if (filemd != null)
        {
            // Class has had its metadata loaded
            utilisedFileMetaData.add(filemd);

            // If not MetaData complete will also merge in annotations at populate stage

            // Retrieve the MetaData for the requested class
            the_md = classMetaDataByClass.get(className);

            return the_md;
        }

        // No MetaData so check for annotations
        FileMetaData annFilemd = loadAnnotationsForClass(c, clr, true, true);
        if (annFilemd != null)
        {
            // No MetaData but annotations present so use that
            if (c.isInterface())
            {
                return annFilemd.getPackage(0).getInterface(0);
            }
            else
            {
                return annFilemd.getPackage(0).getClass(0);
            }
        }

        // Not found, so add to known classes/interfaces without MetaData
        if (NucleusLogger.METADATA.isDebugEnabled())
View Full Code Here

                {
                    URL fileURL = (URL) resources.nextElement();
                    if (fileMetaDataByURLString.get(fileURL.toString()) == null)
                    {
                        // File hasn't been loaded so load it
                        FileMetaData filemd = parseFile(fileURL);
                        filemd.setType(MetadataFileType.JDO_QUERY_FILE); // TODO Remove this since set in the parser at <jdoquery>
                        registerFile(fileURL.toString(), filemd, clr);

                        // Populate all classes in this file we've just parsed
                        // TODO Populate the classes found in this file
                    }
                }
                cmd = getMetaDataForClass(cls, clr);

                if (queryMetaDataByName != null)
                {
                    qmd = queryMetaDataByName.get(query_key);
                    if (qmd != null)
                    {
                        if (NucleusLogger.METADATA.isDebugEnabled())
                        {
                            NucleusLogger.METADATA.debug(LOCALISER.msg("044053",query_key,location));
                        }
                        return qmd;
                    }
                    if (NucleusLogger.METADATA.isDebugEnabled())
                    {
                        NucleusLogger.METADATA.debug(LOCALISER.msg("044050",query_key,location));
                    }
                }
            }
            return null;
        }

        // Query isn't scoped to a candidate class, so search the valid package-independent locations
        List locations = new ArrayList();
        locations.addAll(getValidMetaDataLocationsForItem(getJDOFileSuffix(), null, null, false));
        locations.addAll(getValidMetaDataLocationsForItem(getORMFileSuffix(), getORMMappingName(), null, false));
        locations.addAll(getValidMetaDataLocationsForItem(getJDOQueryFileSuffix(), null, null, false));

        for (int i=0; i<locations.size(); i++)
        {
            String location = (String) locations.get(i);
            // Process all resources for this location
            Enumeration resources;
            try
            {
                resources = clr.getResources(location, cls != null ? cls.getClassLoader() : null);
            }
            catch (IOException e)
            {
                throw new NucleusException("Error loading resources", e).setFatal();
            }
            while (resources.hasMoreElements())
            {
                URL fileURL = (URL) resources.nextElement();
                if (fileMetaDataByURLString.get(fileURL.toString()) == null)
                {
                    // File hasn't been loaded so load it
                    FileMetaData filemd = parseFile(fileURL);
                    registerFile(fileURL.toString(), filemd, clr);

                    // Populate all classes in this file we've just parsed
                    // TODO Populate the classes found in this file
                }
View Full Code Here

            {
                URL fileURL = (URL) resources.nextElement();
                if (fileMetaDataByURLString.get(fileURL.toString()) == null)
                {
                    // File hasn't been loaded so load it
                    FileMetaData filemd = parseFile(fileURL);
                    registerFile(fileURL.toString(), filemd, clr);

                    // Populate all classes in this file we've just parsed
                    // TODO Populate the classes found in this file
                }
View Full Code Here

            return;
        }

        // No ORM loaded for this class, so find if there is any ORM metadata available
        FileMetaData filemdORM = loadMetaDataForClass(c, clr, getORMMappingName(), getORMFileSuffix(),
            MetadataFileType.JDO_ORM_FILE, false);
        if (filemdORM != null)
        {
            // The ORM file has now been registered, so find the class and merge it into the JDO definition
            ormCmd = ormClassMetaDataByClass.get(c.getName());
View Full Code Here

            {
                URL url = (URL) resources.nextElement();
                if (url != null)
                {
                    // Check if we already have this file parsed/registered
                    FileMetaData filemd = fileMetaDataByURLString.get(url.toString());
                    if (filemd == null)
                    {
                        // Not registered so load the file from the URL
                        filemd = parseFile(url);
                        if (filemd.getType() != metadataType)
                        {
                            // Wrong type of file so ignore it
                            NucleusLogger.METADATA.warn(LOCALISER.msg("044045", url, filemd.getType(), metadataType));
                            filemd = null;
                            break;
                        }

                        registerFile(url.toString(), filemd, clr);
                        if (populate)
                        {
                            // Populate all classes in this file we've just parsed
                            populateFileMetaData(filemd, clr, pc_class.getClassLoader());
                        }
                    }

                    if (filemd != null &&
                        ((filemd.getType() == MetadataFileType.JDO_FILE && classMetaDataByClass.get(pc_class.getName()) != null) ||
                         (filemd.getType() == MetadataFileType.JDO_ORM_FILE && ormClassMetaDataByClass.get(pc_class.getName()) != null)))
                    {
                        // We now have the class, so it must have been in this file
                        if (NucleusLogger.METADATA.isDebugEnabled())
                        {
                            NucleusLogger.METADATA.debug(LOCALISER.msg("044052", metadataFileExtension, pc_class.getName(), url));
View Full Code Here

            {
                // Initialise all FileMetaData that were processed in this call
                Iterator iter = utilisedFileMetaData.iterator();
                while (iter.hasNext())
                {
                    FileMetaData filemd = (FileMetaData)iter.next();
                    initialiseFileMetaData(filemd, clr, c.getClassLoader());
                }
            }
        }
View Full Code Here

TOP

Related Classes of org.datanucleus.metadata.FileMetaData

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.