org.osgi.service.indexer.impl.EE Maven / Gradle / Ivy
package org.osgi.service.indexer.impl;
import org.osgi.framework.Version;
public class EE {
private String name;
private String version;
private EE() {}
public static final EE parseBREE(String bree) {
EE ee = new EE();
int splitIndex = bree.indexOf("/");
if (splitIndex >= 0) {
Segment segment1 = versionSplit(bree.substring(0, splitIndex));
if (segment1.name.equals("J2SE"))
segment1.name = "JavaSE";
Segment segment2 = versionSplit(bree.substring(splitIndex + 1));
if (segment1.version != null) {
if (segment1.version.equals(segment2.version)) {
ee.name = segment1.name + "/" + segment2.name;
ee.version = segment1.version;
} else {
StringBuilder builder = new StringBuilder().append(segment1.name)
.append('-')
.append(segment1.version)
.append('/')
.append(segment2.name);
if (segment2.version != null)
builder.append('-').append(segment2.version);
ee.name = builder.toString();
ee.version = null;
}
} else {
ee.name = segment1.name + "/" + segment2.name;
ee.version = segment2.version;
}
} else {
Segment segment = versionSplit(bree);
if (segment.name.equals("J2SE"))
segment.name = "JavaSE";
ee.name = segment.name;
ee.version = segment.version;
}
return ee;
}
static class Segment {
String name;
String version;
}
private static Segment versionSplit(String input) {
Segment result = new Segment();
int index = input.indexOf('-');
if (index >= 0) {
String name = input.substring(0, index);
String versionStr = input.substring(index + 1);
try {
new Version(versionStr);
result.name = name;
result.version = versionStr;
} catch (IllegalArgumentException e) {
result.name = input;
result.version = null;
}
} else {
result.name = input;
result.version = null;
}
return result;
}
public String getName() {
return name;
}
public String getVersion() {
return version;
}
public String toFilter() {
StringBuilder builder = new StringBuilder();
builder.append("(osgi.ee=").append(name).append(")");
if (version != null) {
builder.insert(0, "(&");
builder.append("(version=").append(version).append(")");
builder.append(")");
}
return builder.toString();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy