Package org.apache.cayenne.reflect

Examples of org.apache.cayenne.reflect.ClassDescriptor


            DataContextDelegate delegate = context.nonNullDelegate();

            if (delegate.shouldMergeChanges(object, null)) {

                ClassDescriptor descriptor = context
                        .getEntityResolver()
                        .getClassDescriptor(oid.getEntityName());
                descriptor.visitProperties(new PropertyVisitor() {

                    public boolean visitToMany(ToManyProperty property) {
                        property.invalidate(object);
                        return true;
                    }
View Full Code Here


                // perform same steps as resolveHollow()
                if (state == PersistenceState.COMMITTED) {
                    // consult delegate if it exists
                    DataContextDelegate delegate = context.nonNullDelegate();
                    if (delegate.shouldMergeChanges(object, diff)) {
                        ClassDescriptor descriptor = context
                                .getEntityResolver()
                                .getClassDescriptor(((ObjectId) nodeId).getEntityName());

                        // TODO: andrus, 5/26/2006 - call to 'getSnapshot' is expensive,
                        // however my attempts to merge the 'diff' instead of snapshot
                        // via 'refreshObjectWithSnapshot' resulted in even worse
                        // performance.
                        // This sounds counterintuitive (Not sure if this is some HotSpot
                        // related glitch)... still keeping the old algorithm here until
                        // we
                        // switch from snapshot events to GraphEvents and all this code
                        // becomes obsolete.
                        DataRow snapshot = getSnapshot(object.getObjectId());

                        DataRowUtils.refreshObjectWithSnapshot(
                                descriptor,
                                object,
                                snapshot,
                                true);
                        delegate.finishedMergeChanges(object);
                    }
                }
                // merge modified and deleted
                else if (state == PersistenceState.DELETED
                        || state == PersistenceState.MODIFIED) {

                    // consult delegate if it exists
                    DataContextDelegate delegate = context.nonNullDelegate();
                    if (delegate.shouldMergeChanges(object, diff)) {
                        ClassDescriptor descriptor = context
                                .getEntityResolver()
                                .getClassDescriptor(((ObjectId) nodeId).getEntityName());
                        DataRowUtils.forceMergeWithSnapshot(
                                context,
                                descriptor,
View Full Code Here

        }

        // since JDBC row reader won't inject JOINED entity name, we have to
        // detect it here...

        ClassDescriptor descriptor = resolver.getDescriptor();
        ObjEntity entity = descriptor.getEntityInheritanceTree().entityMatchingRow(row);
        row.setEntityName(entity.getName());
        return row;
    }
View Full Code Here

                appendColumn(targetSource, join.getTargetName(), prefix
                        + join.getTargetName());
            }
        }

        ClassDescriptor descriptor = resolver.getDescriptor();

        descriptor.visitAllProperties(new PropertyVisitor() {

            public boolean visitAttribute(AttributeProperty property) {
                String target = property.getAttribute().getDbAttributePath();
                appendColumn(targetSource, target, prefix + target);
                return true;
            }

            public boolean visitToMany(ToManyProperty property) {
                return visitRelationship(property);
            }

            public boolean visitToOne(ToOneProperty property) {
                return visitRelationship(property);
            }

            private boolean visitRelationship(ArcProperty arc) {
                DbRelationship dbRel = arc.getRelationship().getDbRelationships().get(0);
                for (DbAttribute attribute : dbRel.getSourceAttributes()) {
                    String target = attribute.getName();

                    appendColumn(targetSource, target, prefix + target);
                }
                return true;
            }
        });

        // append id columns ... (some may have been appended already via relationships)
        for (String pkName : descriptor.getEntity().getPrimaryKeyNames()) {
            appendColumn(targetSource, pkName, prefix + pkName);
        }

        // append inheritance discriminator columns...
        for (ObjAttribute column : descriptor.getDiscriminatorColumns()) {
            String target = column.getDbAttributePath();
            appendColumn(targetSource, target, prefix + target);
        }

        int size = targetSource.size();
View Full Code Here

    class SingleObjectConversionStrategy extends ObjectConversionStrategy<DataRow> {

        @Override
        void convert(List<DataRow> mainRows) {

            ClassDescriptor descriptor = metadata.getClassDescriptor();
            PrefetchTreeNode prefetchTree = metadata.getPrefetchTree();

            PrefetchProcessorNode node = toResultsTree(descriptor, prefetchTree, mainRows);
            List<Persistent> objects = node.getObjects();
            updateResponse(mainRows, objects != null
View Full Code Here

    public void testServerDescriptorCaching() {
        EntityResolver resolver = getDomain().getEntityResolver();
        resolver.getClassDescriptorMap().clearDescriptors();

        ClassDescriptor descriptor = resolver.getClassDescriptor("MtTable1");
        assertNotNull(descriptor);
        assertSame(descriptor, resolver.getClassDescriptor("MtTable1"));
        resolver.getClassDescriptorMap().clearDescriptors();

        ClassDescriptor descriptor1 = resolver.getClassDescriptor("MtTable1");
        assertNotNull(descriptor1);
        assertNotSame(descriptor, descriptor1);
    }
View Full Code Here

        MockClassDescriptor mockDescriptor = new MockClassDescriptor();
        MockClassDescriptorFactory factory = new MockClassDescriptorFactory(
                mockDescriptor);
        resolver.getClassDescriptorMap().addFactory(factory);
        try {
            ClassDescriptor descriptor = resolver.getClassDescriptor("MtTable1");
            assertNotNull(descriptor);
            descriptor = ((LazyClassDescriptorDecorator) descriptor).getDescriptor();
            assertSame(mockDescriptor, descriptor);
        }
        finally {
View Full Code Here

    public void testArcProperties() {
        EntityResolver resolver = getDomain().getEntityResolver();
        resolver.getClassDescriptorMap().clearDescriptors();

        ClassDescriptor descriptor = resolver.getClassDescriptor("MtTable1");
        assertNotNull(descriptor);

        Property p = descriptor.getProperty(MtTable1.TABLE2ARRAY_PROPERTY);
        assertTrue(p instanceof ArcProperty);

        ClassDescriptor target = ((ArcProperty) p).getTargetDescriptor();
        assertNotNull(target);
        assertSame(resolver.getClassDescriptor("MtTable2"), target);
        assertNotNull(((ArcProperty) p).getComplimentaryReverseArc());
        assertEquals(MtTable2.TABLE1_PROPERTY, ((ArcProperty) p)
                .getComplimentaryReverseArc()
View Full Code Here

     *
     * @param properyName path to the property
     * @return property descriptor, <code>null</code> if not found
     */
    public static Property getProperty(Persistent object, String properyName) {
        ClassDescriptor descriptor = getClassDescriptor(object);
        if (descriptor == null) {
            return null;
        }
        return descriptor.getProperty(properyName);
    }
View Full Code Here

        if (entity == null) {
            throw new CayenneRuntimeException("No entity mapped for class: "
                    + persistentClass);
        }

        ClassDescriptor descriptor = getEntityResolver().getClassDescriptor(
                entity.getName());
        T object = (T) descriptor.createObject();
        registerNewObject((Persistent) object, entity.getName(), descriptor);
        return object;
    }
View Full Code Here

TOP

Related Classes of org.apache.cayenne.reflect.ClassDescriptor

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.