public IXArchElement cloneElement(int depth) { synchronized (DOMUtils.getDOMLock(elt)) { Document doc = elt.getOwnerDocument(); if (depth == 0) { Element cloneElt = (Element) elt.cloneNode(false); cloneElt = (Element) doc.importNode(cloneElt, true); AbstractChangeSetImpl cloneImpl = new AbstractChangeSetImpl(cloneElt); cloneImpl.setXArch(getXArch()); return cloneImpl; } else if (depth == 1) { Element cloneElt = (Element) elt.cloneNode(false); cloneElt = (Element) doc.importNode(cloneElt, true); AbstractChangeSetImpl cloneImpl = new AbstractChangeSetImpl(cloneElt); cloneImpl.setXArch(getXArch()); NodeList nl = elt.getChildNodes(); int size = nl.getLength(); for (int i = 0; i < size; i++) { Node n = nl.item(i); Node cloneNode = (Node) n.cloneNode(false); cloneNode = doc.importNode(cloneNode, true); cloneElt.appendChild(cloneNode); } return cloneImpl; } else /* depth = infinity */ { Element cloneElt = (Element) elt.cloneNode(true); cloneElt = (Element) doc.importNode(cloneElt, true); AbstractChangeSetImpl cloneImpl = new AbstractChangeSetImpl(cloneElt); cloneImpl.setXArch(getXArch()); return cloneImpl; } } }
/** For internal use only. */ private static Object makeDerivedWrapper(Element elt, String baseTypeName) { synchronized (DOMUtils.getDOMLock(elt)) { QName typeName = XArchUtils.getXSIType(elt); if (typeName == null) { return null; } else { if (!DOMUtils.hasXSIType( elt, "http://www.ics.uci.edu/pub/arch/xArch/changesets.xsd", baseTypeName)) { try { String packageTitle = XArchUtils.getPackageTitle(typeName.getNamespaceURI()); String packageName = XArchUtils.getPackageName(packageTitle); String implName = XArchUtils.getImplName(packageName, typeName.getName()); Class c = Class.forName(implName); java.lang.reflect.Constructor con = c.getConstructor(new Class[] {Element.class}); Object o = con.newInstance(new Object[] {elt}); return o; } catch (Exception e) { // Lots of bad things could happen, but this // is OK, because this is best-effort anyway. } } return null; } } }
public void removeRepositoryLocation(IRepositoryLocation repositoryLocationToRemove) { if (!(repositoryLocationToRemove instanceof DOMBased)) { throw new IllegalArgumentException("Cannot handle non-DOM-based xArch entities."); } NodeList nl = DOMUtils.getChildren(elt, JavasourcecodeConstants.NS_URI, REPOSITORY_LOCATION_ELT_NAME); for (int i = 0; i < nl.getLength(); i++) { Node n = nl.item(i); if (n == ((DOMBased) repositoryLocationToRemove).getDOMNode()) { synchronized (DOMUtils.getDOMLock(elt)) { elt.removeChild(n); } IXArch context = getXArch(); if (context != null) { context.fireXArchEvent( new XArchEvent( this, XArchEvent.REMOVE_EVENT, XArchEvent.ELEMENT_CHANGED, "repositoryLocation", repositoryLocationToRemove, XArchUtils.getDefaultXArchImplementation().isContainedIn(xArch, this))); } return; } } }
public void addRepositoryLocation(IRepositoryLocation newRepositoryLocation) { if (!(newRepositoryLocation instanceof DOMBased)) { throw new IllegalArgumentException("Cannot handle non-DOM-based xArch entities."); } Element newChildElt = (Element) (((DOMBased) newRepositoryLocation).getDOMNode()); newChildElt = DOMUtils.cloneAndRename( newChildElt, JavasourcecodeConstants.NS_URI, REPOSITORY_LOCATION_ELT_NAME); ((DOMBased) newRepositoryLocation).setDOMNode(newChildElt); synchronized (DOMUtils.getDOMLock(elt)) { elt.appendChild(newChildElt); DOMUtils.order(elt, getSequenceOrder()); } IXArch context = getXArch(); if (context != null) { context.fireXArchEvent( new XArchEvent( this, XArchEvent.ADD_EVENT, XArchEvent.ELEMENT_CHANGED, "repositoryLocation", newRepositoryLocation, XArchUtils.getDefaultXArchImplementation().isContainedIn(xArch, this))); } }
public void setSourceCodeManager(IJavaSourceCodeManager value) { if (!(value instanceof DOMBased)) { throw new IllegalArgumentException("Cannot handle non-DOM-based xArch entities."); } { IJavaSourceCodeManager oldElt = getSourceCodeManager(); DOMUtils.removeChildren(elt, JavasourcecodeConstants.NS_URI, SOURCE_CODE_MANAGER_ELT_NAME); IXArch context = getXArch(); if (context != null) { context.fireXArchEvent( new XArchEvent( this, XArchEvent.CLEAR_EVENT, XArchEvent.ELEMENT_CHANGED, "sourceCodeManager", oldElt, XArchUtils.getDefaultXArchImplementation().isContainedIn(xArch, this), true)); } } Element newChildElt = (Element) (((DOMBased) value).getDOMNode()); newChildElt = DOMUtils.cloneAndRename( newChildElt, JavasourcecodeConstants.NS_URI, SOURCE_CODE_MANAGER_ELT_NAME); ((DOMBased) value).setDOMNode(newChildElt); synchronized (DOMUtils.getDOMLock(elt)) { elt.appendChild(newChildElt); DOMUtils.order(elt, getSequenceOrder()); } IXArch context = getXArch(); if (context != null) { context.fireXArchEvent( new XArchEvent( this, XArchEvent.SET_EVENT, XArchEvent.ELEMENT_CHANGED, "sourceCodeManager", value, XArchUtils.getDefaultXArchImplementation().isContainedIn(xArch, this))); } }
public void setChangeSet(edu.uci.isr.xarch.instance.IXMLLink value) { if (!(value instanceof DOMBased)) { throw new IllegalArgumentException("Cannot handle non-DOM-based xArch entities."); } { edu.uci.isr.xarch.instance.IXMLLink oldElt = getChangeSet(); DOMUtils.removeChildren(elt, ChangesetsConstants.NS_URI, CHANGE_SET_ELT_NAME); IXArch context = getXArch(); if (context != null) { context.fireXArchEvent( new XArchEvent( this, XArchEvent.CLEAR_EVENT, XArchEvent.ELEMENT_CHANGED, "changeSet", oldElt, XArchUtils.getDefaultXArchImplementation().isContainedIn(xArch, this), true)); } } Element newChildElt = (Element) (((DOMBased) value).getDOMNode()); newChildElt = DOMUtils.cloneAndRename(newChildElt, ChangesetsConstants.NS_URI, CHANGE_SET_ELT_NAME); ((DOMBased) value).setDOMNode(newChildElt); synchronized (DOMUtils.getDOMLock(elt)) { elt.appendChild(newChildElt); DOMUtils.order(elt, getSequenceOrder()); } IXArch context = getXArch(); if (context != null) { context.fireXArchEvent( new XArchEvent( this, XArchEvent.SET_EVENT, XArchEvent.ELEMENT_CHANGED, "changeSet", value, XArchUtils.getDefaultXArchImplementation().isContainedIn(xArch, this))); } }