Author: jm
Date: 2012-04-02 09:43:17 -0700 (Mon, 02 Apr 2012)
New Revision: 28711
Modified:
core3/api/trunk/application-api/src/main/java/org/cytoscape/application/CyApplicationConfiguration.java
core3/impl/trunk/application-impl/src/main/java/org/cytoscape/application/internal/CyApplicationConfigurationImpl.java
Log:
Fixes #664: Added API for fetching the configuration directory for an app
Modified:
core3/api/trunk/application-api/src/main/java/org/cytoscape/application/CyApplicationConfiguration.java
===================================================================
---
core3/api/trunk/application-api/src/main/java/org/cytoscape/application/CyApplicationConfiguration.java
2012-03-30 23:38:44 UTC (rev 28710)
+++
core3/api/trunk/application-api/src/main/java/org/cytoscape/application/CyApplicationConfiguration.java
2012-04-02 16:43:17 UTC (rev 28711)
@@ -8,9 +8,6 @@
*/
public interface CyApplicationConfiguration {
- /** Default configuration directory used for all Cytoscape
configuration files */
- public static final String DEFAULT_CONFIG_DIR = ".cytoscape";
-
/**
* Returns absolute path to .cytoscape location.
* By default, this is user's home directory.
@@ -21,4 +18,13 @@
*/
File getConfigurationDirectoryLocation();
+ /**
+ * Returns the absolute path to the configuration directory of a
+ * particular app. This path might not physically exist and may
+ * need to be created by the caller.
+ * @param appClass Any class defined by the app's bundle
+ * @return the absolute path to the configuration directory of a
+ * particular app.
+ */
+ File getAppConfigurationDirectoryLocation(Class<?> appClass);
}
Modified:
core3/impl/trunk/application-impl/src/main/java/org/cytoscape/application/internal/CyApplicationConfigurationImpl.java
===================================================================
---
core3/impl/trunk/application-impl/src/main/java/org/cytoscape/application/internal/CyApplicationConfigurationImpl.java
2012-03-30 23:38:44 UTC (rev 28710)
+++
core3/impl/trunk/application-impl/src/main/java/org/cytoscape/application/internal/CyApplicationConfigurationImpl.java
2012-04-02 16:43:17 UTC (rev 28711)
@@ -1,17 +1,27 @@
package org.cytoscape.application.internal;
import java.io.File;
+import java.util.Dictionary;
import org.cytoscape.application.CyApplicationConfiguration;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.FrameworkUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class CyApplicationConfigurationImpl implements
CyApplicationConfiguration {
+ /** Default configuration directory used for all Cytoscape
configuration files */
+ public static final String DEFAULT_CONFIG_DIR = ".cytoscape";
+
private static final Logger logger =
LoggerFactory.getLogger(CyApplicationConfigurationImpl.class);
private static final String DEF_USER_DIR =
System.getProperty("user.home");
+
+ private static final String APP_CONFIGURATION_DIR = "app-data";
+ private static final String BUNDLE_SYMBOLIC_NAME =
"Bundle-SymbolicName";
+
private final File configFileLocation;
public CyApplicationConfigurationImpl() {
@@ -31,4 +41,26 @@
return configFileLocation;
}
+ @Override
+ public File getAppConfigurationDirectoryLocation(Class<?> appClass) {
+ File configurationDirectory =
getConfigurationDirectoryLocation();
+ Bundle bundle = FrameworkUtil.getBundle(appClass);
+ Dictionary<String, String> headers = bundle.getHeaders();
+ String basePath = headers.get(BUNDLE_SYMBOLIC_NAME);
+ String path = join(File.separator,
configurationDirectory.getPath(), APP_CONFIGURATION_DIR, basePath);
+ return new File(path);
+ }
+
+ private static String join(String separator, String... items) {
+ StringBuilder builder = new StringBuilder();
+ boolean first = true;
+ for (String item : items) {
+ if (!first) {
+ builder.append(separator);
+ }
+ builder.append(item);
+ first = false;
+ }
+ return builder.toString();
+ }
}
--
You received this message because you are subscribed to the Google Groups
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/cytoscape-cvs?hl=en.