Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source
   * Copyright 2005, JBoss Inc., and individual contributors as indicated
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
  * the License, or (at your option) any later version.
  *
  * This software is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this software; if not, write to the Free
  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  */
 package org.jboss.osgi.framework.internal;
 
 import java.io.File;
 import java.util.Set;
 
An abstraction of a bundle persistent storage.

Author(s):
thomas.diesler@jboss.com
Since:
18-Aug-2009
 
 final class BundleStorageState {
 
     // Provide logging
     final Logger log = Logger.getLogger(BundleStorageState.class);
 
     static final String PROPERTY_BUNDLE_FILE = "BundleFile";
     static final String PROPERTY_BUNDLE_ID = "BundleId";
     static final String PROPERTY_BUNDLE_LOCATION = "Location";
     static final String PROPERTY_BUNDLE_REV = "BundleRev";
     static final String PROPERTY_LAST_MODIFIED = "LastModified";
     static final String PROPERTY_PERSISTENTLY_STARTED = "PersistentlyStarted";
     static final String PROPERTY_ACTIVATION_POLICY_USED = "ActivationPolicyUsed";
     static final String BUNDLE_PERSISTENT_PROPERTIES = "bundle-persistent.properties";
 
     private final File bundleDir;
     private final VirtualFile rootFile;
     private final Properties props;
     private final String location;
     private final long bundleId;
     private final int revision;
 
     private long lastModified;
 
     static Set<StringrequiredProps = new HashSet<String>();
     static {
     }
 
     static BundleStorageState createFromStorage(File storageDirthrows IOException {
         
         Properties props = loadProperties(storageDir);
 
         VirtualFile rootFile = null;
         String vfsLocation = props.getProperty();
         if (vfsLocation != null) {
             File revFile = new File(storageDir + "/" + vfsLocation);
             rootFile = AbstractVFS.toVirtualFile(revFile.toURI());
         }
 
         return new BundleStorageState(storageDirrootFileprops);
     }
 
     static Properties loadProperties(File storageDirthrows FileNotFoundExceptionIOException {
         Properties props = new Properties();
         File propsFile = new File(storageDir + "/" + );
         if (propsFile.exists()) {
             FileInputStream input = new FileInputStream(propsFile);
             try {
                 props.load(input);
             } finally {
                 VFSUtils.safeClose(input);
             }
         }
        return props;
    }
    static BundleStorageState createBundleStorageState(File storageDirVirtualFile rootFileProperties propsthrows IOException {
        BundleStorageState storageState = new BundleStorageState(storageDirrootFileprops);
        storageState.writeProperties();
        return storageState;
    }
    private BundleStorageState(File storageDirVirtualFile rootFileProperties propsthrows IOException {
        if (storageDir == null)
            throw new IllegalArgumentException("Null storageDir");
        if (storageDir.isDirectory() == false)
            throw new IllegalArgumentException("Not a directory: " + storageDir);
        if (props == null)
            throw new IllegalArgumentException("Null properties");
        for (String key : )
            if (props.get(key) == null)
                throw new IllegalArgumentException("Required property missing '" + key + "' in: " + storageDir);
        this. = storageDir;
        this. = rootFile;
        this. = props;
        this. = props.getProperty();
        this. = Long.parseLong(props.getProperty());
        this. = Integer.parseInt(props.getProperty());
        this. = Long.parseLong(props.getProperty());
    }
        return ;
    }
    String getLocation() {
        return ;
    }
        return ;
    }
    long getBundleId() {
        return ;
    }
    int getRevisionId() {
        return ;
    }
    long getLastModified() {
        String value = .getProperty();
        return new Long(value);
    }
    void updateLastModified() {
         = System.currentTimeMillis();
        writeProperties();
    }
    boolean isPersistentlyStarted() {
        return value != null ? new Boolean(value) : false;
    }
    void setPersistentlyStarted(boolean started) {
        writeProperties();
    }
    boolean isBundleActivationPolicyUsed() {
        return value != null ? new Boolean(value) : false;
    }
    void setBundleActivationPolicyUsed(boolean usePolicy) {
        writeProperties();
    }
    void deleteBundleStorage() {
        VFSUtils.safeClose();
        deleteInternal();
    }
    void deleteRevisionStorage() {
        VFSUtils.safeClose();
    }
    void deleteInternal(File file) {
        if (file.isDirectory()) {
            for (File aux : file.listFiles())
                deleteInternal(aux);
        }
        file.delete();
    }
    private void writeProperties() {
        try {
            File propsFile = new File( + "/" + );
            FileOutputStream output = new FileOutputStream(propsFile);
            try {
                .store(output"Persistent Bundle Properties");
            } finally {
                VFSUtils.safeClose(output);
            }
        } catch (IOException ex) {
            .errorf(ex"Cannot write persistent storage: %s");
        }
    }
    @Override
    public String toString() {
        return "BundleStorageState[id=" +  + ",location=" +  + ",file=" +  + "]";
    }
New to GrepCode? Check out our FAQ X