Package org.jpox.metadata

Examples of org.jpox.metadata.MetaDataManager


            }
        }
        subqueryCandidateExpr = candExpr;

        ClassLoaderResolver clr = query.getObjectManager().getClassLoaderResolver();
        MetaDataManager mmgr = query.getObjectManager().getMetaDataManager();
        AbstractClassMetaData cmd = mmgr.getMetaDataForClass(cls, clr);
        for (int i=1;i<tokens.length;i++)
        {
            AbstractMemberMetaData mmd = cmd.getMetaDataForMember(tokens[i]);
            int relationType = mmd.getRelationType(clr);

            if (relationType == Relation.ONE_TO_ONE_BI ||
                relationType == Relation.ONE_TO_ONE_UNI ||
                relationType == Relation.MANY_TO_ONE_BI)
            {
                cls = mmd.getType();
            }
            else if (relationType == Relation.ONE_TO_MANY_UNI ||
                relationType == Relation.ONE_TO_MANY_BI ||
                relationType == Relation.MANY_TO_MANY_BI)
            {
                if (mmd.hasCollection())
                {
                    cls = clr.classForName(mmd.getCollection().getElementType());
                }
                else if (mmd.hasMap())
                {
                    // Assume we're using the value
                    cls = clr.classForName(mmd.getMap().getValueType());
                }
                else if (mmd.hasArray())
                {
                    cls = clr.classForName(mmd.getArray().getElementType());
                }
            }

            if (i < tokens.length-1)
            {
                cmd = mmgr.getMetaDataForClass(cls, clr);
            }
        }
        return cls;
    }
