]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.init/src/org/argeo/api/a2/A2Branch.java
1 package org
.argeo
.api
.a2
;
3 import java
.lang
.System
.Logger
;
4 import java
.lang
.System
.Logger
.Level
;
5 import java
.util
.Collections
;
6 import java
.util
.SortedMap
;
7 import java
.util
.TreeMap
;
9 import org
.osgi
.framework
.Version
;
12 * A logical linear sequence of versions of a given {@link A2Component}. This is
13 * typically a combination of major and minor version, indicating backward
16 public class A2Branch
implements Comparable
<A2Branch
> {
17 private final static Logger logger
= System
.getLogger(A2Branch
.class.getName());
19 private final A2Component component
;
20 private final String id
;
22 final SortedMap
<Version
, A2Module
> modules
= Collections
.synchronizedSortedMap(new TreeMap
<>());
24 public A2Branch(A2Component component
, String id
) {
25 this.component
= component
;
27 component
.branches
.put(id
, this);
30 public Iterable
<A2Module
> listModules(Object filter
) {
31 return modules
.values();
34 A2Module
getOrAddModule(Version version
, Object locator
) {
35 if (modules
.containsKey(version
)) {
36 A2Module res
= modules
.get(version
);
37 if (!res
.getLocator().equals(locator
)) {
38 logger
.log(Level
.TRACE
,
39 () -> "Inconsistent locator " + locator
+ " (registered: " + res
.getLocator() + ")");
43 return new A2Module(this, version
, locator
);
46 public A2Module
last() {
47 return modules
.get(modules
.lastKey());
50 public A2Module
first() {
51 return modules
.get(modules
.firstKey());
54 public A2Component
getComponent() {
58 public String
getId() {
63 public int compareTo(A2Branch o
) {
64 return id
.compareTo(id
);
68 public int hashCode() {
73 public boolean equals(Object obj
) {
74 if (obj
instanceof A2Branch
) {
75 A2Branch o
= (A2Branch
) obj
;
76 return component
.equals(o
.component
) && id
.equals(o
.id
);
82 public String
toString() {
83 return getCoordinates();
86 public String
getCoordinates() {
87 return component
+ ":" + id
;
90 static String
versionToBranchId(Version version
) {
91 return version
.getMajor() + "." + version
.getMinor();