25
System FileSystem Everything is a Stream

System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems

System FileSystemEverything is a Stream

Page 2: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems

What is it?

• General registry of configuration data

Page 3: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems

What is it?

• General registry of configuration data• tree structure• folders/directories• files and streams

Page 4: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems

What is it?

• General registry of configuration data

> installation directory vs.user directory

Page 5: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems

What is a “filesystem”?

• NetBeans specific:

> In NetBeans, we are dealing with virtual filesystems.

> FileObjects, notjava.io.File

Page 6: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems

FileObjects vs. java.io.File

• Get them from the filesystem, you do not create them.• FileObjects have MIME types.• FileObjects have attributes.• FileObjects have input and output

stream.• You can listen for changes.

Page 7: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems

Lookup is a registry

• Simple registration of objects> put file in META-INF/services> default Lookup creates declared objects

• But:> want to associate additional attributes?> show objects in UI without instantiating?

• Examples:> Show icon in list, without creating object.

Page 8: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems

Filesystem is also a registry

• Filesystem

> hierarchy of files and folders>e.g., local filesystem, works with real files>e.g., JARFilesystem

> different folders for different purposes

> declarative registration

Page 9: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems

System FileSystem

Page 10: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems

Giant sandwich...

• Every module provides a layer.• A layer = an XML file.• Each layer contains declarations for:> menu items, toolbar buttons> editor configurations> Options window settings> window persistence> + much more

All of them together= System FileSystem

Page 11: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems

DemoLet's look at a layer file...

Page 12: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems

How do layers work?

1.NetBeans Platform starts up.2.NetBeans Platform finds all layers.3.XML Layers are merged,with one

writable filesystem, into actual filesystem on disk.

4.NetBeans Platform opens.5.Results of merge = application.

Page 13: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems

Influencing Content

● add to a folder <filesystem>

<folder name = “menu”> <file name="MyAppServices"/>

</folder></filesystem>

● delete from a folder<filesystem>

<folder name = “menu”> <file name="Help_hidden"/>

</folder></filesystem>

● install/uninstall module● automatically adds/removes its files

Page 14: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems

Some Details About Layers

• ordering• .instance vs. .shadow• .settings files• instanceCreate• methodValue• localization• icons

Page 15: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems

How to provide a layer?

1.Create a layer.xml file.2.Add entries to folders to register

your own folders and files.3.Provide pointer to layer.xml, in

manifest.

= use a wizard

Page 16: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems

How to register in the layer?

● Type manually in the layer.xml file.● Use wizards to get started.

● Actions● Windows● Options panels● ...

● Visual editing node● Important files● Layer/Layer in context

Page 17: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems

DemoLet's work with the layer file...

Page 18: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems

How to access the layer?

FileObject root = Repository.getDefault().getDefaultFileSystem().getRoot();

FileObject dir = root.getFileObject("Menu");

FileObject dir = FileUtil.getConfigFile("Menu");

Pre-7.0 version:

Page 19: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems

Let's see what's in 'Menu'...

public void performAction() {public void performAction() {        FileObject dir = FileUtil.getConfigFile("Menu");FileObject dir = FileUtil.getConfigFile("Menu");

        FileObject[] kids = dir.getChildren();FileObject[] kids = dir.getChildren();        for (int i = 0; i < kids.length; i++) {for (int i = 0; i < kids.length; i++) {                 FileObject fileObject = kids[i];FileObject fileObject = kids[i];

String name = fileObject.getName();String name = fileObject.getName();                 JOptionPane.showMessageDialog(null, name);JOptionPane.showMessageDialog(null, name);        }}

}}

Page 20: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems

Demo...Let's access it from code...

Page 21: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems

Is not that Too Complex I?

● Why learn File system API?● I like Lookup!● There is Lookups.forPath(String ctx)

● Like FileUtil.getConfigFile(ctx)● Typed access● Understands .instance, .settings files

Page 22: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems

Is not that Too Complex II?

● Why edit XML File system?● Use annotations!

● like @ConvertAsProperties● completion● type checked● find usages● define your own.

Page 23: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems

Demo...Use of annotations...What they generate...

Page 24: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems

Summary

● General Registry● Raw Data● Basic folder based API

● Menu/, Toolbars/, OptionsDialog/, Loaders/

● Access via● FileUtil.getConfigFile(ctx)● Important Files Node● Lookup.forPath(ctx)● @Annotations

Page 25: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems

Questions & Answers