View Full Code Here


                    (m instanceof PersistenceCapableMapping || m instanceof InterfaceMapping))
                {
                    int relationType = fmd.getRelationType(clr);
                    if (relationType == Relation.ONE_TO_ONE_BI)
                    {
                        MetaDataManager mmgr = storeMgr.getOMFContext().getMetaDataManager();
                        if (fmd.getMappedBy() != null)
                        {
                            // 1-1 bidirectional (non-owner) field (without datastore column(s))
                            Class fieldType = fmd.getType();
                            DatastoreClass relatedTable;
                            String[] clsNames = null;
                            if (fieldType.isInterface())
                            {
                                if (fmd.getFieldTypes() != null && fmd.getFieldTypes().length == 1)
                                {
                                    // Use field-type since only one class specified
                                    Class fldTypeCls = clr.classForName(fmd.getFieldTypes()[0]);
                                    if (fldTypeCls.isInterface())
                                    {
                                        // User has specified an interface, so find its implementations
                                        clsNames = mmgr.getClassesImplementingInterface(fmd.getFieldTypes()[0], clr);
                                    }
                                    else
                                    {
                                        // Use user-provided field-type
                                        clsNames = new String[] {fmd.getFieldTypes()[0]};
                                    }
                                }
                                if (clsNames == null)
                                {
                                    clsNames = mmgr.getClassesImplementingInterface(fieldType.getName(), clr);
                                }
                            }
                            else
                            {
                                clsNames = new String[] { fieldType.getName() };
                            }
                            //only allowed to have association to one table. implementations can be many, but must store to the same table
                            relatedTable = storeMgr.getDatastoreClass(clsNames[0], clr);
                           
                            JavaTypeMapping referenceMapping = relatedTable.getFieldMapping(fmd.getMappedBy());
                            JavaTypeMapping selectMapping = relatedTable.getIDMapping();
                            JavaTypeMapping refDiscrimMapping = relatedTable.getDiscriminatorMapping(false);
                            Object[] discrimValues = null;
                            JavaTypeMapping refTypeMapping = null;

                            expressionsIndex = new int[referenceMapping.getNumberOfDatastoreFields()];
                            if (refDiscrimMapping != null)
                            {
                                // Related table has a discriminator
                                DiscriminatorStrategy strategy = relatedTable.getDiscriminatorMetaData().getStrategy();
                                if (strategy == DiscriminatorStrategy.CLASS_NAME)
                                {
                                    HashSet allclasses = new HashSet();
                                    if (clsNames != null)
                                    {
                                        for (int i=0;i<clsNames.length;i++)
                                        {
                                            allclasses.add(clsNames[i]);
                                        }
                                    }
                                    for( int i=0; i<clsNames.length; i++)
                                    {
                                        HashSet subclasses = storeMgr.getSubClassesForClass(clsNames[i], true, clr);
                                        if (subclasses != null && subclasses.size() > 0)
                                        {
                                            allclasses.addAll(subclasses);
                                        }
                                    }
                                    discrimValues = allclasses.toArray();
                                }
                                else if (strategy == DiscriminatorStrategy.VALUE_MAP)
                                {
                                    HashSet subclasses = storeMgr.getSubClassesForClass(fmd.getTypeName(), true, clr);
                                    if (subclasses != null && subclasses.size() > 0)
                                    {
                                        int valNo = 0;
                                        discrimValues = new Object[subclasses.size()+1];
                                        discrimValues[valNo++] = fmd.getAbstractClassMetaData().getInheritanceMetaData().getDiscriminatorMetaData().getValue();
                                        Iterator subclassesIter = subclasses.iterator();
                                        while (subclassesIter.hasNext())
                                        {
                                            String subclass = (String)subclassesIter.next();
                                            AbstractClassMetaData subclassCmd = mmgr.getMetaDataForClass(subclass, clr);
                                            discrimValues[valNo++] = subclassCmd.getInheritanceMetaData().getDiscriminatorMetaData().getValue();
                                        }
                                    }
                                    else
                                    {
                                        discrimValues = new Object[1];
                                        discrimValues[0] = mmgr.getMetaDataForClass(fmd.getType(), clr).getInheritanceMetaData().getDiscriminatorMetaData().getValue();
                                    }
                                }
                            }
                            else if (relatedTable != referenceMapping.getDataStoreMapping(0).getDatastoreField().getDatastoreContainerObject())
                            {
View Full Code Here

        }

        String[] tokens = StringUtils.split(subqueryCandidateExpr, ".");
        Class cls = parentExpr.getCandidateClass();
        ClassLoaderResolver clr = query.getObjectManager().getClassLoaderResolver();
        MetaDataManager mmgr = query.getObjectManager().getMetaDataManager();
        AbstractClassMetaData cmd = mmgr.getMetaDataForClass(cls, clr);
        for (int i=1;i<tokens.length;i++)
        {
            AbstractMemberMetaData mmd = cmd.getMetaDataForMember(tokens[i]);
            int relationType = mmd.getRelationType(clr);

            if (relationType == Relation.ONE_TO_ONE_BI ||
                relationType == Relation.ONE_TO_ONE_UNI ||
                relationType == Relation.MANY_TO_ONE_BI)
            {
                cls = mmd.getType();
            }
            else if (relationType == Relation.ONE_TO_MANY_UNI ||
                relationType == Relation.ONE_TO_MANY_BI ||
                relationType == Relation.MANY_TO_MANY_BI)
            {
                if (mmd.hasCollection())
                {
                    cls = clr.classForName(mmd.getCollection().getElementType());
                }
                else if (mmd.hasMap())
                {
                    // Assume we're using the value
                    cls = clr.classForName(mmd.getMap().getValueType());
                }
                else if (mmd.hasArray())
                {
                    cls = clr.classForName(mmd.getArray().getElementType());
                }
            }

            if (i < tokens.length-1)
            {
                cmd = mmgr.getMetaDataForClass(cls, clr);
            }
        }
        return cls;
    }
View Full Code Here

                        il.append(InstructionConstants.ALOAD_0);
                        createGetField(f.getName(), fieldMethod.getType(), f.isProperty());
                        //support for identifying relationships
                        //if the class has metadata, it is PersistenceCapable
                        //add JDOHelper.getObjectId(fieldXXXX);
                        MetaDataManager mgr = cmd.getMetaDataManager();
                        AbstractClassMetaData cmd = mgr.getMetaDataForClass(f.getType(),
                            enhancer.getClassLoaderResolver());
                        if (cmd != null)
                        {
                            il.append(
                                factory.createInvoke(
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
                JPOXLogger.JPA.warn(LOCALISER.msg("EMF.NoPersistenceXML"));
                //throw new NoPersistenceXmlException(LOCALISER.msg("EMF.NoPersistenceXML"));
View Full Code Here

TOP

Related Classes of org.jpox.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.