Package org.datanucleus.metadata

Examples of org.datanucleus.metadata.MetaDataManager


     * them into the MetaDataManager, returning the associated FileMetaData.
     * @return The FileMetaData for the registered components.
     */
    protected Collection<FileMetaData> getFileMetadataForInput()
    {
        MetaDataManager metadataMgr = getMetaDataManager();
        Iterator<EnhanceComponent> iter = componentsToEnhance.iterator();
        Collection<FileMetaData> fileMetaData = new ArrayList<FileMetaData>();
        while (iter.hasNext())
        {
            EnhanceComponent comp = iter.next();
            FileMetaData[] filemds = null;
            switch (comp.getType())
            {
                case EnhanceComponent.CLASS : // Of the form "mydomain.MyClass"
                    if (comp.getValue() instanceof String)
                    {
                        // Single class
                        String className = (String)comp.getValue();
                        if (bytesForClassesToEnhanceByClassName != null &&
                            bytesForClassesToEnhanceByClassName.get(className) != null)
                        {
                            // Retrieve the meta-data "file"
                            AbstractClassMetaData cmd = metadataMgr.getMetaDataForClass(className, clr);
                            if (cmd != null)
                            {
                                filemds = new FileMetaData[] {cmd.getPackageMetaData().getFileMetaData()};
                            }
                            else
                            {
                                // No meta-data has been registered for this byte-defined class!
                            }
                        }
                        else
                        {
                            filemds = metadataMgr.loadClasses(new String[] {(String)comp.getValue()},
                                userClassLoader);
                        }
                    }
                    else
                    {
                        // Multiple classes
                        filemds = metadataMgr.loadClasses((String[])comp.getValue(), userClassLoader);
                    }
                    break;

                case EnhanceComponent.CLASS_FILE : // Absolute/relative filename(s)
                    if (comp.getValue() instanceof String)
                    {
                        // Single class file
                        String className = null;
                        String classFilename = (String)comp.getValue();
                        if (!StringUtils.getFileForFilename(classFilename).exists())
                        {
                            String msg = LOCALISER.msg("Enhancer.InputFiles.Invalid", classFilename);
                            addMessage(msg, true);
                        }
                        else
                        {
                            className = getClassNameForFilename(classFilename);
                        }
                        if (className != null)
                        {
                            filemds = metadataMgr.loadClasses(new String[] {className}, userClassLoader);
                        }
                    }
                    else
                    {
                        // Multiple class files
                        Collection<String> classNames = new ArrayList<String>();
                        String[] classFilenames = (String[])comp.getValue();
                        for (int i=0;i<classFilenames.length;i++)
                        {
                            String className = null;
                            if (!StringUtils.getFileForFilename(classFilenames[i]).exists())
                            {
                                String msg = LOCALISER.msg("Enhancer.InputFiles.Invalid", classFilenames[i]);
                                addMessage(msg, true);
                            }
                            else
                            {
                                className = getClassNameForFilename(classFilenames[i]);
                            }
                            if (className != null)
                            {
                                classNames.add(className);
                            }
                        }
                        filemds = metadataMgr.loadClasses(classNames.toArray(new String[classNames.size()]),
                            userClassLoader);
                    }
                    break;

                case EnhanceComponent.MAPPING_FILE : // Absolute/relative filename(s)
                    if (comp.getValue() instanceof String)
                    {
                        // Single mapping file
                        filemds = metadataMgr.loadMetadataFiles(new String[] {(String)comp.getValue()},
                            userClassLoader);
                    }
                    else
                    {
                        // Multiple mapping files
                        filemds = metadataMgr.loadMetadataFiles((String[])comp.getValue(), userClassLoader);
                    }
                    break;

                case EnhanceComponent.JAR_FILE : // Absolute/relative filename(s)
                    if (comp.getValue() instanceof String)
                    {
                        // Single jar file
                        filemds = metadataMgr.loadJar((String)comp.getValue(), userClassLoader);
                    }
                    else
                    {
                        // Multiple jar files
                        String[] jarFilenames = (String[])comp.getValue();
                        Collection<FileMetaData> filemdsColl = new HashSet<FileMetaData>();
                        for (int i=0;i<jarFilenames.length;i++)
                        {
                            FileMetaData[] fmds = metadataMgr.loadJar(jarFilenames[i], userClassLoader);
                            for (int j=0;j<fmds.length;j++)
                            {
                                filemdsColl.add(fmds[j]);
                            }
                        }
                        filemds = filemdsColl.toArray(new FileMetaData[filemdsColl.size()]);
                    }
                    break;

                case EnhanceComponent.PERSISTENCE_UNIT :
                    PersistenceUnitMetaData pumd = null;
                    try
                    {
                        pumd = getMetaDataManager().getMetaDataForPersistenceUnit((String)comp.getValue());
                    }
                    catch (NucleusException ne)
                    {
                        // No "persistence.xml" files found yet they have specified a persistence-unit name!
                        throw new NucleusEnhanceException(
                            LOCALISER.msg("Enhancer.PersistenceUnit.NoPersistenceFiles", comp.getValue()));
                    }
                    if (pumd == null)
                    {
                        throw new NucleusEnhanceException(
                            LOCALISER.msg("Enhancer.PersistenceUnit.NoSuchUnit", comp.getValue()));
                    }
                    filemds = metadataMgr.loadPersistenceUnit(pumd, userClassLoader);
                    break;

                default :
                    break;
            }
View Full Code Here


    /* (non-Javadoc)
     * @see javax.jdo.JDOEnhancer#registerMetadata(javax.jdo.metadata.JDOMetadata)
     */
    public void registerMetadata(javax.jdo.metadata.JDOMetadata metadata)
    {
        MetaDataManager mmgr = enhancer.getMetaDataManager();
        FileMetaData filemd = ((JDOMetadataImpl)metadata).getInternal();
        mmgr.loadUserMetaData(filemd, enhancer.getClassLoader());
    }
View Full Code Here

     * them into the MetaDataManager, returning the associated FileMetaData.
     * @return The FileMetaData for the registered components.
     */
    protected Collection<FileMetaData> getFileMetadataForInput()
    {
        MetaDataManager metadataMgr = getMetaDataManager();
        Iterator<EnhanceComponent> iter = componentsToEnhance.iterator();
        Collection<FileMetaData> fileMetaData = new ArrayList<FileMetaData>();
        while (iter.hasNext())
        {
            EnhanceComponent comp = iter.next();
            FileMetaData[] filemds = null;
            switch (comp.getType())
            {
                case EnhanceComponent.CLASS : // Of the form "mydomain.MyClass"
                    if (comp.getValue() instanceof String)
                    {
                        // Single class
                        String className = (String)comp.getValue();
                        if (bytesForClassesToEnhanceByClassName != null &&
                            bytesForClassesToEnhanceByClassName.get(className) != null)
                        {
                            // Retrieve the meta-data "file"
                            AbstractClassMetaData cmd = metadataMgr.getMetaDataForClass(className, clr);
                            if (cmd != null)
                            {
                                filemds = new FileMetaData[] {cmd.getPackageMetaData().getFileMetaData()};
                            }
                            else
                            {
                                // No meta-data has been registered for this byte-defined class!
                            }
                        }
                        else
                        {
                            filemds = metadataMgr.loadClasses(new String[] {(String)comp.getValue()},
                                userClassLoader);
                        }
                    }
                    else
                    {
                        // Multiple classes
                        filemds = metadataMgr.loadClasses((String[])comp.getValue(), userClassLoader);
                    }
                    break;

                case EnhanceComponent.CLASS_FILE : // Absolute/relative filename(s)
                    if (comp.getValue() instanceof String)
                    {
                        // Single class file
                        String className = null;
                        String classFilename = (String)comp.getValue();
                        if (!StringUtils.getFileForFilename(classFilename).exists())
                        {
                            String msg = LOCALISER.msg("Enhancer.InputFiles.Invalid", classFilename);
                            addMessage(msg, true);
                        }
                        else
                        {
                            className = getClassNameForFilename(classFilename);
                        }
                        if (className != null)
                        {
                            filemds = metadataMgr.loadClasses(new String[] {className}, userClassLoader);
                        }
                    }
                    else
                    {
                        // Multiple class files
                        Collection<String> classNames = new ArrayList<String>();
                        String[] classFilenames = (String[])comp.getValue();
                        for (int i=0;i<classFilenames.length;i++)
                        {
                            String className = null;
                            if (!StringUtils.getFileForFilename(classFilenames[i]).exists())
                            {
                                String msg = LOCALISER.msg("Enhancer.InputFiles.Invalid", classFilenames[i]);
                                addMessage(msg, true);
                            }
                            else
                            {
                                className = getClassNameForFilename(classFilenames[i]);
                            }
                            if (className != null)
                            {
                                classNames.add(className);
                            }
                        }
                        filemds = metadataMgr.loadClasses(classNames.toArray(new String[classNames.size()]),
                            userClassLoader);
                    }
                    break;

                case EnhanceComponent.MAPPING_FILE : // Absolute/relative filename(s)
                    if (comp.getValue() instanceof String)
                    {
                        // Single mapping file
                        filemds = metadataMgr.loadMetadataFiles(new String[] {(String)comp.getValue()},
                            userClassLoader);
                    }
                    else
                    {
                        // Multiple mapping files
                        filemds = metadataMgr.loadMetadataFiles((String[])comp.getValue(), userClassLoader);
                    }
                    break;

                case EnhanceComponent.JAR_FILE : // Absolute/relative filename(s)
                    if (comp.getValue() instanceof String)
                    {
                        // Single jar file
                        filemds = metadataMgr.loadJar((String)comp.getValue(), userClassLoader);
                    }
                    else
                    {
                        // Multiple jar files
                        String[] jarFilenames = (String[])comp.getValue();
                        Collection<FileMetaData> filemdsColl = new HashSet<FileMetaData>();
                        for (int i=0;i<jarFilenames.length;i++)
                        {
                            FileMetaData[] fmds = metadataMgr.loadJar(jarFilenames[i], userClassLoader);
                            for (int j=0;j<fmds.length;j++)
                            {
                                filemdsColl.add(fmds[j]);
                            }
                        }
                        filemds = filemdsColl.toArray(new FileMetaData[filemdsColl.size()]);
                    }
                    break;

                case EnhanceComponent.PERSISTENCE_UNIT :
                    PersistenceUnitMetaData pumd = null;
                    try
                    {
                        pumd = getMetaDataManager().getMetaDataForPersistenceUnit((String)comp.getValue());
                    }
                    catch (NucleusException ne)
                    {
                        // No "persistence.xml" files found yet they have specified a persistence-unit name!
                        throw new NucleusEnhanceException(
                            LOCALISER.msg("Enhancer.PersistenceUnit.NoPersistenceFiles", comp.getValue()));
                    }
                    if (pumd == null)
                    {
                        throw new NucleusEnhanceException(
                            LOCALISER.msg("Enhancer.PersistenceUnit.NoSuchUnit", comp.getValue()));
                    }
                    filemds = metadataMgr.loadPersistenceUnit(pumd, userClassLoader);
                    break;

                default :
                    break;
            }
View Full Code Here

  @Override
  public void setStoreManager(StoreManager storeMgr) {
    super.setStoreManager(storeMgr);
    OMFContext omfContext = getOMFContext();
    MetaDataManager mdm = omfContext.getMetaDataManager();
    ClassLoaderResolver clr = omfContext.getClassLoaderResolver(getClass().getClassLoader());
    AbstractClassMetaData acmd = mdm.getMetaDataForClass((String) properties.get("class-name"), clr);
    if (acmd != null) {
      ((DatastoreManager) storeMgr).validateMetaDataForClass(acmd, clr);
    }

    sequenceName = determineSequenceName(acmd);
    if (sequenceName != null) {
      // Fetch the sequence data
      SequenceMetaData sequenceMetaData = mdm.getMetaDataForSequence(clr, sequenceName);
      if (sequenceMetaData != null) {
        // derive allocation size and sequence name from the sequence meta data
        if (sequenceMetaData.hasExtension(KEY_CACHE_SIZE_PROPERTY)) {
          allocationSize = Integer.parseInt(sequenceMetaData.getValueForExtension(KEY_CACHE_SIZE_PROPERTY));
        } else {
View Full Code Here

    /* (non-Javadoc)
     * @see javax.jdo.JDOEnhancer#registerMetadata(javax.jdo.metadata.JDOMetadata)
     */
    public void registerMetadata(javax.jdo.metadata.JDOMetadata metadata)
    {
        MetaDataManager mmgr = enhancer.getMetaDataManager();
        FileMetaData filemd = ((JDOMetadataImpl)metadata).getInternal();
        mmgr.loadUserMetaData(filemd, enhancer.getClassLoader());
    }
View Full Code Here

        // PERSISTENT INTERFACE : allow for the value (impl) not be directly assignable from the superclass impl
        // e.g If we have interface "Base" with impl "BaseImpl", and sub-interface "Sub1" with impl "Sub1Impl"
        // So if the mapping is of type BaseImpl and the value is Sub1Impl then they don't come up as "assignable"
        // but they are
        Class mappingJavaType = null;
        MetaDataManager mmgr = om.getStoreManager().getOMFContext().getMetaDataManager();
        boolean isPersistentInterface = mmgr.isPersistentInterface(getType());
        if (isPersistentInterface)
        {
            // Field is declared as a "persistent-interface" type so all impls of that type should match
            mappingJavaType = clr.classForName(getType());
        }
        else if (mmd != null && mmd.getFieldTypes() != null && mmd.getFieldTypes().length == 1)
        {
            isPersistentInterface = mmgr.isPersistentInterface(mmd.getFieldTypes()[0]);
            if (isPersistentInterface)
            {
                // Field is declared as interface and accepts "persistent-interface" value, so all impls should match
                mappingJavaType = clr.classForName(mmd.getFieldTypes()[0]);
            }
View Full Code Here

        {
            // Find all "META-INF/persistence.xml" files in the current thread loader CLASSPATH and parse them
            // Create a temporary PMFContext so we have a parser
            OMFContext pmfCtxt = new OMFContext(new PersistenceConfiguration(){});
            pmfCtxt.setApi("JPA");
            MetaDataManager metadataMgr = pmfCtxt.getMetaDataManager();
            PersistenceFileMetaData[] files = metadataMgr.parsePersistenceFiles();
            if (files == null)
            {
                // No "persistence.xml" files found
                NucleusLogger.JPA.warn(LOCALISER.msg("EMF.NoPersistenceXML"));
                //throw new NoPersistenceXmlException(LOCALISER.msg("EMF.NoPersistenceXML"));
View Full Code Here

    if (!allowSubclasses) {
      return false;
    }

    MetaDataManager mdm = pkMemberMetaData.getMetaDataManager();
    // see if the key kind is a subclass of the requested kind
    String[] subclasses = mdm.getSubclassesForClass(cls.getName(), true);
    if (subclasses != null) {
      for (String subclass : subclasses) {
        AbstractClassMetaData subAcmd = mdm.getMetaDataForClass(subclass, om.getClassLoaderResolver());
        if (key.getKind().equals(determineKind(subAcmd, om))) {
          return true;
        }
      }
    }
View Full Code Here

        this.emd = emd;
        this.typeName = typeName;
        this.objectType = objectType;

        // Find the MetaData for the embedded PC class
        MetaDataManager mmgr = datastoreContainer.getStoreManager().getMetaDataManager();
        AbstractClassMetaData pcCmd = mmgr.getMetaDataForClass(typeName, clr);
        if (pcCmd == null)
        {
            // Not found so must be an interface
            if (fmd != null)
            {
                // Try using the fieldTypes on the field/property - we support it if only 1 implementation
                String[] fieldTypes = fmd.getFieldTypes();
                if (fieldTypes != null && fieldTypes.length == 1)
                {
                    pcCmd = mmgr.getMetaDataForClass(fieldTypes[0], clr);
                }
                else if (fieldTypes != null && fieldTypes.length > 1)
                {
                    // TODO Cater for multiple implementations
                    throw new NucleusUserException("Field " + fmd.getFullFieldName() + " is a reference field that is embedded. " +
                        "JPOX doesnt support embedded reference fields that have more than 1 implementation");
                }
            }

            if (pcCmd == null)
            {
                // Try a persistent interface
                pcCmd = mmgr.getMetaDataForInterface(clr.classForName(typeName), clr);
                if (pcCmd == null && fmd.getFieldTypes() != null && fmd.getFieldTypes().length == 1)
                {
                    // No MetaData for the type so try "fieldType" specified on the field
                    pcCmd = mmgr.getMetaDataForInterface(clr.classForName(fmd.getFieldTypes()[0]), clr);
                }
            }
        }

        embCmd = pcCmd;
View Full Code Here

     * Metadata can be created using the method {@link #newMetadata}.
     * @param metadata The Metadata to register.
     */
    public void registerMetadata(javax.jdo.metadata.JDOMetadata metadata)
    {
        MetaDataManager mmgr = omfContext.getMetaDataManager();
        FileMetaData filemd = ((JDOMetadataImpl)metadata).getInternal();

        // Check if already defined
        for (int i=0;i<filemd.getNoOfPackages();i++)
        {
            PackageMetaData pmd = filemd.getPackage(i);
            for (int j=0;j<pmd.getNoOfClasses();j++)
            {
                ClassMetaData cmd = pmd.getClass(j);
                if (mmgr.hasMetaDataForClass(cmd.getFullClassName()))
                {
                    throw new JDOUserException("Cannot redefine metadata for " + cmd.getFullClassName());
                }
            }
            for (int j=0;j<pmd.getNoOfInterfaces();j++)
            {
                InterfaceMetaData imd = pmd.getInterface(j);
                if (mmgr.hasMetaDataForClass(imd.getFullClassName()))
                {
                    throw new JDOUserException("Cannot redefine metadata for " + imd.getFullClassName());
                }
            }
        }

        mmgr.loadUserMetaData(filemd, null);
    }
View Full Code Here

TOP

Related Classes of org.datanucleus.metadata.MetaDataManager

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.