1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.directory.api.ldap.codec.actions.modifyRequest;
21
22
23 import org.apache.directory.api.asn1.DecoderException;
24 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
25 import org.apache.directory.api.asn1.ber.tlv.TLV;
26 import org.apache.directory.api.i18n.I18n;
27 import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
28 import org.apache.directory.api.ldap.codec.api.ResponseCarryingException;
29 import org.apache.directory.api.ldap.codec.decorators.ModifyRequestDecorator;
30 import org.apache.directory.api.ldap.model.message.ModifyRequest;
31 import org.apache.directory.api.ldap.model.message.ModifyResponseImpl;
32 import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
33 import org.apache.directory.api.util.Strings;
34 import org.slf4j.Logger;
35 import org.slf4j.LoggerFactory;
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 public class AddModifyRequestAttribute extends GrammarAction<LdapMessageContainer<ModifyRequestDecorator>>
54 {
55
56 private static final Logger LOG = LoggerFactory.getLogger( AddModifyRequestAttribute.class );
57
58
59 private static final boolean IS_DEBUG = LOG.isDebugEnabled();
60
61
62
63
64
65 public AddModifyRequestAttribute()
66 {
67 super( "Store Modify request operation type" );
68 }
69
70
71
72
73
74 public void action( LdapMessageContainer<ModifyRequestDecorator> container ) throws DecoderException
75 {
76 ModifyRequestDecorator modifyRequestDecorator = container.getMessage();
77 ModifyRequest modifyRequest = modifyRequestDecorator.getDecorated();
78
79 TLV tlv = container.getCurrentTLV();
80
81
82 String type = null;
83
84 if ( tlv.getLength() == 0 )
85 {
86 String msg = I18n.err( I18n.ERR_04083 );
87 LOG.error( msg );
88
89 ModifyResponseImpl response = new ModifyResponseImpl( modifyRequest.getMessageId() );
90 throw new ResponseCarryingException( msg, response, ResultCodeEnum.INVALID_ATTRIBUTE_SYNTAX,
91 modifyRequest.getName(), null );
92 }
93 else
94 {
95 type = Strings.utf8ToString( tlv.getValue().getData() );
96 modifyRequestDecorator.addAttributeTypeAndValues( type );
97 }
98
99 if ( IS_DEBUG )
100 {
101 LOG.debug( "Modifying type : {}", type );
102 }
103 }
104 }