Skip to content

Commit

Permalink
fix: support repeatable extension headers
Browse files Browse the repository at this point in the history
  • Loading branch information
psanders committed Apr 7, 2024
1 parent 74834f5 commit b70faf3
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
import javax.sip.header.HeaderFactory;
import java.text.ParseException;

@ProtoMapping(header = ExtensionHeader.class, field = "extensions", repeatable = false, extension = true)
@ProtoMapping(header = ExtensionHeader.class, field = "extensions", repeatable = true, extension = true)
public class ExtensionConverter implements Converter<Header, io.routr.message.Extension> {
@Override
public io.routr.message.Extension fromHeader(Header header) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,15 @@ public static SIPMessage convertToMessageDTO(final Message message) {
ProtoMapping mapping = converter.getClass().getAnnotation(ProtoMapping.class);
FieldDescriptor descriptor = SIPMessage.getDescriptor().findFieldByName(fieldName);

// Takes care of headers that might appear more than once
if (mapping.repeatable()) {
// Takes care of headers that might appear more than once and are custom
if (mapping.repeatable() && mapping.extension()) {
ListIterator<Header> headers = (ListIterator<Header>) message.getHeaders(header.getName());
while (headers.hasNext()) {
Header currentHeader = headers.next();
FieldDescriptor extDescriptor = SIPMessage.getDescriptor().findFieldByName(mapping.field());
sipMessageBuilder.addRepeatedField(extDescriptor, converter.fromHeader(currentHeader));
}
} else if (mapping.repeatable()) {
ListIterator<Header> headers = (ListIterator<Header>) message.getHeaders(header.getName());
while (headers.hasNext()) {
Header currentHeader = headers.next();
Expand Down

0 comments on commit b70faf3

Please sign in to comment.