Package org.jpox

Examples of org.jpox.ClassLoaderResolver


    public ResultObjectFactory newResultObjectFactory(StateManager sm,
                                                            QueryExpression stmt,
                                                            boolean ignoreCache,
                                                            boolean useFetchPlan)
    {
        ClassLoaderResolver clr = sm.getObjectManager().getClassLoaderResolver();
        // TODO Allow for more than just the first elementTable (currently take the columns to select from the first element table only)
        if (elementsAreEmbedded || elementsAreSerialised)
        {
            return new PersistentIDROF(null , null, emd, null, null, null, ignoreCache, false,
                stmt.hasMetaDataExpression(), null, clr.classForName(elementType));
        }
        else if (elementMapping instanceof ReferenceMapping)
        {
            // Element = Reference (Interface/Object)
            // TODO Respect any fetch plan for the implementation class
            // This selects the id column(s) in the join table of all implementations of the reference type
            // It is processed by ReferenceMapping where it decides which of the implementation types is stored in this row.
            JavaTypeMapping[] implMappings = ((ReferenceMapping)elementMapping).getJavaTypeMapping();
            for (int i=0;i<implMappings.length;i++)
            {
                stmt.select(implMappings[i]);
            }

            return new PersistentIDROF(elementInfo != null ? elementInfo[0].getDatastoreClass() : null, null, emd,
                    null, null, null, ignoreCache, false,
                    stmt.hasMetaDataExpression(), null, clr.classForName(elementType));
        }
        else
        {
            // Element = PC
            int[] datastoreIndex = null;
            int[] versionIndex = null;

            // Select any datastore/version columns
            if (stmt.getTableExpression(elmIdentifier) != null)
            {
                if (elementInfo[0].getDatastoreClass().getIdentityType() == IdentityType.DATASTORE)
                {
                    datastoreIndex = stmt.select(elmIdentifier, elementInfo[0].getDatastoreClass().getDataStoreObjectIdMapping(), true);
                }
                JavaTypeMapping verMapping = elementInfo[0].getDatastoreClass().getVersionMapping(true);
                if (verMapping != null)
                {
                    versionIndex = stmt.select(elmIdentifier, verMapping, true);
                }
            }
            else
            {
                if (elementInfo[0].getDatastoreClass().getIdentityType() == IdentityType.DATASTORE)
                {
                    datastoreIndex = stmt.select(stmt.getMainTableAlias(),
                        elementInfo[0].getDatastoreClass().getDataStoreObjectIdMapping(),true);
                }
                JavaTypeMapping verMapping = elementInfo[0].getDatastoreClass().getVersionMapping(true);
                if (verMapping != null)
                {
                    versionIndex = stmt.select(stmt.getMainTableAlias(), verMapping, true);
                }
            }

            StatementExpressionIndex[] statementExpressionIndex = null;
            int[] prefetchFieldNumbers = null;
            if (useFetchPlan)
            {
                // Select the FetchPlan fields
                FetchPlan fp = sm.getObjectManager().getFetchPlan();
                fp.manageFetchPlanForClass(emd);
                FetchPlanForClass fpc = fp.getFetchPlanForClass(emd);
                int fieldNumbers[] = fpc.getFieldsInActualFetchPlan();
                int fn[] = new int[fieldNumbers.length];
                int prefetchFieldCount = 0;
                int fieldCount = emd.getNoOfInheritedManagedMembers() + emd.getNoOfManagedMembers();

                statementExpressionIndex = new StatementExpressionIndex[fieldCount];
                for (int i=0; i<fieldNumbers.length; ++i)
                {
                    AbstractMemberMetaData fmd = emd.getMetaDataForManagedMemberAtAbsolutePosition(fieldNumbers[i]);
                    if (fmd.getPersistenceModifier() == FieldPersistenceModifier.PERSISTENT)
                    {
                        JavaTypeMapping m = elementInfo[0].getDatastoreClass().getFieldMapping(fmd);
                        if (m != null) // Field is not a Collection, List, Map, etc so has a datastore mapping
                        {
                            if (m.includeInFetchStatement() && !(m instanceof AbstractContainerMapping))
                            {
                                statementExpressionIndex[fieldNumbers[i]] = new StatementExpressionIndex();
                                statementExpressionIndex[fieldNumbers[i]].setMapping(m);
                                fn[prefetchFieldCount++] = fieldNumbers[i];
                            }
                        }
                    }
                }
               
                prefetchFieldNumbers = new int[prefetchFieldCount];
                System.arraycopy(fn, 0, prefetchFieldNumbers, 0, prefetchFieldCount);
            }
            else
            {
                // if no fetchplan is used and is application identity, select only PK fields
                if (emd.getIdentityType() == IdentityType.APPLICATION)
                {
                    prefetchFieldNumbers = new int[emd.getPKMemberPositions().length];
                    int fieldCount = emd.getNoOfInheritedManagedMembers() + emd.getNoOfManagedMembers();
                    statementExpressionIndex = new StatementExpressionIndex[fieldCount];
                    for (int i = 0; i < prefetchFieldNumbers.length; ++i)
                    {
                        prefetchFieldNumbers[i] = emd.getPKMemberPositions()[i];
                        AbstractMemberMetaData fmd = emd.getMetaDataForManagedMemberAtAbsolutePosition(prefetchFieldNumbers[i]);
                        if (fmd.getPersistenceModifier() == FieldPersistenceModifier.PERSISTENT)
                        {
                            JavaTypeMapping m = elementInfo[0].getDatastoreClass().getFieldMapping(fmd);
                            if (m != null) // Field is not a Collection, List, Map, etc so has a datastore mapping
                            {
                                if (m.includeInFetchStatement() && !(m instanceof AbstractContainerMapping))
                                {
                                    statementExpressionIndex[prefetchFieldNumbers[i]] = new StatementExpressionIndex();
                                    statementExpressionIndex[prefetchFieldNumbers[i]].setMapping(m);
                                }
                            }
                        }
                    }
                }
            }

            if (stmt.getTableExpression(elmIdentifier) != null)
            {
                Mappings.selectMapping(stmt, elmIdentifier, statementExpressionIndex);
            }
            else
            {
                Mappings.selectMapping(stmt, statementExpressionIndex);
            }

            return new PersistentIDROF(elementInfo != null ? elementInfo[0].getDatastoreClass() : null,
                prefetchFieldNumbers, emd, statementExpressionIndex, datastoreIndex, versionIndex,
                ignoreCache, iterateUsingDiscriminator,
                stmt.hasMetaDataExpression(), null, clr.classForName(elementType));
        }
    }
