1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.view.facelets.el;
20
21 import javax.el.ELContext;
22 import javax.el.ValueExpression;
23 import javax.el.ValueReference;
24 import javax.faces.context.FacesContext;
25 import javax.faces.view.Location;
26
27
28
29
30
31
32
33 public class LocationValueExpressionUEL extends LocationValueExpression
34 {
35
36 private static final long serialVersionUID = 1824869909994211424L;
37
38 public LocationValueExpressionUEL()
39 {
40 super();
41 }
42
43 public LocationValueExpressionUEL(Location location, ValueExpression delegate)
44 {
45 super(location, delegate);
46 }
47
48 public LocationValueExpressionUEL(Location location, ValueExpression delegate, int ccLevel)
49 {
50 super(location, delegate, ccLevel);
51 }
52
53 public LocationValueExpression apply(int newCCLevel)
54 {
55 if(this.ccLevel == newCCLevel)
56 {
57 return this;
58 }
59 else
60 {
61 return new LocationValueExpressionUEL(this.location, this.delegate, newCCLevel);
62 }
63 }
64
65 public LocationValueExpression apply(int newCCLevel, Location newLocation)
66 {
67 if(this.ccLevel == newCCLevel && this.location.getPath().equals(newLocation.getPath()))
68 {
69 return this;
70 }
71 else
72 {
73 return new LocationValueExpressionUEL(newLocation, this.delegate, newCCLevel);
74 }
75 }
76
77 @Override
78 public ValueReference getValueReference(ELContext context)
79 {
80 FacesContext facesContext = (FacesContext) context.getContext(FacesContext.class);
81 CompositeComponentELUtils.saveCompositeComponentForResolver(facesContext, location, ccLevel);
82 try
83 {
84 return delegate.getValueReference(context);
85 }
86 finally
87 {
88 CompositeComponentELUtils.removeCompositeComponentForResolver(facesContext);
89 }
90 }
91
92 }