Code Duplication    Length = 34-34 lines in 2 locations

lib/Doctrine/ORM/UnitOfWork.php 2 locations

@@ 2089-2122 (lines=34) @@
2086
     *
2087
     * @return void
2088
     */
2089
    private function cascadeRefresh($entity, array &$visited)
2090
    {
2091
        $class = $this->em->getClassMetadata(get_class($entity));
2092
2093
        $associationMappings = array_filter(
2094
            $class->associationMappings,
2095
            function ($assoc) { return $assoc['isCascadeRefresh']; }
2096
        );
2097
2098
        foreach ($associationMappings as $assoc) {
2099
            $relatedEntities = $class->reflFields[$assoc['fieldName']]->getValue($entity);
2100
2101
            switch (true) {
2102
                case ($relatedEntities instanceof PersistentCollection):
2103
                    // Unwrap so that foreach() does not initialize
2104
                    $relatedEntities = $relatedEntities->unwrap();
2105
                    // break; is commented intentionally!
2106
2107
                case ($relatedEntities instanceof Collection):
2108
                case (is_array($relatedEntities)):
2109
                    foreach ($relatedEntities as $relatedEntity) {
2110
                        $this->doRefresh($relatedEntity, $visited);
2111
                    }
2112
                    break;
2113
2114
                case ($relatedEntities !== null):
2115
                    $this->doRefresh($relatedEntities, $visited);
2116
                    break;
2117
2118
                default:
2119
                    // Do nothing
2120
            }
2121
        }
2122
    }
2123
2124
    /**
2125
     * Cascades a detach operation to associated entities.
@@ 2132-2165 (lines=34) @@
2129
     *
2130
     * @return void
2131
     */
2132
    private function cascadeDetach($entity, array &$visited)
2133
    {
2134
        $class = $this->em->getClassMetadata(get_class($entity));
2135
2136
        $associationMappings = array_filter(
2137
            $class->associationMappings,
2138
            function ($assoc) { return $assoc['isCascadeDetach']; }
2139
        );
2140
2141
        foreach ($associationMappings as $assoc) {
2142
            $relatedEntities = $class->reflFields[$assoc['fieldName']]->getValue($entity);
2143
2144
            switch (true) {
2145
                case ($relatedEntities instanceof PersistentCollection):
2146
                    // Unwrap so that foreach() does not initialize
2147
                    $relatedEntities = $relatedEntities->unwrap();
2148
                    // break; is commented intentionally!
2149
2150
                case ($relatedEntities instanceof Collection):
2151
                case (is_array($relatedEntities)):
2152
                    foreach ($relatedEntities as $relatedEntity) {
2153
                        $this->doDetach($relatedEntity, $visited);
2154
                    }
2155
                    break;
2156
2157
                case ($relatedEntities !== null):
2158
                    $this->doDetach($relatedEntities, $visited);
2159
                    break;
2160
2161
                default:
2162
                    // Do nothing
2163
            }
2164
        }
2165
    }
2166
2167
    /**
2168
     * Cascades a merge operation to associated entities.