org.openide.filesystems 7.13.1 1

org.openide.filesystems
Class XMLFileSystem

java.lang.Object
  extended by org.openide.filesystems.FileSystem
      extended by org.openide.filesystems.AbstractFileSystem
          extended by org.openide.filesystems.XMLFileSystem
All Implemented Interfaces:
Serializable

public final class XMLFileSystem
extends AbstractFileSystem

XML-based filesystem.

  Description of format of XML file (which can be parsed by XMLFileSystem)
 ==================================================================
 Allowed Elements:        filesystem,file,folder,attr

 Mandatory attributes:
         -for filesystem    version=... (e.g. "1.0")
         -for file,folder,attr name=....  (e.g.: <folder name="Config">)
         -for attr is mandatory one of bytevalue,shortvalue,intvalue,longvalue,floatvalue,doublevalue,boolvalue,charvalue,stringvalue,methodvalue,serialvalue,urlvalue,bundlevalue

 Allowed atributes:
         -for file:        url=.... (e.g.: <file name="sample.xml" url="file:/c:/sample.xml">)
         -for folder,filesystem        nothing allowed



 Note: file can contain         content e.g.:
  < file name="sample.java">
 < ![CDATA[
 package org.sample;
 import java.io;
 ]]>
 < /file>
 But using url="..." is preferred.


 This class implements virtual FileSystem. It is special case of FileSystem in XML format.

 Description of this format best ilustrate DTD file
 that is showed in the following few lines:
 < !ELEMENT filesystem (file | folder)*>
 < !ATTLIST filesystem version CDATA #REQUIRED> //version not checkked yet
 < !ELEMENT folder (file |folder | attr)*>
 < !ATTLIST folder name CDATA #REQUIRED> //name of folder
 < !ELEMENT file (#PCDATA | attr)*>
 < !ATTLIST file name CDATA #REQUIRED> //name of file
 < !ATTLIST file url CDATA #IMPLIED> //content of the file can be find at url
 < !ELEMENT attr EMPTY>
 < !ATTLIST attr name CDATA #REQUIRED> //name of attribute
 < !ATTLIST attr bytevalue CDATA #IMPLIED>//the rest - types of attributes
 < !ATTLIST attr shortvalue CDATA #IMPLIED>
 < !ATTLIST attr intvalue CDATA #IMPLIED>
 < !ATTLIST attribute longvalue CDATA #IMPLIED>
 < !ATTLIST attr floatvalue CDATA #IMPLIED>
 < !ATTLIST attr doublevalue CDATA #IMPLIED>
 < !ATTLIST attr boolvalue CDATA #IMPLIED>
 < !ATTLIST attr charvalue CDATA #IMPLIED>
 < !ATTLIST attr stringvalue CDATA #IMPLIED>
 < !ATTLIST attr methodvalue CDATA #IMPLIED>
 < !ATTLIST attr serialvalue CDATA #IMPLIED>
 < !ATTLIST attr urlvalue CDATA #IMPLIED>
 < !ATTLIST attr bundlevalue CDATA #IMPLIED> <!-- since version 7.10 -->
 

The methodvalue attribute can be in form of pgk1.pkg2.ClassName.methodName which should point to existing class with static method usually having no, one or two arguments. This method does not need to be public or in public class, if the filesystem has permissions to call the method. The method can take one of the following signatures:

 static Value methodName();
 static Value methodName(FileObject fo);
 static Value methodName(FileObject fo, String attrName);
 static Value methodName(Map attrs); // since 7.0
 static Value methodName(Map attrs, String attrName); // since 7.0
 
where Value can be any java type.

If you are interested just in the Class of an attribute, but without creating its instance, use fileObject.getAttribute("class:attrName"). This instructs the XMLFileSystem to scan its XML files for definition of attrName attribute and guess its class. The guessing is usually easy, just for methodvalue types, the system needs to use some kind of heuristic: it locates the appropriate factory method and returns its return type. This may not be the actual type of the returned object at the end, but it seems as the best guess without instantiating it.

See Also:
Serialized Form

Nested Class Summary
static class XMLFileSystem.Impl
          Implementation of all interfaces List, Change, Info and Attr that delegates to XMLFileSystem
 
Nested classes/interfaces inherited from class org.openide.filesystems.AbstractFileSystem
AbstractFileSystem.Attr, AbstractFileSystem.Change, AbstractFileSystem.Info, AbstractFileSystem.List, AbstractFileSystem.Transfer
 
Nested classes/interfaces inherited from class org.openide.filesystems.FileSystem
FileSystem.AtomicAction, FileSystem.Environment, FileSystem.HtmlStatus, FileSystem.Status
 
Field Summary
 
Fields inherited from class org.openide.filesystems.AbstractFileSystem
attr, change, info, list, transfer
 
Fields inherited from class org.openide.filesystems.FileSystem
PROP_DISPLAY_NAME, PROP_HIDDEN, PROP_READ_ONLY, PROP_ROOT, PROP_SYSTEM_NAME, PROP_VALID
 
Constructor Summary
XMLFileSystem()
          Constructor.
XMLFileSystem(FileSystemCapability cap)
          Deprecated. Useless.
XMLFileSystem(String uri)
          Constructor.
XMLFileSystem(URL url)
          Constructor.
 
Method Summary
 void addNotify()
          Notifies this filesystem that it has been added to the repository.
protected
<T extends FileObject>
Reference<T>
createReference(T fo)
          Creates Reference.
 String getDisplayName()
          Provides a name for the system that can be presented to the user.
 URL getXmlUrl()
          Getter of url field.
 URL[] getXmlUrls()
          Getter of url fields.
 boolean isReadOnly()
          Test if the filesystem is read-only or not.
 void removeNotify()
          Notifies this filesystem that it has been removed from the repository.
 void setXmlUrl(URL url)
          Setter of url field.
 void setXmlUrl(URL url, boolean validate)
          Setter of url field.
 void setXmlUrls(URL[] urls)
          Setter of url fields.
 
Methods inherited from class org.openide.filesystems.AbstractFileSystem
canRead, canWrite, checkVirtual, existingFileObjects, find, findReference, findResource, getActions, getRefreshTime, getRoot, markImportant, refresh, refreshResource, refreshRoot, setRefreshTime
 
Methods inherited from class org.openide.filesystems.FileSystem
addFileChangeListener, addFileStatusListener, addPropertyChangeListener, addVetoableChangeListener, fireFileStatusChanged, firePropertyChange, fireVetoableChange, getActions, getCapability, getStatus, getSystemName, isDefault, isHidden, isPersistent, isValid, prepareEnvironment, removeFileChangeListener, removeFileStatusListener, removePropertyChangeListener, removeVetoableChangeListener, runAtomicAction, setCapability, setHidden, setSystemName, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

XMLFileSystem

public XMLFileSystem()
Constructor. Creates new XMLFileSystem


XMLFileSystem

public XMLFileSystem(String uri)
              throws SAXException
Constructor. Creates new XMLFileSystem.

Parameters:
uri - to file with definition of XMLFileSystem
Throws:
SAXException - if parsing is not succesful

XMLFileSystem

public XMLFileSystem(URL url)
              throws SAXException
Constructor. Creates new XMLFileSystem.

Parameters:
url - to definition of XMLFileSystem
Throws:
SAXException - if parsing not succesful

XMLFileSystem

@Deprecated
public XMLFileSystem(FileSystemCapability cap)
Deprecated. Useless.

Constructor. Allows user to provide own capabilities for this filesystem.

Parameters:
cap - capabilities for this filesystem
Method Detail

getXmlUrl

public URL getXmlUrl()
Getter of url field.

Returns:
URL associated with XMLFileSystem or null if no URL was set. In case that definition of XMLFileSystem is merged from more URLs than the first is returned.

setXmlUrl

public void setXmlUrl(URL url)
               throws IOException,
                      PropertyVetoException
Setter of url field. Set name of the XML file.

Parameters:
url - with definition of XMLFileSystem
Throws:
PropertyVetoException - if the change is not allowed by a listener
IOException - if the file is not valid

setXmlUrl

public void setXmlUrl(URL url,
                      boolean validate)
               throws IOException,
                      PropertyVetoException
Setter of url field. Set name of the XML file.

Parameters:
url - with definition of XMLFileSystem
validate - sets validating of SAXParser
Throws:
PropertyVetoException - if the change is not allowed by a listener
IOException - if the file is not valid

getXmlUrls

public URL[] getXmlUrls()
Getter of url fields.

Returns:
URLs associated with XMLFileSystem.
Since:
1.14

setXmlUrls

public void setXmlUrls(URL[] urls)
                throws IOException,
                       PropertyVetoException
Setter of url fields. First URL in array sets name of XMLFileSystem. If more then one url in array of URLs defines the same FileObject, then url with lower index in array overrides (means content and attributes) the other.

Parameters:
urls - array of definitions (in xml form) of XMLFileSystem
Throws:
IOException - if the file is not valid
PropertyVetoException - if the change is not allowed by a listener
Since:
1.14

getDisplayName

public String getDisplayName()
Provides a name for the system that can be presented to the user.

Specified by:
getDisplayName in class AbstractFileSystem
Returns:
user presentable name of the filesystem

isReadOnly

public boolean isReadOnly()
Test if the filesystem is read-only or not.

Specified by:
isReadOnly in class FileSystem
Returns:
true if the system is read-only

addNotify

public void addNotify()
Notifies this filesystem that it has been added to the repository. Various initialization tasks should go here. Default implementation is noop.

Overrides:
addNotify in class FileSystem

removeNotify

public void removeNotify()
Notifies this filesystem that it has been removed from the repository. Concrete filesystem implementations should perform clean-up here. Default implementation is noop.

Overrides:
removeNotify in class FileSystem

createReference

protected <T extends FileObject> Reference<T> createReference(T fo)
Description copied from class: AbstractFileSystem
Creates Reference. In FileSystem, which subclasses AbstractFileSystem, you can overload method createReference(FileObject fo) to achieve another type of Reference (weak, strong etc.)

Overrides:
createReference in class AbstractFileSystem
Parameters:
fo - is FileObject. It`s reference yourequire to get.
Returns:
Reference to FileObject

org.openide.filesystems 7.13.1 1

Built on November 10 2008.  |  Portions Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.