Index: src/org/netbeans/lib/jmi/mapping/JavaMapper.java =================================================================== RCS file: /cvs/mdr/src/org/netbeans/lib/jmi/mapping/JavaMapper.java,v retrieving revision 1.17 diff -u -r1.17 JavaMapper.java --- src/org/netbeans/lib/jmi/mapping/JavaMapper.java 29 Nov 2002 11:26:16 -0000 1.17 +++ src/org/netbeans/lib/jmi/mapping/JavaMapper.java 4 Dec 2002 11:46:10 -0000 @@ -741,43 +741,62 @@ ModelElement element; Collection ancestors = new ArrayList(); Collection supertypes = objPackage.getSupertypes(); - String typeName; - String elementName; - for (Iterator it = supertypes.iterator(); it.hasNext();) { ancestors.add(tagProvider.getTypeFullName((ModelElement) it.next()) + PACKAGE_POSTFIX); } if (ancestors.size() == 0) ancestors.add("javax.jmi.reflect.RefPackage"); interfaceHeader(tagProvider.getTypePrefix(objPackage), tagProvider.getSubstName(objPackage) + PACKAGE_POSTFIX, ancestors.toArray(), objPackage, DOC_PACKAGE); + ArrayList nestedPackages = new ArrayList(); + ArrayList classes = new ArrayList(); + ArrayList associations = new ArrayList(); + ArrayList structureTypes = new ArrayList(); + elements = objPackage.getContents(); for (Iterator it = elements.iterator(); it.hasNext();) { element = (ModelElement) it.next(); - typeName = tagProvider.getTypeFullName(element); - elementName = tagProvider.getSubstName(element); if (element instanceof Association) { + associations.add(element); } else if (element instanceof javax.jmi.model.MofClass) { - typeName += CLASS_POSTFIX; + classes.add(element); } else if (element instanceof MofPackage) { - typeName += PACKAGE_POSTFIX; + nestedPackages.add(element); } else if (element instanceof StructureType) { - structTemplate(element); - continue; + structureTypes.add(element); } else if (element instanceof Import) { + // addProxyGetter cannot handle Imports, and Imports come first + // in the mapping, so go ahead and just generate the necessary + // method now. Import imp = (Import) element; - if (imp.isClustered() && imp.getVisibility().equals(VisibilityKindEnum.PUBLIC_VIS)) { - Namespace namespace = imp.getImportedNamespace(); - if (namespace instanceof MofPackage) { - typeName = tagProvider.getTypeFullName(namespace) + PACKAGE_POSTFIX; - element = namespace; + if (imp.isClustered() && VisibilityKindEnum.PUBLIC_VIS.equals(imp.getVisibility())) { + Namespace ns = imp.getImportedNamespace(); + if (ns instanceof MofPackage && + VisibilityKindEnum.PUBLIC_VIS.equals(((MofPackage) ns).getVisibility())) { + String typeName = tagProvider.getTypeFullName(element) + PACKAGE_POSTFIX; + String elementName = tagProvider.getSubstName(element); + interfaceMethod(typeName, "get" + elementName, null, null); } } else { Logger.getDefault().log("import: " + imp.getName() + " mofid: " + imp.refMofId() + " clustered: " + imp.isClustered() + " visibility: " + imp.getVisibility()); - continue; } - } else continue; + } + } + + addProxyGetter(objPackage, nestedPackages, PACKAGE_POSTFIX); + addProxyGetter(objPackage, classes, CLASS_POSTFIX); + addProxyGetter(objPackage, associations, ""); + + for (Iterator i = structureTypes.iterator(); i.hasNext(); ) { + structTemplate((StructureType) i.next()); + } + + interfaceFooter(tagProvider.getSubstName(objPackage) + PACKAGE_POSTFIX); + } - if (((GeneralizableElement) element).getVisibility().equals(VisibilityKindEnum.PUBLIC_VIS)) { + void addProxyGetter(MofPackage objPackage, ArrayList list, String suffix) throws IOException { + for (Iterator i = list.iterator(); i.hasNext(); ) { + GeneralizableElement element = (GeneralizableElement) i.next(); + if (VisibilityKindEnum.PUBLIC_VIS.equals(element.getVisibility())) { String methodComment = null, returnComment = null; if (element instanceof Import) { methodComment = DOC_PACKAGE_GET_IMPORT; @@ -792,14 +811,15 @@ methodComment = DOC_PACKAGE_GET_ASSOC; returnComment = DOC_PACKAGE_GET_ASSOC_RETURN; } + String typeName = tagProvider.getTypeFullName(element); + String elementName = tagProvider.getSubstName(element); if (methodComment != null) methodJavaDoc(objPackage, false, methodComment, returnComment, null, null, new String [] {elementName}); - interfaceMethod(typeName, "get" + elementName, null, null); + interfaceMethod(typeName + suffix, "get" + elementName, null, null); } } - - interfaceFooter(tagProvider.getSubstName(objPackage) + PACKAGE_POSTFIX); } + // generates class for an exception protected void exceptionTemplate(MofException objException) throws IOException {