Package org.datanucleus

Examples of org.datanucleus.ClassLoaderResolver


     * NonManagedPluginRegistry cannot handle multiple versions
     * of the same plugin, so it must raise an exception
     */
    public void testDuplicatedBundleSymbolicNameSameOrDifferentVersion()
    {
        ClassLoaderResolver clr = new JDOClassLoaderResolver();
        NonManagedPluginRegistry mgr = new NonManagedPluginRegistry(clr, "EXCEPTION", true);
        mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST1.MF",null));
        try
        {
            mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST1-1.MF",null));
          fail("Expected JPOXException");
        }
        catch(NucleusException ex)
        {
          //expected
View Full Code Here


        catch(NucleusUserException e){}
    }

    public void testRequireBundle()
    {
        ClassLoaderResolver clr = new JDOClassLoaderResolver();
        NonManagedPluginRegistry mgr = new NonManagedPluginRegistry(clr, "EXCEPTION", true);
        assertEquals(0,mgr.getExtensionPoints().length);
        Bundle bundle3 = mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST3.MF",null));
        Bundle bundle4 = mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST4.MF",null));
        Bundle bundle5 = mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST5.MF",null));
        assertEquals(1,bundle3.getRequireBundle().size());
        assertEquals("org.datanucleus.plugin.test4",((Bundle.BundleDescription)bundle3.getRequireBundle().iterator().next()).getBundleSymbolicName());
        assertEquals(0,bundle4.getRequireBundle().size());
        assertEquals(2,bundle5.getRequireBundle().size());
        assertEquals("org.datanucleus.plugin.test6",((Bundle.BundleDescription)bundle5.getRequireBundle().get(0)).getBundleSymbolicName());
View Full Code Here

            public void close(){}
            public void clearFilters(){}
            public void addFilter(Filter arg0){}
       
        });
        ClassLoaderResolver clr = new JDOClassLoaderResolver();
        NonManagedPluginRegistry mgr = new NonManagedPluginRegistry(clr, "EXCEPTION", true);
        assertEquals(0,mgr.getExtensionPoints().length);
        mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST3.MF",null));
        mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST4.MF",null));
        mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST5.MF",null));
        mgr.resolveConstraints();
        try
        {
            assertEquals(2,messages.size());
            assertTrue(messages.contains("Bundle \"org.datanucleus.plugin.test5\" requires \"org.datanucleus.plugin.test6\" but it cannot be resolved."));
View Full Code Here

            public void close(){}
            public void clearFilters(){}
            public void addFilter(Filter arg0){}
       
        });
        ClassLoaderResolver clr = new JDOClassLoaderResolver();
        NonManagedPluginRegistry mgr = new NonManagedPluginRegistry(clr, "EXCEPTION", true);
        assertEquals(0,mgr.getExtensionPoints().length);
        mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST10.MF",null));
        mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST11.MF",null));
        mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST12.MF",null));
        mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST13.MF",null));
        mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST14.MF",null));
        mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST15.MF",null));
        mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST16.MF",null));
        mgr.registerBundle(clr.getResource("/org/datanucleus/samples/plugin/MANIFEST17.MF",null));
        mgr.resolveConstraints();
        try
        {
            assertEquals(3,messages.size());
            assertTrue(messages.contains("Bundle \"org.datanucleus.plugin.test12\" requires \"org.datanucleus.plugin.test11\" version \"(1.2.0.b2\" but the resolved bundle has version \"1.2.0.b2\" which is outside the expected range."));
View Full Code Here

    }

    public Object fetchObjectField(int fieldNumber)
    {
        ExecutionContext ec = sm.getExecutionContext();
        ClassLoaderResolver clr = ec.getClassLoaderResolver();
        AbstractMemberMetaData mmd = sm.getClassMetaData().getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber);
        int relationType = mmd.getRelationType(clr);
        if (relationType == Relation.NONE)
        {
            // Object-based field (non-relation)
            sm.copyFieldsFromObject(value, new int[]{fieldNumber});
            return sm.provideField(fieldNumber);
        }
        else if (mmd.getEmbeddedMetaData() != null)
        {
            // TODO Implement embedded relation objects
        }
        else
        {
            switch (relationType)
            {
                case Relation.ONE_TO_ONE_UNI :
                case Relation.ONE_TO_ONE_BI :
                case Relation.MANY_TO_ONE_BI :
                    final AbstractClassMetaData cmd = sm.getExecutionContext().getMetaDataManager().getMetaDataForClass(mmd.getType(), clr);
                    final NodeList nList = ((Element) node).getElementsByTagName(mmd.getName());
                    if (nList.getLength() == 1)
                    {
                        Object id = ec.getApiAdapter().getNewApplicationIdentityObjectId(clr.classForName(cmd.getFullClassName()), nList.item(0).getFirstChild().getNodeValue());
                        Object related = ec.findObject(id, true, true, null);
                        if (relationType == Relation.ONE_TO_ONE_BI)
                        {
                            // Set other side of relation to avoid reloading
                            ObjectProvider relatedSM = ec.findObjectProvider(related);
                            AbstractMemberMetaData relatedMmd = mmd.getRelatedMemberMetaDataForObject(clr, sm.getObject(), related);
                            relatedSM.replaceField(relatedMmd.getAbsoluteFieldNumber(), sm.getObject());
                        }
                        return related;
                    }
                    return null;

                case Relation.ONE_TO_MANY_UNI :
                case Relation.ONE_TO_MANY_BI :
                    // TODO Cater for Map/array
                    if (mmd.hasCollection())
                    {
                        AbstractClassMetaData cmd2 = sm.getExecutionContext().getMetaDataManager().getMetaDataForClass(mmd.getCollection().getElementType(), clr);

                        // Get value being unmarshalled
                        sm.copyFieldsFromObject(value, new int[]{fieldNumber});
                        Collection collection = (Collection) sm.provideField(fieldNumber);

                        // Make sure we get the right type of element (allow for inheritance)
                        NodeList nLists = ((Element) node).getElementsByTagName(
                            XMLUtils.getElementNameForMember(mmd, FieldRole.ROLE_COLLECTION_ELEMENT));
                        for (int i = 0; i < nLists.getLength(); i++)
                        {
                            final String nodeValue = nLists.item(i).getFirstChild().getNodeValue();
                            if (nodeValue != null && nodeValue.trim().length() > 0)
                            {
                                final AbstractClassMetaData elementCmd = XMLUtils.findMetaDataForNode(doc, cmd2,
                                    ec.getMetaDataManager(), nodeValue, clr);
                                if (elementCmd == null && cmd2 != null)
                                {
                                    throw new NucleusException("Unable to find object of type " + cmd2.getFullClassName() + " with id=" + nodeValue);
                                }

                                Object id = ec.getApiAdapter().getNewApplicationIdentityObjectId(
                                    clr.classForName(elementCmd.getFullClassName()), nodeValue);
                                Object related = ec.findObject(id, true, true, null);
                                if (relationType == Relation.ONE_TO_MANY_BI)
                                {
                                    // Set other side of relation to avoid reloading
                                    ObjectProvider relatedSM = ec.findObjectProvider(related);
View Full Code Here

            last = first+number;

            if (index >= first && index < last)
            {
                // Object is of this candidate type, so find the object
                ClassLoaderResolver clr = ec.getClassLoaderResolver();
                int current = first;
                Element el = null;
                String expression = XMLUtils.getXPathForClass(cmd);
                if (expression == null)
                {
                    el = doc.getDocumentElement();
                }
                else
                {
                    try
                    {
                        el = (Element) xpath.evaluate(expression, doc, XPathConstants.NODE);
                    }
                    catch (XPathExpressionException e)
                    {
                        e.printStackTrace();
                    }
                }

                if (el != null)
                {
                    // Get name of the element that objects of this type are stored under
                    Class cls = clr.classForName(cmd.getFullClassName());
                    String classElementName = XMLUtils.getElementNameForClass(cmd);
                    for (int i = 0; i < el.getChildNodes().getLength(); i++)
                    {
                        if (el.getChildNodes().item(i) instanceof Element)
                        {
View Full Code Here

        useCache = SCOUtils.useContainerCache(ownerSM, fieldName);

        if (!SCOUtils.mapHasSerialisedKeysAndValues(fmd) &&
                fmd.getPersistenceModifier() == FieldPersistenceModifier.PERSISTENT)
        {
            ClassLoaderResolver clr = ec.getClassLoaderResolver();
            this.backingStore = (MapStore)
            ((BackedSCOStoreManager)ec.getStoreManager()).getBackingStoreForField(clr, fmd, java.util.SortedMap.class);
        }

        // Set up our delegate, using a suitable comparator
View Full Code Here

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

        ClassLoaderResolver clr = sm.getExecutionContext().getClassLoaderResolver();
        ApiAdapter api = sm.getExecutionContext().getApiAdapter();
        AbstractMemberMetaData mmd =
            sm.getClassMetaData().getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber);
        int relationType = mmd.getRelationType(clr);
View Full Code Here

        ObjectProvider valueSM = ec.findObjectProvider(value);

        try
        {
            ClassLoaderResolver clr = ec.getClassLoaderResolver();
            MappedStoreManager storeMgr = (MappedStoreManager)ec.getStoreManager();

            // Check if the field is attributed in the datastore
            boolean hasDatastoreAttributedPrimaryKeyValues = hasDatastoreAttributedPrimaryKeyValues(
                ec.getMetaDataManager(), storeMgr, clr);
View Full Code Here

     * @param cmd the AbstractClassMetaData
     * @return the id
     */
    private Object getObjectForAbstractClass(ExecutionContext ec, final Object rs, int[] param, AbstractClassMetaData cmd)
    {
        ClassLoaderResolver clr = ec.getClassLoaderResolver();

        // Abstract class, so we need to generate an AID before proceeding
        Class objectIdClass = clr.classForName(cmd.getObjectidClass());
        Class pcClass = clr.classForName(cmd.getFullClassName());
        Object id;
        if (cmd.usesSingleFieldIdentityClass())
        {
            id = createSingleFieldIdentity(ec, rs, param, cmd, objectIdClass, pcClass);
        }
View Full Code Here

TOP

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