1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.directory.api.ldap.model.message.controls;
20
21
22 import org.apache.directory.api.ldap.model.name.Dn;
23 import org.apache.directory.api.util.Strings;
24
25
26
27
28
29
30
31
32 public class ProxiedAuthzImpl extends AbstractControl implements ProxiedAuthz
33 {
34
35
36
37 private String authzId;
38
39
40
41
42
43 public ProxiedAuthzImpl()
44 {
45 super( OID );
46
47
48 setCritical( true );
49 }
50
51
52
53
54
55 public String getAuthzId()
56 {
57 return authzId;
58 }
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73 public void setAuthzId( String authzId )
74 {
75
76 if ( authzId == null )
77 {
78 throw new RuntimeException( "Invalid proxied authz value : cannot be null" );
79 }
80
81 if ( !Strings.isEmpty( authzId ) )
82 {
83 String lowercaseAuthzId = Strings.toLowerCase( authzId );
84
85 if ( lowercaseAuthzId.startsWith( "dn:" ) )
86 {
87 String dn = authzId.substring( 3 );
88
89 if ( !Dn.isValid( dn ) )
90 {
91 throw new RuntimeException( "Invalid proxied authz value : the DN is not valid" );
92 }
93 }
94 else if ( !lowercaseAuthzId.startsWith( "u:" ) )
95 {
96 throw new RuntimeException( "Invalid proxied authz value : should start with 'dn:' or 'u:'" );
97 }
98 }
99
100 this.authzId = authzId;
101 }
102
103
104
105
106
107 @Override
108 public int hashCode()
109 {
110 int h = super.hashCode();
111
112 if ( authzId != null )
113 {
114 h = h * 37 + authzId.hashCode();
115 }
116
117 return h;
118 }
119
120
121
122
123
124 @Override
125 public boolean equals( Object o )
126 {
127 if ( !super.equals( o ) )
128 {
129 return false;
130 }
131
132 ProxiedAuthz otherControl = ( ProxiedAuthz ) o;
133
134 return ( authzId == otherControl.getAuthzId() )
135 || ( ( authzId != null ) && authzId.equals( otherControl.getAuthzId() ) );
136 }
137
138
139
140
141
142 public String toString()
143 {
144 StringBuffer sb = new StringBuffer();
145
146 sb.append( " Proxied Authz Control\n" );
147 sb.append( " oid : " ).append( getOid() ).append( '\n' );
148 sb.append( " critical : " ).append( isCritical() ).append( '\n' );
149 sb.append( " authzid : '" ).append( authzId ).append( "'\n" );
150
151 return sb.toString();
152 }
153 }