Skip to content

Commit

Permalink
Remove use of Object in headers and store header value as rpm tag v…
Browse files Browse the repository at this point in the history
…alue
  • Loading branch information
dwalluck committed Apr 11, 2024
1 parent ecd1acc commit 769c958
Show file tree
Hide file tree
Showing 6 changed files with 116 additions and 89 deletions.
60 changes: 42 additions & 18 deletions rpm/src/main/java/org/eclipse/packager/rpm/RpmTagValue.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,11 @@

package org.eclipse.packager.rpm;

import org.apache.commons.codec.binary.Hex;

import java.nio.ByteBuffer;
import java.util.Arrays;
import java.util.Objects;
import java.util.Optional;

public class RpmTagValue {
Expand All @@ -34,6 +39,7 @@ public Optional<String[]> asStringArray() {
if (this.value instanceof String) {
return Optional.of(new String[] { (String) this.value });
}

if (this.value instanceof String[]) {
return Optional.of((String[]) this.value);
}
Expand All @@ -52,11 +58,7 @@ public Optional<String> asString() {

if (this.value instanceof String[]) {
final String[] arr = (String[]) this.value;
if (arr.length > 0) {
return Optional.of(arr[0]);
} else {
return Optional.empty();
}
return arr.length > 0 ? Optional.of(arr[0]) : Optional.empty();
}

return Optional.empty();
Expand All @@ -70,6 +72,7 @@ public Optional<Integer[]> asIntegerArray() {
if (this.value instanceof Integer) {
return Optional.of(new Integer[] { (Integer) this.value });
}

if (this.value instanceof Integer[]) {
return Optional.of((Integer[]) this.value);
}
Expand All @@ -88,11 +91,7 @@ public Optional<Integer> asInteger() {

if (this.value instanceof Integer[]) {
final Integer[] arr = (Integer[]) this.value;
if (arr.length > 0) {
return Optional.of(arr[0]);
} else {
return Optional.empty();
}
return arr.length > 0 ? Optional.of(arr[0]) : Optional.empty();
}

return Optional.empty();
Expand All @@ -118,19 +117,44 @@ public Optional<Long> asLong() {
return Optional.empty();
}

if (this.value instanceof Long) {
return Optional.of(((Long) this.value).longValue());
if (value instanceof Number) {
return Optional.of(((Number) value).longValue());
}

if (this.value instanceof Long[]) {
final Long[] arr = (Long[]) this.value;
if (arr.length > 0) {
return Optional.of(arr[0]);
} else {
return Optional.empty();
}
return arr.length > 0 ? Optional.of(arr[0]) : Optional.empty();
}

return Optional.empty();
try {
return Optional.of(Long.parseLong(value.toString()));
} catch (final NumberFormatException e) {
return Optional.empty();
}
}

@Override
public String toString() {
if (this.value == null) {
return Objects.toString(null);
}

if (this.value instanceof byte[]) {
return Hex.encodeHexString((byte[]) this.value);
}

if (this.value instanceof ByteBuffer) {
ByteBuffer buffer = (ByteBuffer) this.value;
byte[] data = new byte[buffer.remaining()];
buffer.get(data);
return Hex.encodeHexString(data);
}

if (this.value instanceof Object[]) {
final Object[] array = (Object[]) this.value;
return array.length == 0 ? "" : (array.length == 1 ? Objects.toString(array[0]) : Arrays.toString((Object[]) this.value));
}

return Objects.toString(this.value);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import org.eclipse.packager.rpm.OperatingSystem;
import org.eclipse.packager.rpm.RpmLead;
import org.eclipse.packager.rpm.RpmTag;
import org.eclipse.packager.rpm.RpmTagValue;
import org.eclipse.packager.rpm.RpmVersion;
import org.eclipse.packager.rpm.Type;
import org.eclipse.packager.rpm.header.Header;
Expand Down Expand Up @@ -73,8 +74,8 @@ public void fillFlagsFromHeader(final Header<RpmTag> header, final Function<Stri
Objects.requireNonNull(architectureMapper);
Objects.requireNonNull(operatingSystemMapper);

final Object os = header.get(RpmTag.OS);
final Object arch = header.get(RpmTag.ARCH);
final Object os = ((RpmTagValue) header.get(RpmTag.OS)).getValue();
final Object arch = ((RpmTagValue) header.get(RpmTag.ARCH)).getValue();

if (os instanceof String) {
this.architecture = architectureMapper.apply((String) os).orElse(Architecture.NOARCH).getValue();
Expand Down
Loading

0 comments on commit 769c958

Please sign in to comment.