1 36 package org.ungoverned.oscar; 37 38 import org.ungoverned.moduleloader.search.CompatibilityPolicy; 39 40 public class OSGiCompatibilityPolicy implements CompatibilityPolicy 41 { 42 private Oscar m_oscar = null; 43 44 public OSGiCompatibilityPolicy(Oscar oscar) 45 { 46 m_oscar = oscar; 47 } 48 49 62 public int compare( 63 Object leftId, Object leftVersion, 64 Object rightId, Object rightVersion) 65 { 66 if (isComparable(leftId, rightId)) 67 { 68 return compareVersion((int[]) leftVersion, (int[]) rightVersion); 69 } 70 else 71 { 72 throw new IllegalArgumentException ("Identifiers are not comparable."); 73 } 74 } 75 76 86 public boolean isCompatible( 87 Object leftId, Object leftVersion, 88 Object rightId, Object rightVersion) 89 { 90 try { 91 return (compare(leftId, leftVersion, rightId, rightVersion) >= 0); 93 } catch (Exception ex) { 94 return false; 95 } 96 } 97 98 109 private boolean isComparable(Object leftId, Object rightId) 110 { 111 return leftId.equals(rightId); 112 } 113 114 private int compareVersion(int[] left, int[] right) 115 { 116 if (left[0] > right[0]) 117 return 1; 118 else if (left[0] < right[0]) 119 return -1; 120 else if (left[1] > right[1]) 121 return 1; 122 else if (left[1] < right[1]) 123 return -1; 124 else if (left[2] > right[2]) 125 return 1; 126 else if (left[2] < right[2]) 127 return -1; 128 return 0; 129 } 130 }
| Popular Tags
|