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.response.search.entry;
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.model.entry.Attribute;
29 import org.apache.directory.api.ldap.model.entry.DefaultAttribute;
30 import org.apache.directory.api.ldap.model.exception.LdapException;
31 import org.apache.directory.api.ldap.model.message.SearchResultEntry;
32 import org.apache.directory.api.util.Strings;
33 import org.slf4j.Logger;
34 import org.slf4j.LoggerFactory;
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 public class AddAttributeType extends GrammarAction<LdapMessageContainer<SearchResultEntry>>
51 {
52
53 private static final Logger LOG = LoggerFactory.getLogger( AddAttributeType.class );
54
55
56
57
58 public AddAttributeType()
59 {
60 super( "Store the AttributeType" );
61 }
62
63
64
65
66
67 public void action( LdapMessageContainer<SearchResultEntry> container ) throws DecoderException
68 {
69 SearchResultEntry searchResultEntry = container.getMessage();
70
71 TLV tlv = container.getCurrentTLV();
72
73
74 if ( tlv.getLength() == 0 )
75 {
76
77 String msg = I18n.err( I18n.ERR_05147_NULL_ATTRIBUTE_TYPE );
78 LOG.error( msg );
79 throw new DecoderException( msg );
80 }
81 else
82 {
83 try
84 {
85 Attribute attribute = new DefaultAttribute( tlv.getValue().getData() );
86 container.setCurrentAttribute( attribute );
87 searchResultEntry.getEntry().put( attribute );
88 }
89 catch ( LdapException ine )
90 {
91 String type = Strings.utf8ToString( tlv.getValue().getData() );
92
93 String msg = I18n.err( I18n.ERR_05156_INVALID_ATTRIBUTE_TYPE, type, ine.getMessage() );
94 LOG.error( I18n.err( I18n.ERR_05114_ERROR_MESSAGE, msg, ine.getMessage() ) );
95 throw new DecoderException( msg, ine );
96 }
97 }
98
99 if ( LOG.isDebugEnabled() )
100 {
101 String type = Strings.utf8ToString( tlv.getValue().getData() );
102 LOG.debug( I18n.msg( I18n.MSG_05179_ATTRIBUTE_TYPE, type ) );
103 }
104 }
105 }