You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by dj...@apache.org on 2011/12/03 02:35:52 UTC

svn commit: r1209819 - in /karaf/trunk: assemblies/features/framework/src/main/filtered-resources/resources/etc/ main/ main/src/main/java/org/apache/karaf/info/ main/src/main/java/org/apache/karaf/main/ main/src/main/java/org/apache/karaf/main/util/

Author: djencks
Date: Sat Dec  3 01:35:52 2011
New Revision: 1209819

URL: http://svn.apache.org/viewvc?rev=1209819&view=rev
Log:
KARAF-1069 ServerInfo service allowing osgi-friendly access to server location and startup args

Added:
    karaf/trunk/main/src/main/java/org/apache/karaf/info/
    karaf/trunk/main/src/main/java/org/apache/karaf/info/ServerInfo.java   (with props)
    karaf/trunk/main/src/main/java/org/apache/karaf/main/util/ServerInfoImpl.java   (with props)
Modified:
    karaf/trunk/assemblies/features/framework/src/main/filtered-resources/resources/etc/config.properties
    karaf/trunk/main/pom.xml
    karaf/trunk/main/src/main/java/org/apache/karaf/main/Main.java

Modified: karaf/trunk/assemblies/features/framework/src/main/filtered-resources/resources/etc/config.properties
URL: http://svn.apache.org/viewvc/karaf/trunk/assemblies/features/framework/src/main/filtered-resources/resources/etc/config.properties?rev=1209819&r1=1209818&r2=1209819&view=diff
==============================================================================
--- karaf/trunk/assemblies/features/framework/src/main/filtered-resources/resources/etc/config.properties (original)
+++ karaf/trunk/assemblies/features/framework/src/main/filtered-resources/resources/etc/config.properties Sat Dec  3 01:35:52 2011
@@ -60,6 +60,7 @@ org.osgi.framework.system.packages= \
  org.osgi.util.tracker;uses:="org.osgi.framework";version="1.5", \
  org.apache.karaf.jaas.boot;version="${karaf.osgi.version}", \
  org.apache.karaf.version;version="${karaf.osgi.version}", \
+ org.apache.karaf.info;version="${karaf.osgi.version}", \
  ${jre-${java.specification.version}}
 
 # Extra packages appended after standard packages

Modified: karaf/trunk/main/pom.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/main/pom.xml?rev=1209819&r1=1209818&r2=1209819&view=diff
==============================================================================
--- karaf/trunk/main/pom.xml (original)
+++ karaf/trunk/main/pom.xml Sat Dec  3 01:35:52 2011
@@ -99,7 +99,9 @@
                         <Main-Class>org.apache.karaf.main.Main</Main-Class>
                         <Bundle-Name>Apache Karaf</Bundle-Name>
                         <Bundle-Description>OSGi R4 framework.</Bundle-Description>
-                        <Export-Package />
+                        <Export-Package>
+                            org.apache.karaf.info
+                        </Export-Package>
                         <!--
                         <Private-Package>
                             org.apache.felix.*;-split-package:=merge-first,

Added: karaf/trunk/main/src/main/java/org/apache/karaf/info/ServerInfo.java
URL: http://svn.apache.org/viewvc/karaf/trunk/main/src/main/java/org/apache/karaf/info/ServerInfo.java?rev=1209819&view=auto
==============================================================================
--- karaf/trunk/main/src/main/java/org/apache/karaf/info/ServerInfo.java (added)
+++ karaf/trunk/main/src/main/java/org/apache/karaf/info/ServerInfo.java Sat Dec  3 01:35:52 2011
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+
+package org.apache.karaf.info;
+
+import java.io.File;
+import java.net.URI;
+
+/**
+ * @version $Rev:$ $Date:$
+ */
+public interface ServerInfo {
+    
+    File getHomeDirectory();
+    
+    String resolveHomePath(final String filename);
+
+    File resolveHome(final String filename);
+
+    URI resolveHome(final URI uri);
+
+    
+    File getBaseDirectory();
+    
+    String resolveBasePath(final String filename);
+
+    File resolveBase(final String filename);
+
+    URI resolveBase(final URI uri);
+    
+
+    File getDataDirectory();
+
+    File getInstancesDirectory();
+
+    String[] getArgs();
+}

