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.i18n.I18n;
23 import org.apache.directory.api.ldap.model.name.Dn;
24 import org.apache.directory.api.util.Strings;
25
26
27
28
29
30
31
32
33 public class ProxiedAuthzImpl extends AbstractControl implements ProxiedAuthz
34 {
35
36
37
38 private String authzId;
39
40
41
42
43
44 public ProxiedAuthzImpl()
45 {
46 super( OID );
47
48
49 setCritical( true );
50 }
51
52
53
54
55
56 @Override
57 public String getAuthzId()
58 {
59 return authzId;
60 }
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75 @Override
76 public void setAuthzId( String authzId )
77 {
78
79 if ( authzId == null )
80 {
81 throw new RuntimeException( I18n.err( I18n.ERR_13511_INVALID_PROXIED_AUTHZ_NULL ) );
82 }
83
84 if ( !Strings.isEmpty( authzId ) )
85 {
86 String lowercaseAuthzId = Strings.toLowerCaseAscii( authzId );
87
88 if ( lowercaseAuthzId.startsWith( "dn:" ) )
89 {
90 String dn = authzId.substring( 3 );
91
92 if ( !Dn.isValid( dn ) )
93 {
94 throw new RuntimeException( I18n.err( I18n.ERR_13512_INVALID_PROXIED_AUTHZ_BAD_DN ) );
95 }
96 }
97 else if ( !lowercaseAuthzId.startsWith( "u:" ) )
98 {
99 throw new RuntimeException( I18n.err( I18n.ERR_13513_INVALID_PROXIED_AUTHZ_NO_DN_OR_U ) );
100 }
101 }
102
103 this.authzId = authzId;
104 }
105
106
107
108
109
110 @Override
111 public int hashCode()
112 {
113 int h = super.hashCode();
114
115 if ( authzId != null )
116 {
117 h = h * 37 + authzId.hashCode();
118 }
119
120 return h;
121 }
122
123
124
125
126
127 @Override
128 public boolean equals( Object o )
129 {
130 if ( this == o )
131 {
132 return true;
133 }
134
135 if ( !( o instanceof ProxiedAuthz ) )
136 {
137 return false;
138 }
139
140 ProxiedAuthz otherControl = ( ProxiedAuthz ) o;
141
142 return super.equals( o )
143 && ( ( authzId == otherControl.getAuthzId() ) || ( ( authzId != null ) && authzId.equals( otherControl.getAuthzId() ) ) );
144 }
145
146
147
148
149
150 @Override
151 public String toString()
152 {
153 StringBuilder sb = new StringBuilder();
154
155 sb.append( " Proxied Authz Control\n" );
156 sb.append( " oid : " ).append( getOid() ).append( '\n' );
157 sb.append( " critical : " ).append( isCritical() ).append( '\n' );
158 sb.append( " authzid : '" ).append( authzId ).append( "'\n" );
159
160 return sb.toString();
161 }
162 }