|
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 Forte for Java, Community Edition. The Initial * Developer of the Original Code is Sun Microsystems, Inc. Portions * Copyright 1997-2002 Sun Microsystems, Inc. All Rights Reserved. */ package org.netbeans.modules.mdrxml; import java.util.*; import javax.jmi.reflect.RefPackage; import javax.jmi.model.*; import org.openide.TopManager; import org.openide.util.*; import org.openide.modules.ModuleInstall; import org.netbeans.api.mdr.*; import xmlmodel.*; public class MDRXMLModule extends ModuleInstall { // standard extent name for all MOF metamodels public static final String XML_METAMODEL = "org.netbeans.mof"; // extent name for instance of metamodel of XML public static final String XML_MODEL = "org.netbeans.xmlmodel"; // name of XML metamodel package public static final String XML_PACKAGE = "XMLModel"; /** Called when module is installed for the first time. */ public void installed () { restored(); } /** Module is being loaded into the IDE. */ public void restored () { RequestProcessor.postRequest( new Runnable() { public void run() { TopManager.getDefault().setStatusText("Restoring metamodel of XML..."); installXML(); TopManager.getDefault().setStatusText(""); } } ); } /** Module was uninstalled. */ public void uninstalled () { } /** Module is being closed. * @return True if the close is O.K. */ public boolean closing () { return true; // agree to close } // PRIVATE METHODS --------------------------------------------------------- public static void installXML() { // find repository implementation using MDRManager MDRepository repository = MDRManager.getDefault().getDefaultRepository(); // [PENDING] here I should check whether the repository was found // get connection to instance of XML metamodel if (repository.getExtent(XML_MODEL) != null) return; // if the instance was not found, try to get an instance of MOF metamodel (standard extent for storing metamodels) ModelPackage xmlMMExtent = (ModelPackage) repository.getExtent(XML_METAMODEL); try { if (xmlMMExtent == null) { // if the MOF instance was not found, create it xmlMMExtent = (ModelPackage) repository.createExtent(XML_METAMODEL); } // find definition of metamodel of XML in the instance of MOF MofPackage xmlMMPackage = findXMLPackage(xmlMMExtent); // if it was not found, read it from its XML definition file if (xmlMMPackage == null) { // Read the XMI document XMIReader xmiReader = XMIReader.getDefault(); xmiReader.read(XmlmodelPackage.class.getResource("resources/xmlmodel.xml").toString (), new RefPackage[] {xmlMMExtent}); // after the metamodel was read, try to find its definition again xmlMMPackage = findXMLPackage(xmlMMExtent); } // create instance of the metamodel of filesystems from its definition repository.createExtent(XML_MODEL, xmlMMPackage); } catch (CreationFailedException mer) { TopManager.getDefault().getErrorManager().notify (mer); mer.printStackTrace(); } catch (java.io.IOException ioex) { TopManager.getDefault().getErrorManager().notify (ioex); } catch(Exception saex) { TopManager.getDefault().getErrorManager().notify (saex); } } private static MofPackage findXMLPackage(ModelPackage extent) { for (Iterator it = extent.getMofPackage().refAllOfClass().iterator(); it.hasNext();) { ModelElement temp = (ModelElement) it.next(); if (temp.getName().equals(XML_PACKAGE)) { return (MofPackage) temp; } } return null; } } |
... 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.