Bug #3027

Rev 2122 results in an Exeption when loading FLOW3 a second time after clearing the chache

Added by Christoph Blömer over 6 years ago. Updated almost 5 years ago.

Status:Resolved Start date:2009-04-02
Priority:Must have Due date:
Assigned To:Robert Lemke % Done:

100%

Category:Reflection
Target version:TYPO3 Flow Base Distribution - 1.0 alpha 1
PHP Version: Complexity:
Has patch: Affected Flow version:

Description

In Development Context I get:
#1166550023: Object "F3\WebDAV\MVC\RequestHandler_AOPProxy_Development" is not registered. (More information)

F3\FLOW3\Object\Exception\UnknownObject thrown in file
C:\xampp\htdocs\FLOW3\Packages\Global\FLOW3\Classes\Object\Manager.php in line 242.

In Productin Context I get:
#1166550023: Object "F3\WebDAV\MVC\RequestHandler_AOPProxy_Production" is not registered. (More information)

F3\FLOW3\Object\Exception\UnknownObject thrown in file
C:\xampp\htdocs\FLOW3\Packages\Global\FLOW3\Classes\Object\Manager.php in line 242.

Do I need to configure the RequestHandler somehow to work again? Or is this a Bug introduced in this Revision?

FLOW3_Exception.html Magnifier (10.1 kB) Robert Lemke, 2009-04-03 14:09

Associated revisions

Revision 43a9beef
Added by Robert Lemke over 6 years ago

  • FLOW3: (Object) The Object Builder now throws an exception if no default implementation for an object type could be found and an instance of this object type should be built.
  • FLOW3: (Object) Introduced a new marker interface "ProxyInterface" which must be implemented by all proxy classes.
  • FLOW3: (Reflection) Made the getDefaultImplementationClassNameOfInterface() aware of proxyies: If exactly two classes implement an interface and one of them implements the Proxy marker interface, the name of this class is returned. Fixes #3027

History

#1 Updated by Robert Lemke over 6 years ago

  • Status changed from New to Accepted

#2 Updated by Robert Lemke over 6 years ago

  • File FLOW3_Exception.htmlMagnifier added
  • Category changed from Object to Reflection
  • Target version set to 1.0 alpha 1
  • % Done changed from 0 to 10

Attached a backtrace exploiting this bug

#3 Updated by Robert Lemke over 6 years ago

  • % Done changed from 10 to 50

Explanation of the reason for this bug:

The object manager's registerObjectType() method registers the RouterInterface. In order to build the object configuration, it asks the Reflection Service for the default implementation of that interface. The Reflection Service will return the classname only if exactly one class implements the interface.

Before r2122 the Reflection Service was aware of only one implementation, namely the Router. Since r2122 all classes which are reflected even after initialization of the Object Framework will be considered and cached. Therefore the interface has now two implementations, the Router and the AOP proxy of the Router. In essence no default implementation was found and the object builder failed building the object type.

#4 Updated by Robert Lemke over 6 years ago

  • Status changed from Accepted to Resolved
  • % Done changed from 50 to 100

Applied in changeset r2123.

#5 Updated by Christoph Blömer over 6 years ago

I made a new checkout, cleared the cache und tried it again.

The problem still exists. Nothing has changed.
The bug is not fixed.

#6 Updated by Robert Lemke over 6 years ago

Christoph Blömer wrote:

I made a new checkout, cleared the cache und tried it again.

The problem still exists. Nothing has changed.
The bug is not fixed.

That's another issue (#3034), this bug is fixed.

#7 Updated by Christoph Blömer over 6 years ago

This Exception is created when an aspect for the RequestHandler is defined.
After removing the aspect the exception is gone.

Also available in: Atom PDF