package org.archstudio.xadl.myx; import org.archstudio.myx.fw.IMyxBrickDescription; import org.archstudio.myx.fw.MyxUnsupportedBrickDescriptionException; import org.archstudio.myxgen.eclipse.MyxGenBrickDescription; import org.archstudio.xadl.XadlUtils; import org.archstudio.xadl3.myxgen_3_0.Myxgen_3_0Package; import org.archstudio.xadl3.osgiimplementation_3_0.OSGiImplementation; import org.archstudio.xadl3.osgiimplementation_3_0.Osgiimplementation_3_0Package; import org.archstudio.xarchadt.IXArchADT; import org.archstudio.xarchadt.ObjRef; import org.archstudio.xarchadt.XArchADTProxy; public class MyxGenBrickDescriptionFromXadl implements IMyxBrickDescriptionFromXadl { @Override public IMyxBrickDescription parse(IXArchADT xarch, ObjRef brickRef) throws MyxUnsupportedBrickDescriptionException { ObjRef myxGenImplRef = XadlUtils.getImplementation(xarch, brickRef, Myxgen_3_0Package.Literals.MYX_GEN); if (myxGenImplRef == null) { return null; } String myxGenBrickID = (String) xarch.get(myxGenImplRef, "brickID"); if (myxGenBrickID == null) { throw new MyxUnsupportedBrickDescriptionException("MyxGen implementation lacks a brick ID: " + XadlUtils.getName(xarch, brickRef)); } String osgiBundleName = null; OSGiImplementation osgiImpl = XArchADTProxy.proxy(xarch, XadlUtils.getImplementation(xarch, brickRef, Osgiimplementation_3_0Package.Literals.OS_GI_IMPLEMENTATION)); if (osgiImpl != null) { osgiBundleName = osgiImpl.getBundle(); } return new MyxGenBrickDescription(null, osgiBundleName, myxGenBrickID); } }