classConsumed = null;\r
jTabbedPane.setSelectedIndex(0);\r
initPcdBuildDefinition(i);\r
- ModuleIdentification mi = WorkspaceProfile.getModuleId(moduleKey);\r
- if (mi == null) {\r
+ moduleId = WorkspaceProfile.getModuleId(moduleKey);\r
+ if (moduleId == null) {\r
return;\r
}\r
int tabIndex = jTabbedPane.indexOfTab("Libraries");\r
- if (mi.isLibrary()) {\r
+ if (moduleId.isLibrary()) {\r
jTabbedPane.setEnabledAt(tabIndex, false);\r
}\r
else {\r
libClassTableModel.setRowCount(0);\r
libInstanceTableModel.setRowCount(0);\r
selectedInstancesTableModel.setRowCount(0);\r
- moduleId = WorkspaceProfile.getModuleId(moduleKey);\r
Vector<String> errorMsg = new Vector<String>();\r
try {\r
//\r
//\r
// Get dependency pkg list into which we will search lib instances.\r
//\r
- depPkgList = SurfaceAreaQuery.getDependencePkg(null, mi);\r
+ //depPkgList = SurfaceAreaQuery.getDependencePkg(null, mi);\r
//\r
// Get the lib class consumed, produced by this module itself.\r
//\r
Iterator<LibraryClassDescriptor> lic = this.classConsumed.keySet().iterator();\r
while (lic.hasNext()) {\r
LibraryClassDescriptor cls = lic.next();\r
- if (isBoundedClass(cls)) {\r
+ if (isBoundedClass(cls, errorMsg)) {\r
continue;\r
}\r
ArrayList<String> instances = getInstancesForClass(cls, depPkgList);\r
* @param cls\r
* @return\r
*/\r
- private boolean isBoundedClass (LibraryClassDescriptor cls) {\r
- if (this.classProduced.containsKey(cls)) {\r
- return true;\r
- }\r
+ private boolean isBoundedClass (LibraryClassDescriptor cls, Vector<String> errorMsg) {\r
+// if (this.classProduced.containsKey(cls)) {\r
+// return true;\r
+// }\r
Iterator<LibraryClassDescriptor> lcdi = this.classProduced.keySet().iterator();\r
while (lcdi.hasNext()) {\r
LibraryClassDescriptor lcd = lcdi.next();\r
- if (cls.isSubSetByArchs(lcd) && cls.isSubSetByModTypes(lcd)) {\r
- return true;\r
+ if (cls.className.equals(lcd.className)) {\r
+ if (cls.isSubSetByArchs(lcd) && cls.isSubSetByModTypes(lcd)) {\r
+ return true;\r
+ }\r
+ else {\r
+ ArrayList<String> producedBy = this.classProduced.get(lcd);\r
+ String instancesName = "";\r
+ for (int i = 0; i < producedBy.size(); ++i) {\r
+ ModuleIdentification mi = WorkspaceProfile.getModuleId(producedBy.get(i));\r
+ instancesName += mi.getName();\r
+ instancesName += " ";\r
+ }\r
+ String msg = new ImproperInstanceException(lcd.className, instancesName, lcd.supArchs, lcd.supModTypes).getMessage();\r
+ errorMsg.add(msg);\r
+ }\r
}\r
}\r
\r
isPotential = true;\r
}\r
\r
- if (hasBeenProduced(lcd)) {\r
+ if (isPotential && hasBeenProduced(lcd)) {\r
isPotential = false;\r
break;\r
}\r
Iterator<LibraryClassDescriptor> lcdi = this.classProduced.keySet().iterator();\r
while (lcdi.hasNext()) {\r
LibraryClassDescriptor lcd = lcdi.next();\r
- if (cls.hasInterSectionWith(lcd)) {\r
+ if (cls.isSubSetByArchs(lcd) && cls.isSubSetByModTypes(lcd)) {\r
return true;\r
}\r
}\r
}\r
\r
private void showClassToResolved(){\r
+ Vector<String> errorMsg = new Vector<String>();\r
libClassTableModel.setRowCount(0);\r
libInstanceTableModel.setRowCount(0);\r
if (classConsumed == null || classConsumed.size() == 0) {\r
continue;\r
}\r
\r
- if (!isBoundedClass(lcd)){\r
+ if (!isBoundedClass(lcd, errorMsg)){\r
libClassTableModel.addRow(s);\r
}\r
}\r
\r
+ if (errorMsg.size() > 0) {\r
+ String errors = "";\r
+ for (int i = 0; i < errorMsg.size(); ++i) {\r
+ errors += " " + errorMsg.get(i) + "\n";\r
+ }\r
+ JOptionPane.showMessageDialog(FrameworkWizardUI.getInstance(), errors);\r
+ }\r
}\r
\r
private String getModuleArch () {\r
\r
}\r
\r
+class ImproperInstanceException extends Exception {\r
+\r
+ /**\r
+ * \r
+ */\r
+ private static final long serialVersionUID = -5279700566993277033L;\r
+ private String className = null;\r
+ private String libInstance = null;\r
+ private String instanceSupArch = null;\r
+ private String instanceSupModType = null;\r
+ \r
+ ImproperInstanceException (String libClass, String instance1, String arch, String type) {\r
+ super();\r
+ className = libClass;\r
+ libInstance = instance1;\r
+ instanceSupArch = arch;\r
+ instanceSupModType = type;\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see java.lang.Throwable#getMessage()\r
+ */\r
+ @Override\r
+ public String getMessage() {\r
+ // TODO Auto-generated method stub\r
+ return " Library Class " + className + " Produced by Library Instance: " \r
+ + libInstance + "\nOnly Supports " + instanceSupArch + " and Module Type " + instanceSupModType + ".\n This instance should be removed.\n";\r
+ }\r
+ \r
+}\r
+\r
class NoInstanceException extends Exception {\r
\r
/**\r