+++ /dev/null
-package jp.sourceforge.stigmata.resolvers;
-
-import java.io.File;
-import java.io.IOException;
-
-class DefaultStigmataHomeResolver implements StigmataHomeResolver{
- @Override
- public String getStigmataHome() throws IOException{
- return getUserHome() + File.separator + ".stigmata";
- }
-
- public String getUserHome(){
- String userHome = System.getProperty("user.home");
- if(userHome == null){
- userHome = System.getenv("HOME");
- }
- if(userHome == null){
- userHome = ".";
- }
- return userHome;
- }
-
- @Override
- public boolean isTarget(String osName){
- return true;
- }
-}
package jp.sourceforge.stigmata.resolvers;
import java.io.File;
-import java.io.IOException;
-class MacOSXStigmataHomeResolver extends DefaultStigmataHomeResolver{
+public class MacOSXStigmataHomeResolver implements StigmataHomeResolver{
@Override
- public String getStigmataHome() throws IOException{
- String home = getUserHome();
+ public String getStigmataHome(){
+ String home = StigmataHomeManager.getUserHome();
if(home.startsWith("/Users/")){
home = home + File.separator + "Library/Application Support" + File.separator + "Stigmata";
+++ /dev/null
-package jp.sourceforge.stigmata.resolvers;
-
-import java.io.IOException;
-
-class PropertyStigmataHomeResolver implements StigmataHomeResolver{
- @Override
- public String getStigmataHome() throws IOException{
- String stigmataHome = System.getProperty("stigmata.home");
- if(stigmataHome == null){
- stigmataHome = System.getenv("STIGMATA_HOME");
- }
- return stigmataHome;
- }
-
- @Override
- public boolean isTarget(String osName){
- return true;
- }
-}
package jp.sourceforge.stigmata.resolvers;
-/*
- * $Id$
- */
+import java.io.File;
+import java.util.ServiceLoader;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- *
- * @author Haruaki Tamada
- * @version $Revision$
- */
-public class StigmataHomeManager{
+public class StigmataHomeManager implements StigmataHomeResolver{
private String home;
- private List<StigmataHomeResolver> resolvers = new ArrayList<StigmataHomeResolver>();
- public StigmataHomeManager(){
- resolvers.add(new DefaultStigmataHomeResolver());
- resolvers.add(new MacOSXStigmataHomeResolver());
- resolvers.add(new WindowsStigmataHomeResolver());
- resolvers.add(new PropertyStigmataHomeResolver());
+ @Override
+ public String getStigmataHome(){
+ if(home == null){
+ home = resolveHome();
+ }
+ return home;
}
- public String getStigmataHome(){
+ private String resolveHome(){
+ ServiceLoader<StigmataHomeResolver> loader = ServiceLoader.load(StigmataHomeResolver.class);
+ String home = null;
+ String name = System.getProperty("os.name");
+
+ for(StigmataHomeResolver resolver: loader){
+ if(resolver.isTarget(name)){
+ home = resolver.getStigmataHome();
+ break;
+ }
+ }
if(home == null){
- String home = null;
- String osName = System.getProperty("os.name");
- for(StigmataHomeResolver resolver: resolvers){
- if(resolver.isTarget(osName)){
- try{
- home = resolver.getStigmataHome();
- } catch(IOException e){
- }
- }
- if(home != null){
- this.home = home;
- break;
- }
+ home = System.getProperty("stigmata.home");
+ if(home == null){
+ home = System.getenv("STIGMATA_HOME");
+ }
+ if(home == null){
+ home = getUserHome() + File.separator + ".stigmata";
}
}
return home;
}
+
+ static final String getUserHome(){
+ String userHome = System.getProperty("user.home");
+ if(userHome == null){
+ userHome = System.getenv("HOME");
+ }
+ if(userHome == null){
+ userHome = ".";
+ }
+ return userHome;
+ }
+
+ @Override
+ public boolean isTarget(String osName){
+ return true;
+ }
}
package jp.sourceforge.stigmata.resolvers;
-import java.io.IOException;
interface StigmataHomeResolver{
public boolean isTarget(String osName);
- public String getStigmataHome() throws IOException;
+ public String getStigmataHome();
}
package jp.sourceforge.stigmata.resolvers;
import java.io.File;
-import java.io.IOException;
-class WindowsStigmataHomeResolver extends DefaultStigmataHomeResolver{
+public class WindowsStigmataHomeResolver implements StigmataHomeResolver{
@Override
- public String getStigmataHome() throws IOException{
- String home = getUserHome();
+ public String getStigmataHome(){
+ String home = StigmataHomeManager.getUserHome();
if(home.startsWith("C:\\Documents and Settings\\")){
home = home + File.separator + "Application Data" + File.separator + "Stigmata";
}
+ else if(home.startsWith("C:\\Users\\")){ // for windows 7
+ home = home + File.separator + "AppData" + File.separator + "Roaming" + File.separator + "Stigmata";
+ }
return home;
}
--- /dev/null
+jp.sourceforge.stigmata.resolvers.MacOSXStigmataHomeResolver
+jp.sourceforge.stigmata.resolvers.WindowsStigmataHomeResolver