This page last changed on May 12, 2014 by jive.

Examples of using the ResourceStore API and utility classes.

See Resource API Transition Plan for examples based on updating utility classes such as GeoserverDataDirectory, GeoServerDataDirectory, SecurityManager and more...

General Examples

The following examples provide a feel for how the ResourceStore API is used in practice:

InputStream Example

LoggingStartupContextListener is an example that uses an input stream:

File f= loader.find( "logging.xml" );
XStreamPersister xp = new XStreamPersisterFactory().createXMLPersister();
BufferedInputStream in = new BufferedInputStream( new FileInputStream( f ) );

LoggingStartupContextListener after:

Resource r= loader.get( "logging.xml" );
XStreamPersister xp = new XStreamPersisterFactory().createXMLPersister();
BufferedInputStream in = new BufferedInputStream( r.in() );

Output Stream Example

StyleResource is an example that uses an output stream:

f = loader.createFile(path) ;
BufferedOutputStream out = new BufferedOutputStream( new FileOutputStream ( f ) );
SLDFormat format = new SLDFormat(true);
format.toRepresentation(style).write(out);

StyleResource after:

BufferedOutputStream out = new BufferedOutputStream( loader.get(path).out() );
SLDFormat format = new SLDFormat(true);
format.toRepresentation(style).write(out);

Directory Contents

GlobalSettingsPage is an example that reviews the contents of a directory:

File logsDirectory = loader.find("logs");
if(logsDirectory.exists() && logsDirectory.isDirectory()) {
   String[] propFiles = logsDirectory.list(new FilenameFilter() {
     public boolean accept(File dir, String name) {
        return name.toLowerCase().endsWith("logging.properties");
     }
   });
   logProfiles = Arrays.asList(propFiles);
   Collections.sort(logProfiles, String.CASE_INSENSITIVE_ORDER);
}

Direct migration of logic to use Resource list:

Resource logsDirectory = loader.get("logs");
if(logsDirectory.isExists() && logsDirectory.isDirectory()) {
   logProfiles = new ArrayList<String>();
   for( Resource child : logsDirectory.list() ){
      if( child.name().toLowerCase().endsWith("logging.properties") ){
         logProfiles.add( child.getName() );
      }
   } 
   Collections.sort(logProfiles, String.CASE_INSENSITIVE_ORDER);
}

File Example

ApplicationSchemaXSD is an example that requires the use of a File:

File schemaFile = null;
schemaFile = catalog.getResourceLoader().find("workspaces" + "/" + prefix + "/" + store + "/" + name + "/schema.xsd");
ftSchema = Schemas.parse(schemaFile.getAbsolutePath(), locators, null);

Migrated:

File schemaFile = null;
schemaFile = catalog.getResourceLoader().get( Paths.path("workspaces",prefix,store,name,"schema.xsd") ).file();
ftSchema = Schemas.parse(schemaFile.getAbsolutePath(), locators, null);

GeoServerResourceLoader Cut and Paste Examples

The following examples can be used during refactoring (or accomplished by inlining the appropriate method).

The utility classes Paths and Resources are used replicate the GeoServerResourceLoader logic with a minimum of fuss and bother.

GeoServerResourceLoader createDirectory

createDirectory(File parentFile, String location)

String path = Paths.convert(loader.getBaseDirectory(), parentFile, location );
Resource resource = loader.get( path );
File directory = Resources.createNewDirectory(resource);

createDirectory(File parentFile, String... location)

String path = Paths.convert(loader.getBaseDirectory(), parentFile, location );
Resource resource = loader.get( path );
File directory = Resources.createNewDirectory(resource);

createDirectory(String location)

Resource resource = loader.get( Paths.convert(location) );
File directory = Resources.createNewDirectory(resource);

createDirectory(String... location)

Resource resource = loader.get( Paths.path(location) );
File directory = Resources.createNewDirectory(resource);

GeoServerResourceLoader createFile

createFile(File parentFile, String location):

String path = Paths.convert(loader.getBaseDirectory(), parentFile, location );
Resource resource = loader.get( path );
File file = Resources.createNewFile(resource);

createFile(File parentFile, String... location):

String path = Paths.convert(loader.getBaseDirectory(), parentFile, location );
Resource resource = loader.get( path );
File file = Resources.createNewFile(resource);

createFile(String location):

Resource resource = get( Paths.convert(location) );
File file = Resources.createNewFile( resource );

createFile(String... location):

Resource resource = get( Paths.path(location) );
File file = Resources.createNewFile( resource );

GeoServerResourceLoader find

Resources.findFile returns a file if available. A DIRECTORY resource returns dir(), RESOURCE returns file(), and UNDEFINED returns null.

find( String location):

Resource resource = loader.get( Paths.convert(location) );
File file = Resources.findFile( resource );

find( String... location ):

Resource resource = loader.get( Paths.path(location) );
File file = Resources.findFile( resource );

find(File parentFile, String location):

String path = Paths.convert(loader.getBaseDirectory(), parentFile, location );
Resource resource = get( path );
File file = Resources.findFile( resource );

find( File parentFile, String... location ):

String path = Paths.convert(loader.getBaseDirectory(), parentFile, location)
Resource resource = loader.get( path );
File file = Resources.findFile( resource );  

GeoServerResourceLoader findOrCreateDirectory

Resource.dir() will create a directory if needed (i.e. the expected behaviour for findOrCreateDirectory).

findOrCreateDirectory(File, String):

String path = Paths.convert(loader.getBaseDirectory(),parentFile,location);
Resource resource = loader.get( path );
File directory = resource.dir();

findOrCreateDirectory(File, String...):

String path = Paths.convert(getBaseDirectory(), parentFile, location);
Resource resource = get(path);
File directory = resource.dir();

findOrCreateDirectory(String):

Resource resource = loader.get( Paths.convert(location) );        
File directory = resource.dir();

findOrCreateDirectory(String...):

Resource resource = loader.get( Paths.path(location) );        
File directory = resource.dir();
Document generated by Confluence on May 14, 2014 23:00