<!-- 
RSS generated by JIRA (5.2.7#850-sha1:b2af0c8dc8537b36121c6a579fabbdf79fc919e5) at Fri May 24 22:36:16 UTC 2013

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary add field=key&field=summary to the URL of your request.
For example:
http://www.doctrine-project.org/jira/si/jira.issueviews:issue-xml/DCOM-168/DCOM-168.xml?field=key&field=summary
-->
<rss version="0.92" >
<channel>
    <title>Doctrine Project</title>
    <link>http://www.doctrine-project.org/jira</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>5.2.7</version>
        <build-number>850</build-number>
        <build-date>21-02-2013</build-date>
    </build-info>

<item>
            <title>[DCOM-168] ignoredAnnotationNames doesn&apos;t work in Annotation loop</title>
                <link>http://www.doctrine-project.org/jira/browse/DCOM-168</link>
                <project id="10043" key="DCOM">Doctrine Common</project>
                        <description>&lt;p&gt;I&apos;m just starting out with Doctrine, so my setup is a bit messy, but hopefully someone can figure out what is relevant from all my code.&lt;/p&gt;

&lt;p&gt;Basically, I&apos;m using Annotations on Doctrine ORM, and am integrating with Gedmo for several of their extensions.&lt;/p&gt;

&lt;p&gt;I can run the CLI tool and update the schema, but when running via my web server, I&apos;m getting the following error:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
object(Doctrine\Common\Annotations\AnnotationException)[150]
  &lt;span class=&quot;code-keyword&quot;&gt;protected&lt;/span&gt; &apos;message&apos; =&amp;gt; string &apos;[Semantical Error] The annotation &lt;span class=&quot;code-quote&quot;&gt;&quot;@Entity&quot;&lt;/span&gt; in class Innertube\Models\Device was never imported. Did you maybe forget to add a &lt;span class=&quot;code-quote&quot;&gt;&quot;use&quot;&lt;/span&gt; statement &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; annotation?&apos; (length=163)
  &lt;span class=&quot;code-keyword&quot;&gt;private&lt;/span&gt; &apos;string&apos; (Exception) =&amp;gt; string &apos;&apos; (length=0)
  &lt;span class=&quot;code-keyword&quot;&gt;protected&lt;/span&gt; &apos;code&apos; =&amp;gt; &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; 0
  &lt;span class=&quot;code-keyword&quot;&gt;protected&lt;/span&gt; &apos;file&apos; =&amp;gt; string &apos;/Users/jshannon/Documents/Work/Projects/InnerTube/Repo/web/packages/lerteco_innertube/libraries/lerteco_framework/libraries/vendor-composer/doctrine/common/lib/Doctrine/Common/Annotations/AnnotationException.php&apos; (length=211)
  &lt;span class=&quot;code-keyword&quot;&gt;protected&lt;/span&gt; &apos;line&apos; =&amp;gt; &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; 52
  &lt;span class=&quot;code-keyword&quot;&gt;private&lt;/span&gt; &apos;trace&apos; (Exception) =&amp;gt; 
    array
      0 =&amp;gt; 
        array
          &apos;file&apos; =&amp;gt; string &apos;/Users/jshannon/Documents/Work/Projects/InnerTube/Repo/web/packages/lerteco_innertube/libraries/lerteco_framework/libraries/vendor-composer/doctrine/common/lib/Doctrine/Common/Annotations/DocParser.php&apos; (length=201)
          &apos;line&apos; =&amp;gt; &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; 592
          &apos;function&apos; =&amp;gt; string &apos;semanticalError&apos; (length=15)
          &apos;class&apos; =&amp;gt; string &apos;Doctrine\Common\Annotations\AnnotationException&apos; (length=47)
          &apos;type&apos; =&amp;gt; string &apos;::&apos; (length=2)
          &apos;args&apos; =&amp;gt; 
            array
              ...
      1 =&amp;gt; 
        array
          &apos;file&apos; =&amp;gt; string &apos;/Users/jshannon/Documents/Work/Projects/InnerTube/Repo/web/packages/lerteco_innertube/libraries/lerteco_framework/libraries/vendor-composer/doctrine/common/lib/Doctrine/Common/Annotations/DocParser.php&apos; (length=201)
          &apos;line&apos; =&amp;gt; &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; 533
          &apos;function&apos; =&amp;gt; string &apos;Annotation&apos; (length=10)
          &apos;class&apos; =&amp;gt; string &apos;Doctrine\Common\Annotations\DocParser&apos; (length=37)
          &apos;type&apos; =&amp;gt; string &apos;-&amp;gt;&apos; (length=2)
          &apos;args&apos; =&amp;gt; 
            array
              ...
      2 =&amp;gt; 
        array
          &apos;file&apos; =&amp;gt; string &apos;/Users/jshannon/Documents/Work/Projects/InnerTube/Repo/web/packages/lerteco_innertube/libraries/lerteco_framework/libraries/vendor-composer/doctrine/common/lib/Doctrine/Common/Annotations/DocParser.php&apos; (length=201)
          &apos;line&apos; =&amp;gt; &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; 297
          &apos;function&apos; =&amp;gt; string &apos;Annotations&apos; (length=11)
          &apos;class&apos; =&amp;gt; string &apos;Doctrine\Common\Annotations\DocParser&apos; (length=37)
          &apos;type&apos; =&amp;gt; string &apos;-&amp;gt;&apos; (length=2)
          &apos;args&apos; =&amp;gt; 
            array
              ...
      3 =&amp;gt; 
        array
          &apos;file&apos; =&amp;gt; string &apos;/Users/jshannon/Documents/Work/Projects/InnerTube/Repo/web/packages/lerteco_innertube/libraries/lerteco_framework/libraries/vendor-composer/doctrine/common/lib/Doctrine/Common/Annotations/AnnotationReader.php&apos; (length=208)
          &apos;line&apos; =&amp;gt; &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; 151
          &apos;function&apos; =&amp;gt; string &apos;parse&apos; (length=5)
          &apos;class&apos; =&amp;gt; string &apos;Doctrine\Common\Annotations\DocParser&apos; (length=37)
          &apos;type&apos; =&amp;gt; string &apos;-&amp;gt;&apos; (length=2)
          &apos;args&apos; =&amp;gt; 
            array
              ...
      4 =&amp;gt; 
        array
          &apos;file&apos; =&amp;gt; string &apos;/Users/jshannon/Documents/Work/Projects/InnerTube/Repo/web/packages/lerteco_innertube/libraries/lerteco_framework/libraries/vendor-composer/doctrine/common/lib/Doctrine/Common/Annotations/CachedReader.php&apos; (length=204)
          &apos;line&apos; =&amp;gt; &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; 86
          &apos;function&apos; =&amp;gt; string &apos;getClassAnnotations&apos; (length=19)
          &apos;class&apos; =&amp;gt; string &apos;Doctrine\Common\Annotations\AnnotationReader&apos; (length=44)
          &apos;type&apos; =&amp;gt; string &apos;-&amp;gt;&apos; (length=2)
          &apos;args&apos; =&amp;gt; 
            array
              ...
      5 =&amp;gt; 
        array
          &apos;file&apos; =&amp;gt; string &apos;/Users/jshannon/Documents/Work/Projects/InnerTube/Repo/web/packages/lerteco_innertube/libraries/lerteco_framework/libraries/vendor-composer/doctrine/orm/lib/Doctrine/ORM/Mapping/Driver/AnnotationDriver.php&apos; (length=205)
          &apos;line&apos; =&amp;gt; &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; 61
          &apos;function&apos; =&amp;gt; string &apos;getClassAnnotations&apos; (length=19)
          &apos;class&apos; =&amp;gt; string &apos;Doctrine\Common\Annotations\CachedReader&apos; (length=40)
          &apos;type&apos; =&amp;gt; string &apos;-&amp;gt;&apos; (length=2)
          &apos;args&apos; =&amp;gt; 
            array
              ...
      6 =&amp;gt; 
        array
          &apos;file&apos; =&amp;gt; string &apos;/Users/jshannon/Documents/Work/Projects/InnerTube/Repo/web/packages/lerteco_innertube/libraries/lerteco_framework/libraries/vendor-composer/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php&apos; (length=202)
          &apos;line&apos; =&amp;gt; &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; 112
          &apos;function&apos; =&amp;gt; string &apos;loadMetadataForClass&apos; (length=20)
          &apos;class&apos; =&amp;gt; string &apos;Doctrine\ORM\Mapping\Driver\AnnotationDriver&apos; (length=44)
          &apos;type&apos; =&amp;gt; string &apos;-&amp;gt;&apos; (length=2)
          &apos;args&apos; =&amp;gt; 
            array
              ...
      7 =&amp;gt; 
        array
          &apos;file&apos; =&amp;gt; string &apos;/Users/jshannon/Documents/Work/Projects/InnerTube/Repo/web/packages/lerteco_innertube/libraries/lerteco_framework/libraries/vendor-composer/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php&apos; (length=228)
          &apos;line&apos; =&amp;gt; &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; 302
          &apos;function&apos; =&amp;gt; string &apos;doLoadMetadata&apos; (length=14)
          &apos;class&apos; =&amp;gt; string &apos;Doctrine\ORM\Mapping\ClassMetadataFactory&apos; (length=41)
          &apos;type&apos; =&amp;gt; string &apos;-&amp;gt;&apos; (length=2)
          &apos;args&apos; =&amp;gt; 
            array
              ...
      8 =&amp;gt; 
        array
          &apos;file&apos; =&amp;gt; string &apos;/Users/jshannon/Documents/Work/Projects/InnerTube/Repo/web/packages/lerteco_innertube/libraries/lerteco_framework/libraries/vendor-composer/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php&apos; (length=228)
          &apos;line&apos; =&amp;gt; &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; 205
          &apos;function&apos; =&amp;gt; string &apos;loadMetadata&apos; (length=12)
          &apos;class&apos; =&amp;gt; string &apos;Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory&apos; (length=64)
          &apos;type&apos; =&amp;gt; string &apos;-&amp;gt;&apos; (length=2)
          &apos;args&apos; =&amp;gt; 
            array
              ...
      9 =&amp;gt; 
        array
          &apos;file&apos; =&amp;gt; string &apos;/Users/jshannon/Documents/Work/Projects/InnerTube/Repo/web/packages/lerteco_innertube/libraries/lerteco_framework/libraries/vendor-composer/doctrine/orm/lib/Doctrine/ORM/EntityManager.php&apos; (length=187)
          &apos;line&apos; =&amp;gt; &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; 268
          &apos;function&apos; =&amp;gt; string &apos;getMetadataFor&apos; (length=14)
          &apos;class&apos; =&amp;gt; string &apos;Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory&apos; (length=64)
          &apos;type&apos; =&amp;gt; string &apos;-&amp;gt;&apos; (length=2)
          &apos;args&apos; =&amp;gt; 
            array
              ...
      10 =&amp;gt; 
        array
          &apos;file&apos; =&amp;gt; string &apos;/Users/jshannon/Documents/Work/Projects/InnerTube/Repo/web/packages/lerteco_innertube/libraries/lerteco_framework/libraries/vendor-composer/doctrine/orm/lib/Doctrine/ORM/EntityManager.php&apos; (length=187)
          &apos;line&apos; =&amp;gt; &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; 682
          &apos;function&apos; =&amp;gt; string &apos;getClassMetadata&apos; (length=16)
          &apos;class&apos; =&amp;gt; string &apos;Doctrine\ORM\EntityManager&apos; (length=26)
          &apos;type&apos; =&amp;gt; string &apos;-&amp;gt;&apos; (length=2)
          &apos;args&apos; =&amp;gt; 
            array
              ...
      11 =&amp;gt; 
        array
          &apos;file&apos; =&amp;gt; string &apos;/Users/jshannon/Documents/Work/Projects/InnerTube/Repo/web/packages/lerteco_innertube/api/routes/devices.php&apos; (length=108)
          &apos;line&apos; =&amp;gt; &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; 16
          &apos;function&apos; =&amp;gt; string &apos;getRepository&apos; (length=13)
          &apos;class&apos; =&amp;gt; string &apos;Doctrine\ORM\EntityManager&apos; (length=26)
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The call that initiates this is getRepository(), which IS NOT in the CLI.&lt;/p&gt;

&lt;p&gt;I&apos;ve tracked it down to the fact that DocParser is not getting the list of names to ignore.&lt;/p&gt;

&lt;p&gt;Oddly, it gets it the first time that it&apos;s called by AnnotationReader. However, DocParser-&amp;gt;parse() calls $this-&amp;gt;Annotations(), which calls $this-&amp;gt;Annotation(), calls $this-&amp;gt;collectAnnotationMetadata(), which then creates a new parser &lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;self::$metadataParser = &lt;span class=&quot;code-keyword&quot;&gt;new&lt;/span&gt; self();&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt; and eventually parses it &lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;self::$metadataParser-&amp;gt;parse()&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;, but DOES NOT pass its ignorednames. &lt;/p&gt;

&lt;p&gt;This seems like an oversight, but it clearly works for a lot of people. My configuration code is:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
                &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (self::$isDevMode) {
			$cache = &lt;span class=&quot;code-keyword&quot;&gt;new&lt;/span&gt; \Doctrine\Common\Cache\ArrayCache;
		} &lt;span class=&quot;code-keyword&quot;&gt;else&lt;/span&gt; {
			$cache = &lt;span class=&quot;code-keyword&quot;&gt;new&lt;/span&gt; \Doctrine\Common\Cache\ApcCache;
		}

		\Doctrine\Common\Annotations\AnnotationReader::addGlobalIgnoredName(&apos;&lt;span class=&quot;code-keyword&quot;&gt;package&lt;/span&gt;&apos;);

		AnnotationRegistry::registerFile(__DIR__ . &lt;span class=&quot;code-quote&quot;&gt;&quot;/vendor-composer/doctrine/orm/lib/Doctrine/ORM/Mapping/Driver/DoctrineAnnotations.php&quot;&lt;/span&gt;);
		\Gedmo\DoctrineExtensions::registerAnnotations();

		

		$annotationReader = &lt;span class=&quot;code-keyword&quot;&gt;new&lt;/span&gt; \Doctrine\Common\Annotations\AnnotationReader();
		$cachedAnnotationReader = &lt;span class=&quot;code-keyword&quot;&gt;new&lt;/span&gt; \Doctrine\Common\Annotations\CachedReader($annotationReader, $cache);



		$annotationDriver = &lt;span class=&quot;code-keyword&quot;&gt;new&lt;/span&gt; \Doctrine\ORM\Mapping\Driver\AnnotationDriver($cachedAnnotationReader, self::$namespaceArray);

		$config = &lt;span class=&quot;code-keyword&quot;&gt;new&lt;/span&gt; \Doctrine\ORM\Configuration;
		$config-&amp;gt;setProxyNamespace(&apos;Proxy&apos;);
		$config-&amp;gt;setAutoGenerateProxyClasses(self::$isDevMode); &lt;span class=&quot;code-comment&quot;&gt;// &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; can be based on production config.
&lt;/span&gt;		&lt;span class=&quot;code-comment&quot;&gt;// register metadata driver
&lt;/span&gt;		$config-&amp;gt;setMetadataDriverImpl($annotationDriver);
		&lt;span class=&quot;code-comment&quot;&gt;// use our allready initialized cache driver
&lt;/span&gt;		$config-&amp;gt;setMetadataCacheImpl($cache);
		$config-&amp;gt;setQueryCacheImpl($cache);

		&lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (defined(&apos;DIR_FILES_CACHE&apos;)) {
			$config-&amp;gt;setProxyDir(DIR_FILES_CACHE);
		} &lt;span class=&quot;code-keyword&quot;&gt;else&lt;/span&gt; {
			$config-&amp;gt;setProxyDir(sys_get_temp_dir());
		}

		&lt;span class=&quot;code-comment&quot;&gt;// create event manager and hook prefered extension listeners
&lt;/span&gt;		$evm = &lt;span class=&quot;code-keyword&quot;&gt;new&lt;/span&gt; \Doctrine\Common\EventManager();

		$prefix = &lt;span class=&quot;code-keyword&quot;&gt;new&lt;/span&gt; TablePrefix(&lt;span class=&quot;code-keyword&quot;&gt;null&lt;/span&gt;);
		$prefix-&amp;gt;useNamespace(&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;);
		$evm-&amp;gt;addEventListener(\Doctrine\ORM\Events::loadClassMetadata, $prefix);


		$blameableListener = &lt;span class=&quot;code-keyword&quot;&gt;new&lt;/span&gt; \Gedmo\Blameable\BlameableListener();
		$blameableListener-&amp;gt;setAnnotationReader($config-&amp;gt;getMetadataDriverImpl()-&amp;gt;getReader());
		&lt;span class=&quot;code-comment&quot;&gt;//class_exists makes &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; usable with the command-line
&lt;/span&gt;		&lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (class_exists(&apos;\User&apos;) &amp;amp;&amp;amp; ($u = &lt;span class=&quot;code-keyword&quot;&gt;new&lt;/span&gt; \User()) != &lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;) {
			$blameableListener-&amp;gt;setUserValue($u-&amp;gt;getUserID());
		}
		$evm-&amp;gt;addEventSubscriber($blameableListener);


		$timestampableListener = &lt;span class=&quot;code-keyword&quot;&gt;new&lt;/span&gt; \Gedmo\Timestampable\TimestampableListener();
		$timestampableListener-&amp;gt;setAnnotationReader($config-&amp;gt;getMetadataDriverImpl()-&amp;gt;getReader());
		$evm-&amp;gt;addEventSubscriber($timestampableListener);

		$config-&amp;gt;addFilter(&apos;soft-deleteable&apos;, &apos;\Gedmo\SoftDeleteable\Filter\SoftDeleteableFilter&apos;);


		&lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; EntityManager::create($connectionOptions, $config, $evm);
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;and the entity is (which sets up the repository) is:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
namespace Innertube\Models;
defined(&apos;C5_EXECUTE&apos;) or die(&apos;Access Denied.&apos;);

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Gedmo\Mapping\Annotation as Gedmo;

/**
 * @ORM\Entity(repositoryClass=&lt;span class=&quot;code-quote&quot;&gt;&quot;DeviceRepository&quot;&lt;/span&gt;) @ORM\Table(name=&lt;span class=&quot;code-quote&quot;&gt;&quot;Devices&quot;&lt;/span&gt;)
 * @Gedmo\SoftDeleteable(fieldName=&lt;span class=&quot;code-quote&quot;&gt;&quot;deletedOn&quot;&lt;/span&gt;)
 **/
class Device {
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;and the repository is:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
namespace Innertube\Models;
defined(&apos;C5_EXECUTE&apos;) or die(&apos;Access Denied.&apos;);

use Doctrine\ORM\EntityRepository;

class DeviceRepository &lt;span class=&quot;code-keyword&quot;&gt;extends&lt;/span&gt; EntityRepository {
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment>Mac OSX 10.6.8</environment>
            <key id="14424">DCOM-168</key>
            <summary>ignoredAnnotationNames doesn&apos;t work in Annotation loop</summary>
                <type id="1" iconUrl="http://www.doctrine-project.org/jira/images/icons/issuetypes/bug.png">Bug</type>
                                <priority id="4" iconUrl="http://www.doctrine-project.org/jira/images/icons/priorities/minor.png">Minor</priority>
                    <status id="1" iconUrl="http://www.doctrine-project.org/jira/images/icons/statuses/open.png">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="beberlei">Benjamin Eberlei</assignee>
                                <reporter username="jshannon">James S</reporter>
                        <labels>
                    </labels>
                <created>Sun, 27 Jan 2013 01:31:25 +0000</created>
                <updated>Sun, 27 Jan 2013 01:35:02 +0000</updated>
                                    <version>2.3</version>
                                                <component>Annotations</component>
                        <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                                <attachments>
                </attachments>
            <subtasks>
        </subtasks>
        </item>
</channel>
</rss>