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 @Override
56 public String getAuthzId()
57 {
58 return authzId;
59 }
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74 @Override
75 public void setAuthzId( String authzId )
76 {
77
78 if ( authzId == null )
79 {
80 throw new RuntimeException( "Invalid proxied authz value : cannot be null" );
81 }
82
83 if ( !Strings.isEmpty( authzId ) )
84 {
85 String lowercaseAuthzId = Strings.toLowerCaseAscii( authzId );
86
87 if ( lowercaseAuthzId.startsWith( "dn:" ) )
88 {
89 String dn = authzId.substring( 3 );
90
91 if ( !Dn.isValid( dn ) )
92 {
93 throw new RuntimeException( "Invalid proxied authz value : the DN is not valid" );
94 }
95 }
96 else if ( !lowercaseAuthzId.startsWith( "u:" ) )
97 {
98 throw new RuntimeException( "Invalid proxied authz value : should start with 'dn:' or 'u:'" );
99 }
100 }
101
102 this.authzId = authzId;
103 }
104
105
106
107
108
109 @Override
110 public int hashCode()
111 {
112 int h = super.hashCode();
113
114 if ( authzId != null )
115 {
116 h = h * 37 + authzId.hashCode();
117 }
118
119 return h;
120 }
121
122
123
124
125
126 @Override
127 public boolean equals( Object o )
128 {
129 if ( !super.equals( o ) )
130 {
131 return false;
132 }
133
134 ProxiedAuthz otherControl = ( ProxiedAuthz ) o;
135
136 return ( authzId == otherControl.getAuthzId() )
137 || ( ( authzId != null ) && authzId.equals( otherControl.getAuthzId() ) );
138 }
139
140
141
142
143
144 @Override
145 public String toString()
146 {
147 StringBuilder sb = new StringBuilder();
148
149 sb.append( " Proxied Authz Control\n" );
150 sb.append( " oid : " ).append( getOid() ).append( '\n' );
151 sb.append( " critical : " ).append( isCritical() ).append( '\n' );
152 sb.append( " authzid : '" ).append( authzId ).append( "'\n" );
153
154 return sb.toString();
155 }
156 }