[CODM-31] UnitOfWork#doDetach does not remove a document from the identityMap - uses incorrect index Created: 10/Aug/11  Updated: 15/Aug/11  Resolved: 15/Aug/11

Status: Resolved
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Major
Reporter: Marnus Weststrate Assignee: Benjamin Eberlei
Resolution: Fixed Votes: 0
Labels: None


 Description   

In UnitOfWork on line 656 the oid is used to index the identity map instead of the document id when detaching an object. This is probably due to an incomplete port from the ORM. The following change fixes the bug (I will make the change and request a merge):

Currently:
656: if (isset($this->identityMap[$oid])) {

Should be:
656: if (isset($this->identityMap[$this->documentIdentifiers[$oid]])) {

Further suggestion

Since the document id is guaranteed to be unique would it not be better to do away with the oid completely? It seems the following would be a relatively cheap substitute for the current getDocumentIdentifier() implementation (excluding the check that it is managed which is also currently done in this method):

public function getDocumentIdentifier($document)
{
$class = $this->dm->getClassMetadata(get_class($document));
return $class->getIdentifierValue($document);
}

Then all the arrays in the UnitOfWork can be indexed using the document id and the above method can be called to obtain that wherever spl_object_hash is currently used to obtain the $oid. (Of course, if running spl_object_hash is faster than retrieving the doc id as I suggest above then the current implementation is better.)






[CODM-30] Align naming of Events namespace with other ORM/ODM (aka s/Events/Event) Created: 30/Jul/11  Updated: 30/Jul/11  Resolved: 30/Jul/11

Status: Resolved
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Task Priority: Major
Reporter: Lukas Kahwe Assignee: Benjamin Eberlei
Resolution: Fixed Votes: 0
Labels: None





[CODM-20] Add Caching to ClassMetadata Created: 24/Nov/10  Updated: 24/Nov/10  Resolved: 24/Nov/10

Status: Resolved
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Major
Reporter: Benjamin Eberlei Assignee: Benjamin Eberlei
Resolution: Fixed Votes: 0
Labels: None


 Description   

Metadata is currently parsed on every request.

A caching layer for the ClassMetadata instances has to be implemented to work like in ORM or MongoDB ODM.



 Comments   
Comment by Benjamin Eberlei [ 24/Nov/10 ]

Implemented





Add Cascade Operations to Associations (CODM-13)

[CODM-18] Implement Cascade Remove Created: 24/Nov/10  Updated: 19/Dec/10  Resolved: 19/Dec/10

Status: Resolved
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Sub-task Priority: Major
Reporter: Benjamin Eberlei Assignee: Benjamin Eberlei
Resolution: Fixed Votes: 0
Labels: None


 Comments   
Comment by Benjamin Eberlei [ 19/Dec/10 ]

Implemented





Add Cascade Operations to Associations (CODM-13)

[CODM-17] Implement Cascade Persist Created: 24/Nov/10  Updated: 19/Dec/10  Resolved: 19/Dec/10

Status: Resolved
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Sub-task Priority: Major
Reporter: Benjamin Eberlei Assignee: Benjamin Eberlei
Resolution: Fixed Votes: 0
Labels: None


 Description   

Implement Cascade Persist



 Comments   
Comment by Benjamin Eberlei [ 19/Dec/10 ]

Implemented





Add Cascade Operations to Associations (CODM-13)

[CODM-16] Implement Cascade Detach Created: 24/Nov/10  Updated: 21/May/11  Resolved: 21/May/11

Status: Resolved
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Sub-task Priority: Major
Reporter: Benjamin Eberlei Assignee: Benjamin Eberlei
Resolution: Fixed Votes: 0
Labels: None


 Description   

Implement Cascade Detach






Add Cascade Operations to Associations (CODM-13)

[CODM-15] Implement Cascade Merge Created: 24/Nov/10  Updated: 14/Feb/11  Resolved: 14/Feb/11

Status: Resolved
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Sub-task Priority: Major
Reporter: Benjamin Eberlei Assignee: Benjamin Eberlei
Resolution: Fixed Votes: 0
Labels: None


 Description   

Implement Cascade Merge



 Comments   
Comment by Benjamin Eberlei [ 24/Nov/10 ]

This is mostly done, only missing the "persist by reachibility" checks that are necessary in computeChangeSet().

Comment by Benjamin Eberlei [ 14/Feb/11 ]

Seems done!





[CODM-23] Add support for @EmbedMany and @EmbedOne Created: 24/Nov/10  Updated: 20/May/11  Resolved: 20/May/11

Status: Resolved
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: New Feature Priority: Major
Reporter: Benjamin Eberlei Assignee: Benjamin Eberlei
Resolution: Fixed Votes: 0
Labels: None


 Description   

We need support for nested value objects through the @EmbedMany and @EmbedOne annotations.



 Comments   
Comment by Bártfai Tamás [ 20/Mar/11 ]

This is fixed in the master now.





[CODM-12] Add DocumentManager::merge() and DocumentManager::detach() Created: 22/Nov/10  Updated: 21/May/11  Resolved: 21/May/11

Status: Resolved
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: New Feature Priority: Major
Reporter: Benjamin Eberlei Assignee: Benjamin Eberlei
Resolution: Fixed Votes: 0
Labels: None


 Description   

Add DocumentManager::merge() and DocumentManager::detach()



 Comments   
Comment by Benjamin Eberlei [ 21/May/11 ]

Implemented





[CODM-11] Add Query API for couch-lucene Created: 22/Nov/10  Updated: 04/Dec/10  Resolved: 04/Dec/10

Status: Resolved
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: New Feature Priority: Major
Reporter: Benjamin Eberlei Assignee: Benjamin Eberlei
Resolution: Fixed Votes: 0
Labels: None


 Description   

Couch-Lucene is a very nice tool to enhance CouchDB with lucence query api natively:

https://github.com/rnewson/couchdb-lucene



 Comments   
Comment by Benjamin Eberlei [ 04/Dec/10 ]

Implemented





[CODM-9] implement lazy loading Created: 21/Sep/10  Updated: 03/Oct/10  Resolved: 03/Oct/10

Status: Resolved
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Major
Reporter: Lukas Kahwe Assignee: Benjamin Eberlei
Resolution: Fixed Votes: 0
Labels: None


 Comments   
Comment by Benjamin Eberlei [ 03/Oct/10 ]

Implemented for Collections and PRoxies.





[CODM-6] add support for a query api Created: 21/Sep/10  Updated: 03/Oct/10  Resolved: 03/Oct/10

Status: Resolved
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Major
Reporter: Lukas Kahwe Assignee: Benjamin Eberlei
Resolution: Fixed Votes: 0
Labels: None


 Description   

query view's, add limit/sort order/include_docs option etc.



 Comments   
Comment by Benjamin Eberlei [ 03/Oct/10 ]

Implemented





[CODM-2] add annotation/xml/yml support for metadata definition Created: 21/Sep/10  Updated: 21/May/11  Resolved: 21/May/11

Status: Resolved
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Major
Reporter: Lukas Kahwe Assignee: Benjamin Eberlei
Resolution: Fixed Votes: 0
Labels: None


 Comments   
Comment by Benjamin Eberlei [ 02/Oct/10 ]

This issue raises the question: What set of metadata do we support?

Obvious are the ones that are primitive json types:

@String
@Float
@Integer
@Array
@Boolean

Then primitive types that need conversion:

@Date

Then CouchDB specific stuff:

@Id
@Version

On the Entity Class

@Document - Without arguments

References:

@ReferenceMany(targetDocument=..)
@ReferenceOne(targetDocument=..)
@EmbedMany(targetDocument=..)
@EmbedOne(targetDocument=..)

Attachments:

@Attachments - All attachments of the Document indexed by name (Should be wrapped by an attachment collection or something)
@Attachment - A special attachment accessible through this field name, null if not exists
Comment by Benjamin Eberlei [ 21/May/11 ]

Implemented Yaml and XML Metadata Drivers





[CODM-4] add many2many support Created: 21/Sep/10  Updated: 03/Oct/10  Resolved: 03/Oct/10

Status: Resolved
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Major
Reporter: Lukas Kahwe Assignee: Benjamin Eberlei
Resolution: Fixed Votes: 0
Labels: None


 Comments   
Comment by Benjamin Eberlei [ 03/Oct/10 ]

Implemented





[CODM-3] add many2one support Created: 21/Sep/10  Updated: 03/Oct/10  Resolved: 03/Oct/10

Status: Resolved
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Major
Reporter: Lukas Kahwe Assignee: Benjamin Eberlei
Resolution: Fixed Votes: 0
Labels: None


 Comments   
Comment by Benjamin Eberlei [ 03/Oct/10 ]

Implemented





[CODM-37] Github-PR-22 by marnusw: Fixed Document annotation identification bug Created: 25/Aug/11  Updated: 25/Aug/11

Status: Open
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Major
Reporter: Benjamin Eberlei Assignee: Benjamin Eberlei
Resolution: Unresolved Votes: 0
Labels: None


 Description   

This issue is created automatically through a Github pull request on behalf of

{username}

:

Url: https://github.com/doctrine/couchdb-odm/pull/22

Message:

In AnnotationDriver#loadMetadataForClass() it was incorrectly assumed that an array of annotations indexed by annotation name was returned; in fact a numerically indexed array is received. This patch fixes the identification of the annotations that are present.

Since only one Document realted annotation should be present the method now also throws an exception if more than one is found. (One could just use the first annotation, but this may cause confusion when debugging.)

Not sure if this was the only outstanding problem related to issue CODM-28 but I think it was related.






[CODM-36] Github-PR-23 by marnusw: Added UpdateAllDesignDocsCommand so all new/modified design docs can be added in one go Created: 25/Aug/11  Updated: 25/Aug/11

Status: Open
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Major
Reporter: Benjamin Eberlei Assignee: Benjamin Eberlei
Resolution: Unresolved Votes: 0
Labels: None


 Description   

This issue is created automatically through a Github pull request on behalf of

{username}

:

Url: https://github.com/doctrine/couchdb-odm/pull/23

Message:

The UpdateAllDesignDocsCommand checks which design documents have changed and updates only those and also pushes new design docs to the db. A method for retrieving the registered design doc names was added to the Configuration class since this is needed when checking which docs have been modified.

It took me quite a while to figure out that I should be using the couchdb:odm:update-design-doc command to write the ODM design docs which are included in the config by default to the db. I think the presence of this command would make it clearer that it could be run to sort out any missing design docs.

I also reckon it may become a bit tedious to add each modified doc individually, now they can be updated in one go.






[CODM-28] Adjust to new Annotation Reader Created: 25/Jun/11  Updated: 10/Aug/11

Status: Open
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Major
Reporter: Benjamin Eberlei Assignee: Benjamin Eberlei
Resolution: Unresolved Votes: 0
Labels: None


 Comments   
Comment by Marnus Weststrate [ 10/Aug/11 ]

I obtained the latest build from git://github.com/doctrine/couchdb-odm.git so this is an active bug which I believe is related to this issue.

The Doctrine\ODM\CouchDB\Mapping\Driver\AnnotationDriver produced the exception Class Test is not a valid document or mapped super class for even the most basic document with an Id and one Field. The exception was thrown on line 122 of the above class.

The problem:
In the code segment:
108: $classAnnotations = $this->reader->getClassAnnotations($reflClass);
109: if (isset($classAnnotations['Doctrine\ODM\CouchDB\Mapping\Document']))
the getClassAnnotations method does not return an array of annotations indexed by annotation names, it uses numeric indexes. This causes the if-statements to always fail and thus the exception is thrown.

A temporary workaround:
108: $classAnnotations = $this->reader->getClassAnnotations($reflClass);
Add: $classAnnotations = $classAnnotations[0];
109: if ($classAnnotations instanceof \Doctrine\ODM\CouchDB\Mapping\Document) {
110: $documentAnnot = $classAnnotations;
Rather than checking for the proper index verify the class of the annotation object (Similar to the handling of $fieldAnnot following this code block). This approach assumes that the @Document annotation is the first Doctrine related annotation in the class doc block (which is fine, since it is the only one that should be used). Standard annotations such as @author can precede the @Document one since these are ignored by the getClassAnnotations method. The same changes should be applied to all the if statements up to line 120.





[CODM-27] Removing reference fails, no _rev set Created: 23/Jun/11  Updated: 23/Jun/11

Status: Open
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Major
Reporter: Benjamin Eberlei Assignee: Benjamin Eberlei
Resolution: Unresolved Votes: 0
Labels: None


 Description   

Removing a reference fails because _rev is not set.






[CODM-26] Detect usage of inverse collection with unsupported metadata resolvers Created: 13/Feb/11  Updated: 13/Feb/11

Status: Open
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Major
Reporter: Benjamin Eberlei Assignee: Benjamin Eberlei
Resolution: Unresolved Votes: 0
Labels: None


 Description   

Inverse collections are only supported when using the doctrine metadata resolver. ClassMetadataFactory should already throw an exception here if misused.






[CODM-21] Add support to stream attachments Created: 24/Nov/10  Updated: 24/Nov/10

Status: Open
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Major
Reporter: Benjamin Eberlei Assignee: Benjamin Eberlei
Resolution: Unresolved Votes: 0
Labels: None


 Description   

Currently attachments are handled in memory if accessed through the attachment proxy. This can be rather expensive in cases and we should allow HTTP Clients to stream requests and use this functionality for the attachments.






Add Cascade Operations to Associations (CODM-13)

[CODM-19] Implement Cascade Refresh Created: 24/Nov/10  Updated: 24/Nov/10

Status: Open
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Sub-task Priority: Major
Reporter: Benjamin Eberlei Assignee: Benjamin Eberlei
Resolution: Unresolved Votes: 0
Labels: None


 Description   

Implement Cascade Refresh






[CODM-25] Add inheritance support Created: 24/Nov/10  Updated: 24/Nov/10

Status: Open
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: New Feature Priority: Major
Reporter: Benjamin Eberlei Assignee: Benjamin Eberlei
Resolution: Unresolved Votes: 0
Labels: None


 Description   

Support inheritance of objects.






[CODM-24] Add MappedSuperclass support Created: 24/Nov/10  Updated: 24/Nov/10

Status: Open
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: New Feature Priority: Major
Reporter: Benjamin Eberlei Assignee: Benjamin Eberlei
Resolution: Unresolved Votes: 0
Labels: None


 Description   

As a first step to support inheritance we need support for mapped superclasses.






[CODM-22] Finish CouchDBClient Created: 24/Nov/10  Updated: 24/Nov/10

Status: Open
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Major
Reporter: Benjamin Eberlei Assignee: Benjamin Eberlei
Resolution: Unresolved Votes: 0
Labels: None


 Description   

The CouchDBClient should implement all important CouchDB API functionality in simple method calls.






[CODM-13] Add Cascade Operations to Associations Created: 22/Nov/10  Updated: 22/Nov/10

Status: Open
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: New Feature Priority: Major
Reporter: Benjamin Eberlei Assignee: Benjamin Eberlei
Resolution: Unresolved Votes: 0
Labels: None

Sub-Tasks:
Key
Summary
Type
Status
Assignee
CODM-15 Implement Cascade Merge Sub-task Resolved Benjamin Eberlei  
CODM-16 Implement Cascade Detach Sub-task Resolved Benjamin Eberlei  
CODM-17 Implement Cascade Persist Sub-task Resolved Benjamin Eberlei  
CODM-18 Implement Cascade Remove Sub-task Resolved Benjamin Eberlei  
CODM-19 Implement Cascade Refresh Sub-task Open Benjamin Eberlei  

 Description   

Add Cascade Operations to Associations






[CODM-14] Add Value Object Support Created: 22/Nov/10  Updated: 20/Mar/11

Status: Open
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: New Feature Priority: Major
Reporter: Benjamin Eberlei Assignee: Benjamin Eberlei
Resolution: Unresolved Votes: 0
Labels: None


 Description   

Add Value Object Support:

Need an annotation that allows to specify value objects. Need mechanism to serialize/deserialize deeply nested value objects or arrays of value objects in UnitOfWork()



 Comments   
Comment by Bártfai Tamás [ 20/Mar/11 ]

Is this issue is a duplicate of CODM-23?





[CODM-10] Optimistic Locking and Version Field Created: 02/Oct/10  Updated: 02/Oct/10

Status: Open
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: New Feature Priority: Major
Reporter: Benjamin Eberlei Assignee: Benjamin Eberlei
Resolution: Unresolved Votes: 0
Labels: None


 Description   

The Version field should be an instance of the CouchDB document revision on the document class. It should be updated on flushes and be usable on find by id methods to check for optimistic locking.






[CODM-7] add support to import CouchDB validation rules into the model definition Created: 21/Sep/10  Updated: 22/Sep/10

Status: Open
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Major
Reporter: Lukas Kahwe Assignee: Benjamin Eberlei
Resolution: Unresolved Votes: 0
Labels: None


 Description   

http://guide.couchdb.org/draft/validation.html

See CODM-8






[CODM-8] add support to export validation rules in the model to CouchDB Created: 21/Sep/10  Updated: 22/Sep/10

Status: Open
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Major
Reporter: Lukas Kahwe Assignee: Benjamin Eberlei
Resolution: Unresolved Votes: 0
Labels: None


 Description   

http://guide.couchdb.org/draft/validation.html

See CODM-7






[CODM-1] Add converions according to $class->properties[$name]['type'] Created: 21/Sep/10  Updated: 21/Sep/10

Status: Open
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Major
Reporter: Lukas Kahwe Assignee: Benjamin Eberlei
Resolution: Unresolved Votes: 0
Labels: None


 Description   

In the ORM we have the Doctrine\DBAL\Types namespace that we have to mirror to Doctrine\ODM\CouchDB\Types. Methods would have to be "convertPhpToJsonValue()" and "convertJsonToPhpValue()" that need to be called during hydration and saving inside the Persister.

Possible Types for now:

  • String (this is both VARCHAR + CLOB of DBs)
  • Integer
  • Array (uncasted values)
  • Float/Double * Boolean





[CODM-5] add support for defining view's in the model Created: 21/Sep/10  Updated: 21/Sep/10

Status: Open
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Major
Reporter: Lukas Kahwe Assignee: Benjamin Eberlei
Resolution: Unresolved Votes: 0
Labels: None





[CODM-29] Install instructions - git clone local folder misnamed. Created: 27/Jul/11  Updated: 10/Aug/11

Status: Open
Project: Doctrine CouchDB ODM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Documentation Priority: Trivial
Reporter: Marnus Weststrate Assignee: Benjamin Eberlei
Resolution: Unresolved Votes: 0
Labels: None
Environment:

N/A



 Description   

On the CouchDb ODM install instructions
(http://www.doctrine-project.org/projects/couchdb_odm/1.0/download/1.0.0ALPHA1)
you have the following line to clone the git repository which specifies a local folder "mongodb_odm" instead of "couchdb_odm".
Just a minor inconvenience when copy and pasting from the site.

Current:

$ git clone git://github.com/doctrine/couchdb-odm.git mongodb_odm

Should be:

$ git clone git://github.com/doctrine/couchdb-odm.git couchdb_odm






Generated at Tue Sep 30 10:13:20 UTC 2014 using JIRA 6.2.3#6260-sha1:63ef1d6dac3f4f4d7db4c1effd405ba38ccdc558.