From: Steve L. <st...@us...> - 2006-02-01 15:15:41
|
Update of /cvsroot/smartfrog/core/extras/cdl/src/org/smartfrog/sfcore/languages/cdl/components In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27235/src/org/smartfrog/sfcore/languages/cdl/components Modified Files: CdlComponentDescription.java CdlComponentDescriptionImpl.java Log Message: Early deployment is now functional, but there is still a problem of binding to sfClass and other things that take strings Index: CdlComponentDescriptionImpl.java =================================================================== RCS file: /cvsroot/smartfrog/core/extras/cdl/src/org/smartfrog/sfcore/languages/cdl/components/CdlComponentDescriptionImpl.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** CdlComponentDescriptionImpl.java 31 Jan 2006 17:25:37 -0000 1.2 --- CdlComponentDescriptionImpl.java 1 Feb 2006 15:15:23 -0000 1.3 *************** *** 41,48 **** import java.util.Vector; import java.util.Enumeration; /** * This is an extended component description that is used when turning a CDL graph into a smartfrog graph ! * * There is a special bit of deviousness here. * Every Node that is in the Smartfrog XML namespace {@link Constants#SMARTFROG_NAMESPACE} --- 41,49 ---- import java.util.Vector; import java.util.Enumeration; + import java.rmi.RemoteException; /** * This is an extended component description that is used when turning a CDL graph into a smartfrog graph ! * <p/> * There is a special bit of deviousness here. * Every Node that is in the Smartfrog XML namespace {@link Constants#SMARTFROG_NAMESPACE} *************** *** 50,55 **** * full namespace. So by using sf namespaced elements, we can merge a CDL description into a smartfrog one, * without contaminating any local namespaced elements. ! * ! * * created 24-Jan-2006 13:34:37 */ --- 51,56 ---- * full namespace. So by using sf namespaced elements, we can merge a CDL description into a smartfrog one, * without contaminating any local namespaced elements. ! * <p/> ! * <p/> * created 24-Jan-2006 13:34:37 */ *************** *** 57,78 **** public class CdlComponentDescriptionImpl extends SFComponentDescriptionImpl implements CdlComponentDescription, Phases { ! /** node name */ private QName qname; private ParseContext parseContext; ! public static final String PHASE_BUILD="build"; ! public CdlComponentDescriptionImpl(Reference type, SFComponentDescription parent, Context cxt, boolean eager) { super(type, parent, cxt, eager); } ! public CdlComponentDescriptionImpl(QName name, SFComponentDescription parent) { ! this(name,parent, new ContextImpl(),true); } /** * Create and bind to the parent using the qname * @param name * @param parent --- 58,82 ---- public class CdlComponentDescriptionImpl extends SFComponentDescriptionImpl implements CdlComponentDescription, Phases { ! /** ! * node name ! */ private QName qname; private ParseContext parseContext; ! public static final String PHASE_BUILD = "build"; ! public CdlComponentDescriptionImpl(Reference type, CdlComponentDescription parent, Context cxt, boolean eager) { super(type, parent, cxt, eager); } ! public CdlComponentDescriptionImpl(QName name, CdlComponentDescription parent) { ! this(name, parent, new ContextImpl(), true); } /** * Create and bind to the parent using the qname + * * @param name * @param parent *************** *** 80,102 **** * @param eager */ ! public CdlComponentDescriptionImpl(QName name, SFComponentDescription parent, Context cxt, boolean eager) { ! super(null,(SFComponentDescription) parent, cxt, eager); ! qname=name; } /** - * * Create and bind to the parent using the qname * @throws SmartFrogRuntimeException */ ! public void registerWithParent() throws SmartFrogRuntimeException { ! if(sfParent()!=null) { ! assert qname!=null; ! Object name=qname; ! if(Constants.SMARTFROG_NAMESPACE.equals(qname.getNamespaceURI())) { ! ! name=qname.getLocalPart(); ! } ! sfParent().sfReplaceAttribute(qname,this); } } --- 84,102 ---- * @param eager */ ! public CdlComponentDescriptionImpl(QName name, CdlComponentDescription parent, Context cxt, boolean eager) { ! super(null, (SFComponentDescription) parent, cxt, eager); ! qname = name; } /** * Create and bind to the parent using the qname + * * @throws SmartFrogRuntimeException */ ! public void registerWithParent() throws SmartFrogException, RemoteException { ! if (sfParent() != null) { ! assert qname != null; ! CdlComponentDescription cdlParent = (CdlComponentDescription) sfParent(); ! cdlParent.replace(qname, this); } } *************** *** 162,166 **** * @param phase the phase to apply * @return An instance of Phases that is the result of applying the phase. ! * @throws org.smartfrog.sfcore.common.SmartFrogException error evaluating phases */ public Phases sfResolvePhase(String phase) --- 162,167 ---- * @param phase the phase to apply * @return An instance of Phases that is the result of applying the phase. ! * @throws org.smartfrog.sfcore.common.SmartFrogException ! * error evaluating phases */ public Phases sfResolvePhase(String phase) *************** *** 176,180 **** * @return the resultant Phases object, ready for the * next phase action or convertion into the core ComponentDescription ! * @throws org.smartfrog.sfcore.common.SmartFrogException In case of SmartFrog system error */ public Phases sfResolvePhases(Vector phases) --- 177,182 ---- * @return the resultant Phases object, ready for the * next phase action or convertion into the core ComponentDescription ! * @throws org.smartfrog.sfcore.common.SmartFrogException ! * In case of SmartFrog system error */ public Phases sfResolvePhases(Vector phases) *************** *** 211,215 **** protected CdlComponentDescription resolveRootNode() throws SmartFrogResolutionException { ! Reference system =new Reference(Constants.QNAME_SYSTEM_ELEMENT); return (CdlComponentDescription) sfResolve(system); } --- 213,217 ---- protected CdlComponentDescription resolveRootNode() throws SmartFrogResolutionException { ! Reference system = new Reference(Constants.QNAME_SYSTEM_ELEMENT); return (CdlComponentDescription) sfResolve(system); } *************** *** 229,235 **** private SmartFrogCompilationException notImplemented(String text) { ! return new SmartFrogCompilationException("not implemented "+text); } } --- 231,267 ---- private SmartFrogCompilationException notImplemented(String text) { ! return new SmartFrogCompilationException("not implemented " + text); } + /** + * Helper operation to do a full resolve of a child thing + * + * @param child + * @param mandatory + * @return the thing at the end of the link, or null for no match + * @throws SmartFrogResolutionException if there is no match and mandatory==true + */ + public Object resolve(QName child, boolean mandatory) throws SmartFrogResolutionException { + Reference r = new Reference(child); + return sfResolve(r, mandatory); + } + /** + * Like sfReplace but with some special magic related to stuff in the local namespace, which + * is turned into non-qname stuff. + * + * @param child + * @param value + * @throws org.smartfrog.sfcore.common.SmartFrogResolutionException + * + * @throws java.rmi.RemoteException + */ + public void replace(QName child, Object value) throws SmartFrogException, RemoteException { + Object name = child; + final String namespaceURI = child.getNamespaceURI(); + if (Constants.SMARTFROG_NAMESPACE.equals(namespaceURI) || namespaceURI.length()==0) { + name = child.getLocalPart(); + } + sfReplaceAttribute(name, value); + } } Index: CdlComponentDescription.java =================================================================== RCS file: /cvsroot/smartfrog/core/extras/cdl/src/org/smartfrog/sfcore/languages/cdl/components/CdlComponentDescription.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** CdlComponentDescription.java 26 Jan 2006 16:39:50 -0000 1.1 --- CdlComponentDescription.java 1 Feb 2006 15:15:23 -0000 1.2 *************** *** 22,25 **** --- 22,27 ---- import org.smartfrog.sfcore.componentdescription.ComponentDescription; import org.smartfrog.sfcore.languages.sf.sfcomponentdescription.SFComponentDescription; + import org.smartfrog.sfcore.common.SmartFrogResolutionException; + import org.smartfrog.sfcore.common.SmartFrogException; import javax.xml.namespace.QName; *************** *** 41,43 **** --- 43,64 ---- */ public QName getQName() throws RemoteException; + + /** + * Helper operation to do a full resolve of a child thing + * @param child + * @param mandatory + * @return the thing at the end of the link, or null for no match + * @throws org.smartfrog.sfcore.common.SmartFrogResolutionException if there is no match and mandatory==true + */ + Object resolve(QName child,boolean mandatory) throws SmartFrogResolutionException, RemoteException; + + /** + * Like sfReplace but with some special magic related to stuff in the local namespace, which + * is turned into non-qname stuff. + * @param child + * @param value + * @throws SmartFrogResolutionException + * @throws RemoteException + */ + void replace(QName child,Object value) throws SmartFrogResolutionException, RemoteException, SmartFrogException; } |