Propchange: karaf/trunk/main/src/main/java/org/apache/karaf/info/ServerInfo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: karaf/trunk/main/src/main/java/org/apache/karaf/info/ServerInfo.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: karaf/trunk/main/src/main/java/org/apache/karaf/info/ServerInfo.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: karaf/trunk/main/src/main/java/org/apache/karaf/main/Main.java
URL: http://svn.apache.org/viewvc/karaf/trunk/main/src/main/java/org/apache/karaf/main/Main.java?rev=1209819&r1=1209818&r2=1209819&view=diff
==============================================================================
--- karaf/trunk/main/src/main/java/org/apache/karaf/main/Main.java (original)
+++ karaf/trunk/main/src/main/java/org/apache/karaf/main/Main.java Sat Dec  3 01:35:52 2011
@@ -54,9 +54,11 @@ import java.util.logging.Logger;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import org.apache.karaf.info.ServerInfo;
 import org.apache.karaf.main.lock.Lock;
 import org.apache.karaf.main.lock.SimpleFileLock;
 import org.apache.karaf.main.util.BootstrapLogManager;
+import org.apache.karaf.main.util.ServerInfoImpl;
 import org.apache.karaf.main.util.StringMap;
 import org.apache.karaf.main.util.Utils;
 import org.osgi.framework.Bundle;
@@ -289,6 +291,10 @@ public class Main {
         loadStartupProperties(configProps);
         processAutoProperties(framework.getBundleContext());
         framework.start();
+
+        ServerInfo serverInfo = new ServerInfoImpl(args, karafBase, karafData, karafHome, karafInstances);
+        framework.getBundleContext().registerService(ServerInfo.class, serverInfo, null);
+
         // Start custom activators
         startKarafActivators(classLoader);
         // Start lock monitor

Added: karaf/trunk/main/src/main/java/org/apache/karaf/main/util/ServerInfoImpl.java
URL: http://svn.apache.org/viewvc/karaf/trunk/main/src/main/java/org/apache/karaf/main/util/ServerInfoImpl.java?rev=1209819&view=auto
==============================================================================
--- karaf/trunk/main/src/main/java/org/apache/karaf/main/util/ServerInfoImpl.java (added)
+++ karaf/trunk/main/src/main/java/org/apache/karaf/main/util/ServerInfoImpl.java Sat Dec  3 01:35:52 2011
@@ -0,0 +1,110 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+
+package org.apache.karaf.main.util;
+
+import java.io.File;
+import java.net.URI;
+
+import org.apache.karaf.info.ServerInfo;
+
+/**
+ * @version $Rev:$ $Date:$
+ */
+public class ServerInfoImpl implements ServerInfo {
+
+    private final File base;
+    private final File home;
+    private final File data;
+    private final File instances;
+    private final String[] args;
+
+    public ServerInfoImpl(String[] args, File base, File data, File home, File instances) {
+        this.args = args;
+        this.base = base;
+        this.data = data;
+        this.home = home;
+        this.instances = instances;
+    }
+
+    @Override
+    public File getHomeDirectory() {
+        return home;
+    }
+
+    @Override
+    public String resolveHomePath(String filename) {
+        return resolveWithBase(home, filename).getAbsolutePath();
+    }
+
+    @Override
+    public File resolveHome(String filename) {
+        return resolveWithBase(home, filename);
+    }
+
+    @Override
+    public URI resolveHome(URI uri) {
+        return home.toURI().resolve(uri);
+    }
+
+    @Override
+    public File getBaseDirectory() {
+        return base;
+    }
+
+    @Override
+    public String resolveBasePath(String filename) {
+        return resolveWithBase(base, filename).getAbsolutePath();
+    }
+
+    @Override
+    public File resolveBase(String filename) {
+        return resolveWithBase(base, filename);
+    }
+
+    @Override
+    public URI resolveBase(URI uri) {
+        return base.toURI().resolve(uri);
+    }
+
+    @Override
+    public File getDataDirectory() {
+        return data;
+    }
+
+    @Override
+    public File getInstancesDirectory() {
+        return instances;
+    }
+
+    @Override
+    public String[] getArgs() {
+        return args.clone();
+    }
+
+    private File resolveWithBase(File baseDir, String filename) {
+        File file = new File(filename);
+        if (file.isAbsolute()) {
+            return file;
+        }
+        return new File(baseDir, filename);
+    }
+
+}

Propchange: karaf/trunk/main/src/main/java/org/apache/karaf/main/util/ServerInfoImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: karaf/trunk/main/src/main/java/org/apache/karaf/main/util/ServerInfoImpl.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: karaf/trunk/main/src/main/java/org/apache/karaf/main/util/ServerInfoImpl.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain