org.eclipse.emf.ecore.xmi.impl
Class XMLResourceImpl

java.lang.Object
  |
  +--org.eclipse.emf.common.notify.impl.NotifierImpl
        |
        +--org.eclipse.emf.ecore.resource.impl.ResourceImpl
              |
              +--org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl
All Implemented Interfaces:
Notifier, Resource, Resource.Internal, XMLResource
Direct Known Subclasses:
XMIResourceImpl

public class XMLResourceImpl
extends ResourceImpl
implements XMLResource

This class implements the XMLResource interface. It overloads the doLoad method to invoke the XML deserializer rather than using the default XMI loader.


Inner classes inherited from class org.eclipse.emf.ecore.resource.impl.ResourceImpl
ResourceImpl.ContentsEList, ResourceImpl.ModificationTrackingAdapter
 
Inner classes inherited from class org.eclipse.emf.ecore.xmi.XMLResource
XMLResource.XMLInfo, XMLResource.XMLMap
 
Inner classes inherited from class org.eclipse.emf.ecore.resource.Resource
Resource.Diagnostic, Resource.Factory, Resource.Internal, Resource.IOWrappedException
 
Field Summary
protected  java.lang.String encoding
           
protected  java.util.Map eObjectToIDMap
          The map from EObject to ID.
protected  java.util.Map idToEObjectMap
          The map from ID to EObject.
protected  boolean useZip
           
protected  XMLLoad xmlLoad
           
protected  XMLSaveImpl xmlSave
           
 
Fields inherited from class org.eclipse.emf.ecore.resource.impl.ResourceImpl
contents, defaultLoadOptions, defaultSaveOptions, errors, isLoaded, isModified, modificationTrackingAdapter, resourceSet, uri, warnings
 
Fields inherited from class org.eclipse.emf.common.notify.impl.NotifierImpl
eAdapters, EDELIVER, eFlags, ELAST_NOTIFIER_FLAG
 
Fields inherited from interface org.eclipse.emf.ecore.xmi.XMLResource
HREF, NIL, OPTION_DECLARE_XML, OPTION_DISABLE_NOTIFY, OPTION_LINE_WIDTH, OPTION_PROCESS_DANGLING_HREF, OPTION_PROCESS_DANGLING_HREF_DISCARD, OPTION_PROCESS_DANGLING_HREF_RECORD, OPTION_PROCESS_DANGLING_HREF_THROW, OPTION_SCHEMA_LOCATION, OPTION_SKIP_ESCAPE, OPTION_USE_ENCODED_ATTRIBUTE_STYLE, OPTION_XML_MAP, SCHEMA_LOCATION, TYPE, XML_NS, XSI_NS, XSI_URI
 
Fields inherited from interface org.eclipse.emf.ecore.resource.Resource
RESOURCE__CONTENTS, RESOURCE__ERRORS, RESOURCE__IS_LOADED, RESOURCE__IS_MODIFIED, RESOURCE__IS_TRACKING_MODIFICATION, RESOURCE__RESOURCE_SET, RESOURCE__URI, RESOURCE__WARNINGS
 
Constructor Summary
XMLResourceImpl()
          Constructor for XMLResourceImpl.
XMLResourceImpl(URI uri)
          Constructor for XMLResourceImpl.
 
Method Summary
 void attached(EObject eObject)
          Called when the object is attached to this resource, i.e., when it's eResource changes to be this one.
 void changed(EObject eObject, java.lang.String oldID)
          Called when the ID of an object is changed.
protected  XMLHelper createXMLHelper()
           
protected  XMLLoad createXMLLoad()
           
protected  XMLSave createXMLSave()
           
 void detached(EObject eObject)
          Called when the object is detached from this resource, i.e., when it's eResource changes to no longer be this one.
 void doLoad(java.io.InputStream inputStream, java.util.Map options)
          Called to load the resource.
 void doSave(java.io.OutputStream outputStream, java.util.Map options)
          Called to save the resource.
protected  void doUnload()
          Does all the work of unloading the resource.
 java.util.Map getDefaultLoadOptions()
          Returns the map of options that, in addition to the overriding options specified during load, are used to to control load behavior.
 java.util.Map getDefaultSaveOptions()
          Returns the map of options that, in addition to the overriding options specified during save, are used to to control save behavior.
 java.lang.String getEncoding()
          Get the XML encoding for this resource.
protected  EObject getEObjectByID(java.lang.String id)
          Returns the object based on the fragment as an ID.
 java.util.Map getEObjectToIDMap()
          Returns the Map of EObjects as keys and IDs as values.
 java.lang.String getID(EObject eObject)
          Returns the ID if there is one for the given object; if there is no ID, it returns null.
 java.util.Map getIDToEObjectMap()
          Returns the Map with IDs as keys and EObjects as values.
 java.lang.String getURIFragment(EObject eObject)
          Returns the URI fragment that, when passed to getEObject will return the given object.
protected  void init()
           
protected  boolean isPath(java.lang.String uriFragment)
           
 void setEncoding(java.lang.String encoding)
          Set the XML encoding for this resource.
 void setID(EObject eObject, java.lang.String id)
          Sets the ID of the object.
 void setUseZip(boolean useZip)
          Set whether the contents will be zipped.
 java.lang.String toKeyString()
          Returns a string representation of the ID map.
protected  boolean useIDs()
           
 boolean useZip()
          Returns whether the contents will be zipped.
 
Methods inherited from class org.eclipse.emf.ecore.resource.impl.ResourceImpl
addModificationTrackingAdapters, basicSetResourceSet, createModificationTrackingAdapter, getAllContents, getContents, getDefaultURIConverter, getEObject, getEObject, getEObjectForURIFragmentRootSegment, getErrors, getResourceSet, getURI, getURIConverter, getURIFragmentRootSegment, getWarnings, isContentZipEntry, isLoaded, isModified, isTrackingModification, load, load, newContentZipEntry, removeModificationTrackingAdapters, save, save, setLoaded, setModified, setTrackingModification, setURI, toString, unload, unloaded
 
Methods inherited from class org.eclipse.emf.common.notify.impl.NotifierImpl
eAdapters, eDeliver, eNotificationRequired, eNotify, eSetDeliver
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.eclipse.emf.ecore.resource.Resource
getAllContents, getContents, getEObject, getErrors, getResourceSet, getURI, getWarnings, isLoaded, isModified, isTrackingModification, load, load, save, save, setModified, setTrackingModification, setURI, unload
 
Methods inherited from interface org.eclipse.emf.common.notify.Notifier
eAdapters, eDeliver, eNotify, eSetDeliver
 

Field Detail

idToEObjectMap

protected java.util.Map idToEObjectMap
The map from ID to EObject. It is used to store IDs during a load or if the user sets the ID of an object.

eObjectToIDMap

protected java.util.Map eObjectToIDMap
The map from EObject to ID. It is used to store IDs during a load or if the user sets the ID of an object.

encoding

protected java.lang.String encoding

useZip

protected boolean useZip

xmlLoad

protected XMLLoad xmlLoad

xmlSave

protected XMLSaveImpl xmlSave
Constructor Detail

XMLResourceImpl

public XMLResourceImpl()
Constructor for XMLResourceImpl.

XMLResourceImpl

public XMLResourceImpl(URI uri)
Constructor for XMLResourceImpl.
Parameters:
uri -  
Method Detail

init

protected void init()

useIDs

protected boolean useIDs()

getDefaultSaveOptions

public java.util.Map getDefaultSaveOptions()
Description copied from interface: XMLResource
Returns the map of options that, in addition to the overriding options specified during save, are used to to control save behavior.
Specified by:
getDefaultSaveOptions in interface XMLResource

getDefaultLoadOptions

public java.util.Map getDefaultLoadOptions()
Description copied from interface: XMLResource
Returns the map of options that, in addition to the overriding options specified during load, are used to to control load behavior.
Specified by:
getDefaultLoadOptions in interface XMLResource

createXMLHelper

protected XMLHelper createXMLHelper()

createXMLLoad

protected XMLLoad createXMLLoad()

createXMLSave

protected XMLSave createXMLSave()

doLoad

public void doLoad(java.io.InputStream inputStream,
                   java.util.Map options)
            throws java.io.IOException
Description copied from class: ResourceImpl
Called to load the resource. This implementation throws an exception; clients must override it.
Overrides:
doLoad in class ResourceImpl
Following copied from class: org.eclipse.emf.ecore.resource.impl.ResourceImpl
Parameters:
inputStream - the stream
options - the load options.
Throws:
UnsupportedOperationException. -  

doSave

public void doSave(java.io.OutputStream outputStream,
                   java.util.Map options)
            throws java.io.IOException
Description copied from class: ResourceImpl
Called to save the resource. This implementation throws an exception; clients must override it.
Overrides:
doSave in class ResourceImpl
Following copied from class: org.eclipse.emf.ecore.resource.impl.ResourceImpl
Parameters:
outputStream - the stream
options - the save options.
Throws:
UnsupportedOperationException. -  

useZip

public boolean useZip()
Description copied from interface: XMLResource
Returns whether the contents will be zipped.
Specified by:
useZip in interface XMLResource
Overrides:
useZip in class ResourceImpl
Following copied from class: org.eclipse.emf.ecore.resource.impl.ResourceImpl
Returns:
whether contents will be compressed.
See Also:
ResourceImpl.newContentZipEntry(), ResourceImpl.isContentZipEntry(ZipEntry)

setUseZip

public void setUseZip(boolean useZip)
Description copied from interface: XMLResource
Set whether the contents will be zipped.
Specified by:
setUseZip in interface XMLResource

getEncoding

public java.lang.String getEncoding()
Description copied from interface: XMLResource
Get the XML encoding for this resource. The default is ASCII.
Specified by:
getEncoding in interface XMLResource

setEncoding

public void setEncoding(java.lang.String encoding)
Description copied from interface: XMLResource
Set the XML encoding for this resource.
Specified by:
setEncoding in interface XMLResource

getIDToEObjectMap

public java.util.Map getIDToEObjectMap()
Description copied from interface: XMLResource
Returns the Map with IDs as keys and EObjects as values.
Specified by:
getIDToEObjectMap in interface XMLResource

getEObjectToIDMap

public java.util.Map getEObjectToIDMap()
Description copied from interface: XMLResource
Returns the Map of EObjects as keys and IDs as values.
Specified by:
getEObjectToIDMap in interface XMLResource

getID

public java.lang.String getID(EObject eObject)
Description copied from interface: XMLResource
Returns the ID if there is one for the given object; if there is no ID, it returns null.
Specified by:
getID in interface XMLResource

setID

public void setID(EObject eObject,
                  java.lang.String id)
Sets the ID of the object. This default implementation will update the eObjectToIDMap. Clients may override it to set the ID as an actual attribute object the object.
Specified by:
setID in interface XMLResource
Parameters:
eObject - the object.
id - the object's ID.

getURIFragment

public java.lang.String getURIFragment(EObject eObject)
Description copied from interface: Resource
Returns the URI fragment that, when passed to getEObject will return the given object.

In other words, the following is true for any object contained by a resource:

   Resource resource = eObject.eResource();
   eObject == resource.getEObject(resource.getURIFragment(eObject))
An implementation may choose to use IDs or to use structured URI fragments, as supported by eURIFragmentSegment.

Specified by:
getURIFragment in interface Resource
Overrides:
getURIFragment in class ResourceImpl
Following copied from interface: org.eclipse.emf.ecore.resource.Resource
Parameters:
eObject - the object to identify.
Returns:
the URI fragment for the object.
See Also:
Resource.getEObject(String), InternalEObject.eURIFragmentSegment(EStructuralFeature, EObject)

getEObjectByID

protected EObject getEObjectByID(java.lang.String id)
Description copied from class: ResourceImpl
Returns the object based on the fragment as an ID.
Overrides:
getEObjectByID in class ResourceImpl

isPath

protected boolean isPath(java.lang.String uriFragment)

attached

public void attached(EObject eObject)
Description copied from interface: Resource.Internal
Called when the object is attached to this resource, i.e., when it's eResource changes to be this one.

An implementation that resolves based on IDs will need to walk the tree of this object in order to tabulate an index. An implementation that needs to track modification will also need to walk the tree in order to add the necessary adapter. In either of these cases, editing of containment relations will be significantly more expensive.

Overrides:
attached in class ResourceImpl
Following copied from interface: org.eclipse.emf.ecore.resource.Resource.Internal
Parameters:
eObject - the attached object.
See Also:
Resource.Internal.detached(EObject)

detached

public void detached(EObject eObject)
Description copied from interface: Resource.Internal
Called when the object is detached from this resource, i.e., when it's eResource changes to no longer be this one.

An implementation that resolves based on IDs will need to walk the tree of this object in order clean up it's index. An implementation that needs to track modification will also need to walk the tree in order to remove the added adapter. In either of these cases, editing of containment relations will be significantly more expensive.

Overrides:
detached in class ResourceImpl
Following copied from interface: org.eclipse.emf.ecore.resource.Resource.Internal
Parameters:
eObject - the attached object.
See Also:
Resource.Internal.attached(EObject)

doUnload

protected void doUnload()
Does all the work of unloading the resource. It calls doUnload in ResourceImpl, then it clears idToEObjectMap and eObjectToIDMap as necessary.
Overrides:
doUnload in class ResourceImpl

changed

public void changed(EObject eObject,
                    java.lang.String oldID)
Description copied from interface: XMLResource
Called when the ID of an object is changed.
Specified by:
changed in interface XMLResource

toKeyString

public java.lang.String toKeyString()
Returns a string representation of the ID map.
Overrides:
toKeyString in class ResourceImpl
Returns:
a string representation of the ID map.

Copyright 2001-2002 IBM Corporation and others.
All Rights Reserved.