blob: 694150f90b3e72c1edf9b0284977ef3c76841c98 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.netbeans.modules.j2ee.sun.ddloaders;
import java.util.logging.Level;
import org.netbeans.api.project.FileOwnerQuery;
import org.netbeans.api.project.Project;
import org.netbeans.modules.xml.multiview.SectionNode;
import org.netbeans.modules.xml.multiview.ui.SectionNodeInnerPanel;
import org.netbeans.modules.xml.multiview.ui.SectionNodeView;
import org.netbeans.modules.xml.multiview.ToolBarMultiViewElement;
import org.netbeans.api.xml.cookies.CheckXMLCookie;
import org.netbeans.api.xml.cookies.ValidateXMLCookie;
import org.netbeans.spi.xml.cookies.CheckXMLSupport;
import org.netbeans.spi.xml.cookies.DataObjectAdapters;
import org.netbeans.spi.xml.cookies.ValidateXMLSupport;
import org.openide.ErrorManager;
import org.openide.filesystems.*;
import org.openide.loaders.DataFolder;
import org.openide.loaders.DataObject;
import org.openide.loaders.DataObjectExistsException;
import org.openide.nodes.CookieSet;
import org.openide.nodes.Node;
import org.openide.util.HelpCtx;
import org.xml.sax.InputSource;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyVetoException;
import java.io.File;
import java.io.IOException;
import java.util.logging.Logger;
import javax.enterprise.deploy.shared.ModuleType;
import org.netbeans.core.spi.multiview.MultiViewElement;
import org.netbeans.modules.glassfish.eecommon.api.config.GlassfishConfiguration;
import org.netbeans.modules.j2ee.sun.dd.api.ASDDVersion;
import org.netbeans.modules.j2ee.sun.dd.api.DDProvider;
import org.netbeans.modules.j2ee.sun.dd.api.RootInterface;
import org.netbeans.modules.j2ee.sun.dd.impl.RootInterfaceImpl;
import org.netbeans.modules.glassfish.eecommon.api.config.J2EEBaseVersion;
import org.netbeans.modules.j2ee.deployment.devmodules.api.J2eeModule;
import org.netbeans.modules.j2ee.sun.ddloaders.multiview.appclient.SunAppClientOverviewMultiViewElement;
import org.netbeans.modules.j2ee.sun.ddloaders.multiview.common.EnvironmentMultiViewElement;
import org.netbeans.modules.j2ee.sun.ddloaders.multiview.common.SecurityRoleMappingMultiViewElement;
import org.netbeans.modules.j2ee.sun.ddloaders.multiview.ejb.EjbMultiViewElement;
import org.netbeans.modules.j2ee.sun.ddloaders.multiview.ejb.SunEjbOverviewMultiViewElement;
import org.netbeans.modules.j2ee.sun.ddloaders.multiview.jms.JmsMultiViewElement;
import org.netbeans.modules.j2ee.sun.ddloaders.multiview.web.ServletMultiViewElement;
import org.netbeans.modules.j2ee.sun.ddloaders.multiview.web.SunWebOverviewMultiViewElement;
import org.netbeans.modules.j2ee.sun.ddloaders.multiview.webservice.WebServiceMultiViewElement;
import org.netbeans.modules.schema2beans.Schema2BeansException;
import org.netbeans.modules.schema2beans.Schema2BeansRuntimeException;
import org.netbeans.modules.xml.multiview.XmlMultiViewElement;
import org.openide.util.Lookup;
import org.openide.util.Mutex;
import org.openide.windows.TopComponent;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
/**
* Represents a DD object in the Repository.
*
* @author pfiala
* @author Peter Williams
*/
@MIMEResolver.Registration(
displayName="org.netbeans.modules.j2ee.sun.share.Bundle#SunResolver",
position=350,
resource="../share/sun-dd-mime-resolver.xml"
)
public class SunDescriptorDataObject extends DDMultiViewDataObject
{
@Override
protected int getXMLMultiViewIndex() {
return xmlIndex; // 6; //super.getXMLMultiViewIndex();
}
/**
* Property name for documentDTD property
*/
public static final String PROP_DOCUMENT_DTD = "documentDTD"; // NOI18N
// Serialization
private static final long serialVersionUID = 8957663189355029479L;
private final Object proxyMonitor = new Object();
private volatile RootInterfaceImpl ddRootProxy;
private PropertyChangeListener ddRootChangeListener;
private DDType descriptorType;
private final int xmlIndex;
public SunDescriptorDataObject(FileObject pf, SunDescriptorDataLoader loader) throws DataObjectExistsException {
super(pf, loader);
descriptorType = DDType.getDDType(pf.getNameExt());
// XML Validation cookies
InputSource in = DataObjectAdapters.inputSource(this);
CheckXMLCookie checkCookie = new CheckXMLSupport(in);
getCookieSet().add(checkCookie);
ValidateXMLCookie validateCookie = new ValidateXMLSupport(in);
CookieSet set = getCookieSet();
set.add(validateCookie);
if (null == descriptorType) {
xmlIndex = 0;
} else if (descriptorType.equals(DDType.DD_GF_WEB_APP) ||
descriptorType.equals(DDType.DD_SUN_WEB_APP)) {
xmlIndex = 6;
} else if (descriptorType.equals(DDType.DD_GF_APPLICATION) ||
descriptorType.equals(DDType.DD_SUN_APPLICATION)) {
xmlIndex = 1;
} else if (descriptorType.equals(DDType.DD_GF_EJB_JAR) ||
descriptorType.equals(DDType.DD_SUN_EJB_JAR)) {
xmlIndex = 5;
} else if (descriptorType.equals(DDType.DD_GF_APP_CLIENT) ||
descriptorType.equals(DDType.DD_SUN_APP_CLIENT)) {
xmlIndex = 4;
} else {
xmlIndex = 0;
}
}
/** Returns what the module type ought to be for this particular descriptor
* file (e.g. if someone puts sun-ejb-jar.xml into a web module folder, this
* api will return J2eeModule.Type.EJB for this dataobject even though j2eeserver
* will return J2eeModule.Type.WAR for the project's module type.
*/
public J2eeModule.Type getModuleType() {
// FIXME What should this return for a sun-resource.xml file? Right, it returns null.
return descriptorType.getEditorModuleType();
}
private Project getProject() {
return FileOwnerQuery.getOwner(getPrimaryFile());
}
public FileObject getProjectDirectory() {
Project project = getProject();
return project == null ? null : project.getProjectDirectory();
}
public ASDDVersion getASDDVersion() {
// !PW FIXME default version ought to be current project server version,
// if any, otherwise, current installed server, if any.
return DDProvider.getASDDVersion(getDDModel(), ASDDVersion.SUN_APPSERVER_8_1);
}
/** Ask the configuration (if we have one) what the J2EE/JavaEE version of
* this project is.
*
* @return J2EE version object for this project or null if it cannot be determined.
* (ie no configuration for some reason or bad module type, etc.)
*/
public J2EEBaseVersion getJ2eeModuleVersion() {
File fileKey = FileUtil.toFile(getPrimaryFile());
if(fileKey != null) {
// Find configuration via key derived from primary file.
if("sun-cmp-mappings.xml".equals(fileKey.getName())) {
fileKey = new File(fileKey.getParentFile(), "sun-ejb-jar.xml");
}
}
// If we can't locate the configuration (either not there or no valid key)
// then just return null version. Nothing else we can do.
GlassfishConfiguration config = GlassfishConfiguration.getConfiguration(fileKey);
return (config != null) ? config.getJ2eeVersion() : null;
}
public RootInterface getDDRoot() {
return getDDRootImpl(true);
}
private RootInterface getDDRootImpl(final boolean notify) {
RootInterface localProxy = null;
synchronized (proxyMonitor) {
if (ddRootProxy == null) {
try {
parseDocument();
} catch (IOException ex) {
if(notify) {
notifyError(ex);
} else {
ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL, ex);
}
}
}
localProxy = ddRootProxy != null ? ddRootProxy.getRootInterface() : null;
}
return localProxy;
}
@Override
protected Node createNodeDelegate() {
return new SunDescriptorDataNode(this);
}
/**
* gets the Icon Base for node delegate when parser accepts the xml document as valid
* <p/>
* PENDING: move into node
*
* @return Icon Base for node delegate
*/
protected String getIconBaseForValidDocument() {
return Utils.ICON_BASE_DD_VALID;
}
/**
* gets the Icon Base for node delegate when parser finds error(s) in xml document
*
* @return Icon Base for node delegate
* <p/>
* PENDING: move into node
*/
protected String getIconBaseForInvalidDocument() {
return Utils.ICON_BASE_DD_INVALID; // NOI18N
}
@Override
protected DataObject handleCopy(DataFolder f) throws IOException {
DataObject dataObject = super.handleCopy(f);
try {
dataObject.setValid(false);
} catch (PropertyVetoException e) {
// should not occur
}
return dataObject;
}
@Override
public HelpCtx getHelpCtx() {
return HelpCtx.DEFAULT_HELP;
}
@Override
protected void parseDocument() throws IOException {
DDProvider ddProvider = DDProvider.getDefault();
SAXParseException saxEx = null;
synchronized (proxyMonitor) {
if(ddRootProxy == null || !ddRootProxy.hasOriginal()) {
try {
RootInterfaceImpl newDDRoot = (RootInterfaceImpl) ddProvider.getDDRoot(getPrimaryFile());
if(ddRootProxy != null && ddRootChangeListener != null) {
ddRootProxy.removePropertyChangeListener(ddRootChangeListener);
}
ddRootProxy = newDDRoot;
if(ddRootProxy != null) {
if(ddRootChangeListener == null) {
ddRootChangeListener = new SunDDPropertyChangeListener();
}
ddRootProxy.addPropertyChangeListener(ddRootChangeListener);
}
} catch(IOException ex) {
ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL, ex);
}
} else {
ddProvider.merge(ddRootProxy.getRootInterface(), createReader());
}
saxEx = ddRootProxy != null ? ddRootProxy.getError() : new SAXParseException("No proxy object found created by parser.", null);
}
setSaxError(saxEx);
}
@Override
protected void validateDocument() throws IOException {
try {
RootInterfaceImpl proxyImpl = (RootInterfaceImpl) DDProvider.getDefault().getDDRoot(createReader());
if (null != proxyImpl) {
setSaxError(proxyImpl.getError());
}
} catch(Schema2BeansException ex) {
setSaxError(new SAXException(ex));
} catch(Schema2BeansRuntimeException ex) {
setSaxError(new SAXException(ex));
} catch(SAXException ex) {
setSaxError(ex);
}
}
@Override
protected RootInterface getDDModel() {
return getDDRootImpl(false);
}
@Override
public boolean isDocumentParseable() {
RootInterface ddRoot = getDDRoot();
return ddRoot != null ? (ddRoot.getStatus() != RootInterface.STATE_INVALID_UNPARSABLE) : false;
}
@Override
protected String getPrefixMark() {
// Not used anywhere at this time (ever?) so no point in writing the code
// to figure this out (lookup table, etc.)
return "<notused";
}
/** Used to detect if data model has already been created or not.
* Method is called before switching to the design view from XML view when the document isn't parseable.
*/
@Override
protected boolean isModelCreated() {
boolean result = false;
synchronized (proxyMonitor) {
result = ddRootProxy != null && ddRootProxy.hasOriginal();
}
return result;
}
@Override
public void showElement(final Object element) {
Mutex.EVENT.readAccess(new Runnable() {
@Override
public void run() {
final SectionNodeView sectionView =
(SectionNodeView) SunDescriptorDataObject.this.getActiveMVElement().getSectionView();
final Node root = sectionView.getRoot();
final SectionNode node = ((SectionNode) root.getChildren().getNodes()[0]).getNodeForElement(element);
if (node != null) {
sectionView.openPanel(node);
((SectionNodeInnerPanel) node.getSectionNodePanel().getInnerPanel()).focusData(element);
}
}
});
}
/** Enable to access Active element
*
* @return toolbar element to use for this editor.
*/
public ToolBarMultiViewElement getActiveMVElement() {
return (ToolBarMultiViewElement) super.getActiveMultiViewElement();
}
private boolean fireEvent(String oldResourceName, String resourceName, int eventType) {
// TODO what should this do?
// boolean elementFound = false;
// String resource;
// int specificEventType = -1;
// if (eventType == DDChangeEvent.EJB_CHANGED) {
// resource = oldResourceName;
// } else {
// resource = resourceName;
// }
// Ejb ejb = getEjbFromEjbClass(resource);
//
// if (ejb != null) {
// if (eventType == DDChangeEvent.EJB_CHANGED) {
// specificEventType = DDChangeEvent.EJB_CLASS_CHANGED;
// } else {
// specificEventType = DDChangeEvent.EJB_CLASS_DELETED;
// }
// elementFound = true;
// }
//
// if (!elementFound) {
// int interfaceType = getBeanInterfaceType(resource);
//
// if (interfaceType > 0) {
// specificEventType =
// getSpecificEvent(eventType, interfaceType);
// elementFound = true;
// }
// }
// if (elementFound) {
// assert(specificEventType > 0);
// DDChangeEvent ddEvent =
// new DDChangeEvent(this, this, oldResourceName,
// resourceName, specificEventType);
// deploymentChange(ddEvent);
// }
// return elementFound;
return false;
}
private static class SunDDPropertyChangeListener implements PropertyChangeListener {
@Override
public void propertyChange(PropertyChangeEvent evt) {
// TODO what should this do?
// if (EjbJar.PROPERTY_STATUS.equals(evt.getPropertyName())) {
// return;
// }
// Object source = evt.getSource();
// if (source instanceof EnterpriseBeans) {
// Object oldValue = evt.getOldValue();
// Object newValue = evt.getNewValue();
// if ((oldValue instanceof Entity || newValue instanceof Entity)) {
// entityHelperMap.keySet().retainAll(Arrays.asList(((EnterpriseBeans) source).getEntity()));
// } else if ((oldValue instanceof Session || newValue instanceof Session)) {
// sessionHelperMap.keySet().retainAll(Arrays.asList(((EnterpriseBeans) source).getSession()));
// }
// }
}
}
@Override
protected String getEditorMimeType() {
String mimeTypePrefix = DDType.IPLANET_MIME_TYPE_PREFIX;
ASDDVersion asDDVersion = getASDDVersion();
if (ASDDVersion.SUN_APPSERVER_7_0.compareTo(asDDVersion) < 0) {
mimeTypePrefix = DDType.SUN_MIME_TYPE_PREFIX;
}
if (ASDDVersion.SUN_APPSERVER_9_0.compareTo(asDDVersion) < 0 &&
(descriptorType.equals(DDType.DD_SUN_APP_CLIENT) ||
descriptorType.equals(DDType.DD_GF_APP_CLIENT))) {
mimeTypePrefix = DDType.GLASSFISH_MIME_TYPE_PREFIX;
}
Logger.getLogger("glassfish-ddui").log(Level.FINE, "{0}{1}", new Object[]{mimeTypePrefix, descriptorType.getDescriptorMimeTypeSuffix()});
return mimeTypePrefix+descriptorType.getDescriptorMimeTypeSuffix();
}
// x-web.xml specific MultiViewElement objects
@MultiViewElement.Registration(
mimeType={ DDType.IPLANET_MIME_TYPE_PREFIX + DDType.WEB_MIME_TYPE_SUFFIX,
DDType.SUN_MIME_TYPE_PREFIX + DDType.WEB_MIME_TYPE_SUFFIX
},
iconBase="org/netbeans/modules/j2ee/sun/ddloaders/resources/DDDataIcon.gif",
persistenceType=TopComponent.PERSISTENCE_ONLY_OPENED,
preferredID="multiview_xml_gf_web_over",
displayName="#CTL_OverviewTabCaption",
position=1
)
public static MultiViewElement createWebOverviewMultiViewElement(Lookup lookup) {
return new SunWebOverviewMultiViewElement(lookup.lookup(SunDescriptorDataObject.class));
}
@MultiViewElement.Registration(
mimeType={ DDType.IPLANET_MIME_TYPE_PREFIX + DDType.WEB_MIME_TYPE_SUFFIX,
DDType.SUN_MIME_TYPE_PREFIX + DDType.WEB_MIME_TYPE_SUFFIX
},
iconBase="org/netbeans/modules/j2ee/sun/ddloaders/resources/DDDataIcon.gif",
persistenceType=TopComponent.PERSISTENCE_ONLY_OPENED,
preferredID="multiview_xml_gf_web_servlet",
displayName="#CTL_ServletsTabCaption",
position=2
)
public static MultiViewElement createServletsMultiViewElement(Lookup lookup) {
return new ServletMultiViewElement(lookup.lookup(SunDescriptorDataObject.class));
}
// *-ejb-jar.xml MultiViewElement objects
@MultiViewElement.Registration(
mimeType={ DDType.IPLANET_MIME_TYPE_PREFIX + DDType.EJB_MIME_TYPE_SUFFIX,
DDType.SUN_MIME_TYPE_PREFIX + DDType.EJB_MIME_TYPE_SUFFIX
},
iconBase="org/netbeans/modules/j2ee/sun/ddloaders/resources/DDDataIcon.gif",
persistenceType=TopComponent.PERSISTENCE_ONLY_OPENED,
preferredID="multiview_xml_gf_ejb_overview",
displayName="#CTL_OverviewTabCaption",
position=1
)
public static MultiViewElement createEjbOveriewMultiViewElement(Lookup lookup) {
return new SunEjbOverviewMultiViewElement(lookup.lookup(SunDescriptorDataObject.class));
}
@MultiViewElement.Registration(
mimeType={ DDType.IPLANET_MIME_TYPE_PREFIX + DDType.EJB_MIME_TYPE_SUFFIX,
DDType.SUN_MIME_TYPE_PREFIX + DDType.EJB_MIME_TYPE_SUFFIX
},
iconBase="org/netbeans/modules/j2ee/sun/ddloaders/resources/DDDataIcon.gif",
persistenceType=TopComponent.PERSISTENCE_ONLY_OPENED,
preferredID="multiview_xml_gf_ejb_ejb",
displayName="#CTL_EjbTabCaption",
position=2
)
public static MultiViewElement createEjbMultiViewElement(Lookup lookup) {
return new EjbMultiViewElement(lookup.lookup(SunDescriptorDataObject.class));
}
// *-app-client.xml MultiViewElement objects
@MultiViewElement.Registration(
mimeType=DDType.GLASSFISH_MIME_TYPE_PREFIX + DDType.APP_CLI_MIME_TYPE_SUFFIX,
iconBase="org/netbeans/modules/j2ee/sun/ddloaders/resources/DDDataIcon.gif",
persistenceType=TopComponent.PERSISTENCE_ONLY_OPENED,
preferredID="multiview_xml_gf_app_cli_overview",
displayName="#CTL_OverviewTabCaption",
position=1
)
public static MultiViewElement createAppCliOverviewViewElement(Lookup lookup) {
return new SunAppClientOverviewMultiViewElement(lookup.lookup(SunDescriptorDataObject.class));
}
// Shared MultiViewElement objects
@MultiViewElement.Registration(
mimeType={ DDType.IPLANET_MIME_TYPE_PREFIX + DDType.APP_MIME_TYPE_SUFFIX,
DDType.SUN_MIME_TYPE_PREFIX + DDType.APP_MIME_TYPE_SUFFIX,
DDType.IPLANET_MIME_TYPE_PREFIX + DDType.EJB_MIME_TYPE_SUFFIX,
DDType.SUN_MIME_TYPE_PREFIX + DDType.EJB_MIME_TYPE_SUFFIX,
DDType.IPLANET_MIME_TYPE_PREFIX + DDType.WEB_MIME_TYPE_SUFFIX,
DDType.SUN_MIME_TYPE_PREFIX + DDType.WEB_MIME_TYPE_SUFFIX
},
iconBase="org/netbeans/modules/j2ee/sun/ddloaders/resources/DDDataIcon.gif",
persistenceType=TopComponent.PERSISTENCE_ONLY_OPENED,
preferredID="multiview_xml_gf_shared_security",
displayName="#CTL_SecurityTabCaption",
position=3
)
public static MultiViewElement createSecurityMultiViewSecurityElement(Lookup lookup) {
return new SecurityRoleMappingMultiViewElement(lookup.lookup(SunDescriptorDataObject.class));
}
@MultiViewElement.Registration(
mimeType={ DDType.SUN_MIME_TYPE_PREFIX + DDType.WEB_MIME_TYPE_SUFFIX,
DDType.SUN_MIME_TYPE_PREFIX + DDType.EJB_MIME_TYPE_SUFFIX,
DDType.SUN_MIME_TYPE_PREFIX + DDType.APP_CLI_MIME_TYPE_SUFFIX,
DDType.GLASSFISH_MIME_TYPE_PREFIX + DDType.APP_CLI_MIME_TYPE_SUFFIX
},
iconBase="org/netbeans/modules/j2ee/sun/ddloaders/resources/DDDataIcon.gif",
persistenceType=TopComponent.PERSISTENCE_ONLY_OPENED,
preferredID="multiview_xml_gf_shared_WS",
displayName="#CTL_WebServiceTabCaption",
position=5
)
public static MultiViewElement createServicesMultiViewElement(Lookup lookup) {
return new WebServiceMultiViewElement(lookup.lookup(SunDescriptorDataObject.class));
}
@MultiViewElement.Registration(
mimeType={ DDType.SUN_MIME_TYPE_PREFIX + DDType.WEB_MIME_TYPE_SUFFIX,
DDType.SUN_MIME_TYPE_PREFIX + DDType.EJB_MIME_TYPE_SUFFIX,
DDType.SUN_MIME_TYPE_PREFIX + DDType.APP_CLI_MIME_TYPE_SUFFIX,
DDType.GLASSFISH_MIME_TYPE_PREFIX + DDType.APP_CLI_MIME_TYPE_SUFFIX
},
iconBase="org/netbeans/modules/j2ee/sun/ddloaders/resources/DDDataIcon.gif",
persistenceType=TopComponent.PERSISTENCE_ONLY_OPENED,
preferredID="multiview_xml_gf_shared_jms",
displayName="#CTL_JmsTabCaption",
position=10
)
public static MultiViewElement createJmsMultiViewElement(Lookup lookup) {
return new JmsMultiViewElement(lookup.lookup(SunDescriptorDataObject.class));
}
@MultiViewElement.Registration(
mimeType={ DDType.IPLANET_MIME_TYPE_PREFIX + DDType.WEB_MIME_TYPE_SUFFIX,
DDType.SUN_MIME_TYPE_PREFIX + DDType.WEB_MIME_TYPE_SUFFIX,
DDType.IPLANET_MIME_TYPE_PREFIX + DDType.APP_CLI_MIME_TYPE_SUFFIX,
DDType.SUN_MIME_TYPE_PREFIX + DDType.APP_CLI_MIME_TYPE_SUFFIX,
DDType.GLASSFISH_MIME_TYPE_PREFIX + DDType.APP_CLI_MIME_TYPE_SUFFIX
},
iconBase="org/netbeans/modules/j2ee/sun/ddloaders/resources/DDDataIcon.gif",
persistenceType=TopComponent.PERSISTENCE_ONLY_OPENED,
preferredID="multiview_xml_gf_shared_environment",
displayName="#CTL_EnvTabCaption",
position=15
)
public static MultiViewElement createEnvMultiViewEnvironmentElement(Lookup lookup) {
return new EnvironmentMultiViewElement(lookup.lookup(SunDescriptorDataObject.class));
}
@MultiViewElement.Registration(
mimeType={ DDType.SUN_MIME_TYPE_PREFIX + DDType.WEB_MIME_TYPE_SUFFIX,
DDType.IPLANET_MIME_TYPE_PREFIX + DDType.WEB_MIME_TYPE_SUFFIX,
DDType.SUN_MIME_TYPE_PREFIX + DDType.EJB_MIME_TYPE_SUFFIX,
DDType.IPLANET_MIME_TYPE_PREFIX + DDType.EJB_MIME_TYPE_SUFFIX,
DDType.SUN_MIME_TYPE_PREFIX + DDType.APP_MIME_TYPE_SUFFIX,
DDType.IPLANET_MIME_TYPE_PREFIX + DDType.APP_MIME_TYPE_SUFFIX,
DDType.SUN_MIME_TYPE_PREFIX + DDType.APP_CLI_MIME_TYPE_SUFFIX,
DDType.IPLANET_MIME_TYPE_PREFIX + DDType.APP_CLI_MIME_TYPE_SUFFIX,
DDType.GLASSFISH_MIME_TYPE_PREFIX + DDType.APP_CLI_MIME_TYPE_SUFFIX,
DDType.SUN_MIME_TYPE_PREFIX + DDType.CMP_MIME_TYPE_SUFFIX,
DDType.IPLANET_MIME_TYPE_PREFIX + DDType.CMP_MIME_TYPE_SUFFIX,
DDType.SUN_MIME_TYPE_PREFIX + DDType.RSRC_MIME_TYPE_SUFFIX,
DDType.IPLANET_MIME_TYPE_PREFIX + DDType.RSRC_MIME_TYPE_SUFFIX
},
iconBase="org/netbeans/modules/j2ee/sun/ddloaders/resources/DDDataIcon.gif",
persistenceType=TopComponent.PERSISTENCE_ONLY_OPENED,
preferredID="multiview_xml_xml",
displayName="#CTL_SourceTabCaption",
position=20
)
public static XmlMultiViewElement createXmlMultiViewElement(Lookup lookup) {
return new XmlMultiViewElement(lookup.lookup(SunDescriptorDataObject.class));
}
}