View Full Code Here


     * @return Pooling type to use
     */
    private String getPoolingType(PersistenceConfiguration config)
    {
        String poolingType = config.getStringProperty("org.jpox.connectionPoolingType");
        ClassLoaderResolver clr = omfContext.getClassLoaderResolver(null);

        if (poolingType == null)
        {
            // Check if DBCP available
            try
            {
                // Need jpox-dbcp, commons-dbcp, commons-pool, commons-collections
                clr.classForName("org.jpox.store.rdbms.datasource.dbcp.DBCPDataSourceFactory");
                clr.classForName("org.apache.commons.pool.ObjectPool");
                clr.classForName("org.apache.commons.dbcp.ConnectionFactory");
                poolingType = "DBCP";
            }
            catch (ClassNotResolvedException cnre)
            {
                // DBCP not available
            }
        }
        if (poolingType == null)
        {
            // Check if C3P0 is available
            try
            {
                // Need jpox-c3p0, c3p0
                clr.classForName("org.jpox.store.rdbms.datasource.c3p0.C3P0DataSourceFactory");
                clr.classForName("com.mchange.v2.c3p0.ComboPooledDataSource");
                poolingType = "C3P0";
            }
            catch (ClassNotResolvedException cnre)
            {
                // C3P0 not available
            }
        }
        if (poolingType == null)
        {
            // Check if Proxool is available
            try
            {
                // Need jpox-proxool, proxool, commons-logging
                clr.classForName("org.jpox.store.rdbms.datasource.proxool.ProxoolDataSourceFactory");
                clr.classForName("org.logicalcobwebs.proxool.ProxoolDriver");
                clr.classForName("org.apache.commons.logging.Log");
                poolingType = "Proxool";
            }
            catch (ClassNotResolvedException cnre)
            {
                // Proxool not available
View Full Code Here

            // Make sure the field java types are compatible
            Class fieldStoredJavaTypeClass = null;
            Class existingColStoredJavaTypeClass = null;
            try
            {
                ClassLoaderResolver clr = storeMgr.getOMFContext().getClassLoaderResolver(null);
                fieldStoredJavaTypeClass = clr.classForName(storedJavaType);
                existingColStoredJavaTypeClass = clr.classForName(col.getStoredJavaType());
            }
            catch (RuntimeException cnfe)
            {
                // Do nothing
            }
View Full Code Here

        if (elementInfo == null)
        {
            return null;
        }

        final ClassLoaderResolver clr = ownerSM.getObjectManager().getClassLoaderResolver();
        QueryExpression stmt = null;
        if (elementInfo.length == 1 &&
            elementInfo[0].getDatastoreClass().getDiscriminatorMetaData() != null &&
            elementInfo[0].getDatastoreClass().getDiscriminatorMetaData().getStrategy() != DiscriminatorStrategy.NONE)
        {
            if (storeMgr.getOMFContext().getTypeManager().isReferenceType(clr.classForName(ownerMemberMetaData.getCollection().getElementType())))
            {               
                // Take the metadata for the first implementation of the reference type
                String[] clsNames = storeMgr.getOMFContext().getMetaDataManager().getClassesImplementingInterface(ownerMemberMetaData.getCollection().getElementType(), clr);
                Class[] cls = new Class[clsNames.length];
                for( int i=0; i<clsNames.length; i++)
                {
                    cls[i] = clr.classForName(clsNames[i]);
                }
                stmt = new DiscriminatorIteratorStatement(clr,
                    cls, true, this.storeMgr, true).getQueryStatement(null);
            }
            else
            {
                stmt = new DiscriminatorIteratorStatement(clr, new Class[] {clr.classForName(elementInfo[0].getClassName())},
                    true, this.storeMgr, true).getQueryStatement(null);
            }
            iterateUsingDiscriminator = true;
        }
        else
        {
            for (int i=0;i<elementInfo.length;i++)
            {
                final int elementNo = i;
                Class elementCls = clr.classForName(elementType);
                QueryExpression subStmt = new UnionIteratorStatement(
                    clr, elementCls, true, this.storeMgr,
                    elementCls, elementMapping, elementInfo[elementNo].getDatastoreClass(), false,
                    null, true, false).getQueryStatement(null);
                if (stmt == null)
View Full Code Here

        if (!sm.getObjectManager().getClassLoaderResolver().isAssignableFrom(elementType,candidateClass))
        {
            throw new IncompatibleQueryElementTypeException(elementType, candidateClass);
        }

        ClassLoaderResolver clr = sm.getObjectManager().getClassLoaderResolver();
        DatastoreClass candidateTable = storeMgr.getDatastoreClass(candidateClass, clr);

        // QueryStatement for the element table
        QueryExpression stmt = dba.newQueryStatement(candidateTable, clr);
View Full Code Here

            Class filteredElementType,
            ScalarExpression elementExpr,
            DatastoreIdentifier elementTableAlias,
            boolean existsQuery)
    {
        ClassLoaderResolver clr = stmt.getClassLoaderResolver();
        if (!clr.isAssignableFrom(elementType, filteredElementType) &&
            !clr.isAssignableFrom(filteredElementType, elementType))
        {
            throw new IncompatibleQueryElementTypeException(elementType, filteredElementType.getName());
        }
        DatastoreContainerObject filteredElementTable = storeMgr.getDatastoreClass(filteredElementType.getName(), clr);
View Full Code Here

            {
            }

            Class cls = (subqueryCandidateExprRootAliasInfo != null ?
                    subqueryCandidateExprRootAliasInfo.cls : parentExpr.getCandidateClass());
            ClassLoaderResolver clr = query.getObjectManager().getClassLoaderResolver();
            MetaDataManager mmgr = query.getObjectManager().getMetaDataManager();
            MappedStoreManager storeMgr = (MappedStoreManager)query.getStoreManager();
            AbstractClassMetaData leftCmd = mmgr.getMetaDataForClass(cls, clr);
            LogicSetExpression leftTblExpr = (subqueryCandidateExprRootAliasInfo != null ?
                    subqueryCandidateExprRootAliasInfo.tableExpression : parentExpr.getMainTableExpression());
            String leftAlias = (subqueryCandidateExprRootAliasInfo != null ?
                    subqueryCandidateExprRootAliasInfo.alias : parentExpr.getCandidateAlias());
            DatastoreClass leftTable = (DatastoreClass)leftTblExpr.getMainTable();
            for (int i=1;i<tokens.length;i++)
            {
                // Process the join from the previous token to this token
                AbstractMemberMetaData leftMmd = leftCmd.getMetaDataForMember(tokens[i]);
                AbstractClassMetaData rightCmd = null;
                int relationType = leftMmd.getRelationType(clr);
                AbstractMemberMetaData rightMmd = null;
                if (relationType == Relation.ONE_TO_ONE_BI || relationType == Relation.ONE_TO_MANY_BI ||
                    relationType == Relation.MANY_TO_MANY_BI || relationType == Relation.MANY_TO_ONE_BI)
                {
                    rightMmd = leftMmd.getRelatedMemberMetaData(clr)[0]; // Take first possible
                }

                // Find class of right hand side
                if (i == tokens.length-1)
                {
                    cls = candidateClass;
                }
                else
                {
                    if (relationType == Relation.ONE_TO_ONE_BI ||
                        relationType == Relation.ONE_TO_ONE_UNI ||
                        relationType == Relation.MANY_TO_ONE_BI)
                    {
                        cls = leftMmd.getType();
                        rightCmd = mmgr.getMetaDataForClass(cls, clr);
                    }
                    else if (relationType == Relation.ONE_TO_MANY_BI ||
                        relationType == Relation.ONE_TO_MANY_UNI ||
                        relationType == Relation.MANY_TO_MANY_BI)
                    {
                        if (leftMmd.hasCollection())
                        {
                            cls = clr.classForName(leftMmd.getCollection().getElementType());
                            rightCmd = mmgr.getMetaDataForClass(cls, clr);
                        }
                        else if (leftMmd.hasMap())
                        {
                            cls = clr.classForName(leftMmd.getMap().getValueType());
                            rightCmd = mmgr.getMetaDataForClass(cls, clr);
                        }
                    }
                    else
                    {
View Full Code Here

        if (elementInfo == null || elementInfo.length == 0)
        {
            return null;
        }

        final ClassLoaderResolver clr = ownerSM.getObjectManager().getClassLoaderResolver();
        QueryExpression stmt = null;
        if (elementInfo[0].getDatastoreClass().getDiscriminatorMetaData() != null &&
            elementInfo[0].getDatastoreClass().getDiscriminatorMetaData().getStrategy() != DiscriminatorStrategy.NONE)
        {
            //when one uses discriminator, all must have
            if (storeMgr.getOMFContext().getTypeManager().isReferenceType(
                clr.classForName(ownerMemberMetaData.getCollection().getElementType())))
            {               
                // Take the metadata for the first implementation of the reference type
                String[] clsNames =
                    storeMgr.getOMFContext().getMetaDataManager().getClassesImplementingInterface(
                        ownerMemberMetaData.getCollection().getElementType(), clr);
                Class[] cls = new Class[clsNames.length];
                for( int i=0; i<clsNames.length; i++)
                {
                    cls[i] = clr.classForName(clsNames[i]);
                }
                stmt = new DiscriminatorIteratorStatement(clr,
                    cls, true, this.storeMgr, true).getQueryStatement(null);
            }
            else
            {
                stmt = new DiscriminatorIteratorStatement(clr, new Class[] {clr.classForName(elementInfo[0].getClassName())},
                    true, this.storeMgr, true).getQueryStatement(null);
            }
            iterateUsingDiscriminator = true;
        }
        else
        {
            for (int i=0;i<elementInfo.length;i++)
            {
                final Class elementCls = clr.classForName(this.elementInfo[i].getClassName());
                final int elementNo = i;
                QueryExpression subStmt = new UnionIteratorStatement(clr, elementCls, true, this.storeMgr,
                    elementCls, elementMapping, elementInfo[elementNo].getDatastoreClass(), false,
                    null, true, false).getQueryStatement(null);
                if (stmt == null)
View Full Code Here

        if (!sm.getObjectManager().getClassLoaderResolver().isAssignableFrom(elementType, candidateClass))
        {
            throw new IncompatibleQueryElementTypeException(elementType, candidateClass);
        }

        ClassLoaderResolver clr = sm.getObjectManager().getClassLoaderResolver();
        DatastoreContainerObject candidateTable = storeMgr.getDatastoreClass(candidateClass, clr);

        // QueryStatement for the element table
        QueryExpression stmt = dba.newQueryStatement(candidateTable, clr);
View Full Code Here

            Class filteredElementType,
            ScalarExpression elementExpr,
            DatastoreIdentifier elementTableAlias,
            boolean existsQuery)
    {
        ClassLoaderResolver clr = stmt.getClassLoaderResolver();
        if (!clr.isAssignableFrom(elementType, filteredElementType) &&
            !clr.isAssignableFrom(filteredElementType, elementType))
        {
            throw new IncompatibleQueryElementTypeException(elementType, filteredElementType.getName());
        }
        DatastoreContainerObject filteredElementTable = storeMgr.getDatastoreClass(filteredElementType.getName(), clr);
View Full Code Here

TOP

Related Classes of org.jpox.ClassLoaderResolver

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.