00b710e1 by astaxie

beego:namespace sub router add url to pattern

1 parent e25fcffb
...@@ -198,10 +198,12 @@ func (n *Namespace) Namespace(ns ...*Namespace) *Namespace { ...@@ -198,10 +198,12 @@ func (n *Namespace) Namespace(ns ...*Namespace) *Namespace {
198 for _, ni := range ns { 198 for _, ni := range ns {
199 for k, v := range ni.handlers.routers { 199 for k, v := range ni.handlers.routers {
200 if t, ok := n.handlers.routers[k]; ok { 200 if t, ok := n.handlers.routers[k]; ok {
201 addPrefix(v, ni.prefix)
201 n.handlers.routers[k].AddTree(ni.prefix, v) 202 n.handlers.routers[k].AddTree(ni.prefix, v)
202 } else { 203 } else {
203 t = NewTree() 204 t = NewTree()
204 t.AddTree(ni.prefix, v) 205 t.AddTree(ni.prefix, v)
206 addPrefix(t, ni.prefix)
205 n.handlers.routers[k] = t 207 n.handlers.routers[k] = t
206 } 208 }
207 } 209 }
...@@ -225,10 +227,12 @@ func AddNamespace(nl ...*Namespace) { ...@@ -225,10 +227,12 @@ func AddNamespace(nl ...*Namespace) {
225 for _, n := range nl { 227 for _, n := range nl {
226 for k, v := range n.handlers.routers { 228 for k, v := range n.handlers.routers {
227 if t, ok := BeeApp.Handlers.routers[k]; ok { 229 if t, ok := BeeApp.Handlers.routers[k]; ok {
230 addPrefix(v, n.prefix)
228 BeeApp.Handlers.routers[k].AddTree(n.prefix, v) 231 BeeApp.Handlers.routers[k].AddTree(n.prefix, v)
229 } else { 232 } else {
230 t = NewTree() 233 t = NewTree()
231 t.AddTree(n.prefix, v) 234 t.AddTree(n.prefix, v)
235 addPrefix(t, n.prefix)
232 BeeApp.Handlers.routers[k] = t 236 BeeApp.Handlers.routers[k] = t
233 } 237 }
234 } 238 }
...@@ -245,6 +249,20 @@ func AddNamespace(nl ...*Namespace) { ...@@ -245,6 +249,20 @@ func AddNamespace(nl ...*Namespace) {
245 } 249 }
246 } 250 }
247 251
252 func addPrefix(t *Tree, prefix string) {
253 for _, v := range t.fixrouters {
254 addPrefix(v, prefix)
255 }
256 if t.wildcard != nil {
257 addPrefix(t.wildcard, prefix)
258 }
259 if t.leaf != nil {
260 if c, ok := t.leaf.runObject.(*controllerInfo); ok {
261 c.pattern = prefix + c.pattern
262 }
263 }
264 }
265
248 // Namespace Condition 266 // Namespace Condition
249 func NSCond(cond namespaceCond) innnerNamespace { 267 func NSCond(cond namespaceCond) innnerNamespace {
250 return func(ns *Namespace) { 268 return func(ns *Namespace) {
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!