|
What this is
Other links
The source code
/*
* Sun Public License Notice
*
* The contents of this file are subject to the Sun Public License
* Version 1.0 (the "License"). You may not use this file except in
* compliance with the License. A copy of the License is available at
* http://www.sun.com/
*
* The Original Code is NetBeans. The Initial Developer of the Original
* Code is Sun Microsystems, Inc. Portions Copyright 1997-2001 Sun
* Microsystems, Inc. All Rights Reserved.
*/
package org.netbeans.jmiimpl.mof.model;
import java.util.*;
import javax.jmi.model.*;
import javax.jmi.reflect.*;
import org.netbeans.mdr.util.*;
import org.netbeans.mdr.storagemodel.*;
import org.netbeans.mdr.persistence.*;
import org.netbeans.mdr.handlers.*;
/**
* Implements MOF operations
*
* @author mmatula
*/
public abstract class NamespaceImpl extends ModelElementImpl implements Namespace {
protected NamespaceImpl(StorableObject storable) {
super(storable);
}
private static final HashMap contains = new HashMap();
protected static StorableAssociation resolveContains(StorableFeatured storable) throws StorageException {
StorableAssociation result = (StorableAssociation) contains.get(storable.getOutermostPackageId());
if (result == null) {
result = storable.getClassProxy().getReferenceDescriptor(MOFConstants.SH_MODEL_MODEL_ELEMENT_CONTAINER).getAssociation();
contains.put(storable.getOutermostPackageId(), result);
}
return result;
}
// --- operations
public ModelElement lookupElement(String name) throws NameNotFoundException {
_lock(false);
try {
Collection contents;
// StorableFeatured storable = (StorableFeatured) _getDelegate();
// Collection items = storable.getMdrStorage().objectsFromAdditionalIndex(storable.getOutermostPackageId(), "ModelElement.name", name);
//
// if (items != null) {
// try {
// StorableAssociation assoc = resolveContains(storable);
// contents = (Collection) assoc.queryObjects(assoc.getEnd1Name(), storable.getMofId());
// } catch (StorageException e) {
// throw Logger.getDefault().annotate(new DebugException(), e);
// }
// Object result;
// for (Iterator it = items.iterator(); it.hasNext();) {
// result = it.next();
// if (contents.contains(result)) {
// return (ModelElement) BaseObjectHandler.getHandler((StorableBaseObject) result);
// }
// }
// } else {
contents = getContents();
for(Iterator it = contents.iterator(); it.hasNext();) {
ModelElement el = (ModelElement) it.next();
if (el.getName().equals(name)) {
return el;
}
}
// }
} finally {
_unlock();
}
throw new NameNotFoundException(name);
}
public ModelElement resolveQualifiedName(List qualifiedName) throws NameNotResolvedException {
if (qualifiedName.size() < 1) {
throw new DebugException("No qualified name provided.");
}
ModelElement element;
Iterator qnIterator = qualifiedName.iterator();
String name = (String) qnIterator.next();
ArrayList rest = new ArrayList();
_lock(false);
try {
try {
element = lookupElement(name);
} catch (NameNotFoundException e) {
throw new NameNotResolvedException("InvalidName", qualifiedName);
}
for (; qnIterator.hasNext();) {
rest.add(qnIterator.next());
}
if (rest.size() >= 1) {
if (element instanceof Namespace) {
element = ((Namespace) element).resolveQualifiedName(rest);
} else {
throw new NameNotResolvedException("NotNameSpace", qualifiedName);
}
}
} finally {
_unlock();
}
return element;
}
public boolean nameIsValid(String proposedName) {
_lock(false);
try {
if (this instanceof GeneralizableElement) {
((GeneralizableElement) this).lookupElementExtended(proposedName);
} else {
this.lookupElement(proposedName);
}
return false;
} catch (NameNotFoundException e) {
return true;
} finally {
_unlock();
}
}
public List findElementsByType(javax.jmi.model.MofClass ofType, boolean includeSubtypes ) {
_lock(false);
try {
ArrayList result = new ArrayList();
Collection contents = getContents();
RefObject element;
for (Iterator it = contents.iterator(); it.hasNext();) {
element = (RefObject) it.next();
if (element.refIsInstanceOf(ofType, includeSubtypes)) {
result.add(element);
}
}
return result;
} finally {
_unlock();
}
}
// --- derived attributes
}
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.