• Join/Login
  • Business Software
  • Open Source Software
  • For Vendors
  • Blog
  • About
  • More
    • Articles
    • Create
    • SourceForge Podcast
    • Site Documentation
    • Subscribe to our Newsletter
    • Support Request
SourceForge logo
For Vendors Help Create Join Login
SourceForge logo
Business Software
Open Source Software
SourceForge Podcast
Resources
  • Articles
  • Case Studies
  • Blog
Menu
  • Help
  • Create
  • Join
  • Login
  • Home
  • Browse
  • JLink Game
  • Mailing Lists

[Java-link-svn] SF.net SVN: java-link: [16] trunk

Status: Pre-Alpha
Brought to you by: welterde0
  • Summary
  • Files
  • Reviews
  • Support
  • Mailing Lists
  • Browse SVN
Menu ▾ ▴
  • java-link-svn

[Java-link-svn] SF.net SVN: java-link: [16] trunk

[Java-link-svn] SF.net SVN: java-link: [16] trunk
From: <wel...@us...> - 2006-10-09 17:50:03
Revision: 16
          http://svn.sourceforge.net/java-link/?rev=16&view=rev
Author:   welterde0
Date:     2006-10-09 10:49:22 -0700 (Mon, 09 Oct 2006)

Log Message:
-----------
added module libdb for server
projects:
	added module libdb for server
build(build.xml):
	added dep for jcr-1.0.jar of libdb
	fixed missing mkdirs in share and server deps
server(pom.xml):
	added deb for libdb
server:
	rewritten the Main class
	rewritten the Core
	added JMX support to Main

Modified Paths:
--------------
    trunk/build.xml
    trunk/server/nbproject/project.xml
    trunk/server/pom.xml
    trunk/server/src/main/java/org/jlink/server/jmx/JMXAgent.java
    trunk/server/src/main/java/org/jlink/server/jmx/run.properties

Added Paths:
-----------
    trunk/libdb/
    trunk/libdb/nbproject/
    trunk/libdb/nbproject/mavencall.xml
    trunk/libdb/nbproject/project.properties
    trunk/libdb/nbproject/project.xml
    trunk/libdb/pom.xml
    trunk/libdb/src/
    trunk/libdb/src/main/
    trunk/libdb/src/main/java/
    trunk/libdb/src/main/java/org/
    trunk/libdb/src/main/java/org/jlink/
    trunk/libdb/src/main/java/org/jlink/server/
    trunk/libdb/src/main/java/org/jlink/server/libdb/
    trunk/libdb/src/main/java/org/jlink/server/libdb/StorageManager.java
    trunk/libdb/src/main/java/org/jlink/server/libdb/drivers/
    trunk/libdb/src/main/java/org/jlink/server/libdb/drivers/Driver.java
    trunk/libdb/src/main/java/org/jlink/server/libdb/drivers/JackrabbitDriver.java
    trunk/libdb/src/main/resources/
    trunk/libdb/src/site/
    trunk/libdb/src/site/site.xml
    trunk/libdb/src/test/
    trunk/libdb/src/test/java/
    trunk/server/src/main/java/org/jlink/server/Main.java
    trunk/server/src/main/java/org/jlink/server/MainJMX.java
    trunk/server/src/main/java/org/jlink/server/MainJMXMBean.java

Modified: trunk/build.xml
===================================================================
--- trunk/build.xml	2006-10-08 19:29:46 UTC (rev 15)
+++ trunk/build.xml	2006-10-09 17:49:22 UTC (rev 16)
@@ -31,6 +31,7 @@
 	-->
     <!--Targets-->
     <target name="share-deps">
+        <mkdir dir="tmp"/>
         <echo message="downloading dep client/jfunutil.jar"/>
 	<get src="http://${sf.mirror}.dl.sourceforge.net/sourceforge/java-link/jfunutil-5.0.jar" dest="tmp/jfunutil.jar"/>
 	<exec executable="mvn">
@@ -48,8 +49,21 @@
     </target>
     
     
-    
-    <target name="server" depends="share">
+    <target name="server-deps" depends="share">
+        <mkdir dir="tmp"/>
+        <echo message="downloading dep server/jcr.jar"/>
+	<get src="http://${sf.mirror}.dl.sourceforge.net/sourceforge/java-link/jcr-1.0.jar" dest="tmp/jcr.jar"/>
+	<exec executable="mvn">
+	    <arg line="install:install-file -DgroupId=jsr170 -DartifactId=jcr -Dversion=1.0 -Dpackaging=jar -Dfile=tmp/jcr.jar"/>
+	</exec>
+	<echo message="[done]"/>
+    </target>
+    <target name="server-mods" depends="server-deps">
+        <exec executable="mvn" dir="libdb" output="libdb.server.build.log">
+	    <arg value="install"/>
+	</exec>
+    </target>
+    <target name="server" depends="server-deps, server-mods">
 	<exec executable="mvn" dir="server" output="server.build.log">
 	    <arg value="compile"/>
 	</exec>

Added: trunk/libdb/nbproject/mavencall.xml
===================================================================
--- trunk/libdb/nbproject/mavencall.xml	                        (rev 0)
+++ trunk/libdb/nbproject/mavencall.xml	2006-10-09 17:49:22 UTC (rev 16)
@@ -0,0 +1,42 @@
+<project name="client" default="build" basedir="..">
+  <property file="nbproject/private/private.properties"/>
+  <property file="nbproject/project.properties"/>
+  <target name="build" description="Build">
+    <exec dir="${basedir}" executable="${mvn.path}">
+      <arg line="package"/>
+    </exec>
+  </target>
+  <target name="clean" description="Clean">
+    <exec dir="${basedir}" executable="${mvn.path}">
+      <arg line="clean:clean"/>
+    </exec>
+  </target>
+  <target name="javadoc" description="Javadoc">
+    <exec dir="${basedir}" executable="${mvn.path}">
+      <arg line="site:site"/>
+    </exec>
+  </target>
+  <target name="run" description="Install Locally">
+    <exec dir="${basedir}" executable="${mvn.path}">
+      <arg line="install"/>
+    </exec>
+  </target>
+  <target name="test" description="Test Project">
+    <exec dir="${basedir}" executable="${mvn.path}">
+      <arg line="test"/>
+    </exec>
+  </target>
+  <target name="jalopy" description="Format Code">
+    <exec dir="${basedir}" executable="${mvn.path}">
+      <arg line="jalopy:format"/>
+    </exec>
+  </target>
+  <target name="refresh-project" description="Refresh Project">
+    <copy file="nbproject/mavencall.xml" tofile="nbproject/mavencall.xml.bak"/>
+    <exec dir="${basedir}" executable="${mvn.path}">
+      <arg line="netbeans-freeform:generate-netbeans-project"/>
+    </exec>
+    <delete file="nbproject.xml"/>
+    <move file="nbproject/mavencall.xml.bak" tofile="nbproject/mavencall.xml"/>
+  </target>
+</project>
\ No newline at end of file

Added: trunk/libdb/nbproject/project.properties
===================================================================
--- trunk/libdb/nbproject/project.properties	                        (rev 0)
+++ trunk/libdb/nbproject/project.properties	2006-10-09 17:49:22 UTC (rev 16)
@@ -0,0 +1,5 @@
+#The netbeans freeform property file
+#Mon Oct 09 18:04:07 CEST 2006
+local.repository=/Users/welterde/.m2/repository
+mvn.path=mvn
+project.directory=/Users/welterde/Documents/dev/jlink/current_trunk/libdb

Added: trunk/libdb/nbproject/project.xml
===================================================================
--- trunk/libdb/nbproject/project.xml	                        (rev 0)
+++ trunk/libdb/nbproject/project.xml	2006-10-09 17:49:22 UTC (rev 16)
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+    <type>org.netbeans.modules.ant.freeform</type>
+    <configuration>
+        <general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
+            <name>JLink libdb</name>
+            <properties>
+                <property name="ant.script">nbproject/mavencall.xml</property>
+                <property-file>nbproject/project.properties</property-file>
+            </properties>
+            <folders>
+                <source-folder>
+                    <label>src/main/java</label>
+                    <type>java</type>
+                    <location>src/main/java</location>
+                </source-folder>
+                <source-folder>
+                    <label>src/test/java</label>
+                    <type>java</type>
+                    <location>src/test/java</location>
+                </source-folder>
+            </folders>
+            <ide-actions>
+                <action name="build">
+                    <script>${ant.script}</script>
+                    <target>build</target>
+                </action>
+                <action name="clean">
+                    <script>${ant.script}</script>
+                    <target>clean</target>
+                </action>
+                <action name="rebuild">
+                    <script>${ant.script}</script>
+                    <target>clean</target>
+                    <target>build</target>
+                </action>
+                <action name="javadoc">
+                    <script>${ant.script}</script>
+                    <target>javadoc</target>
+                </action>
+                <action name="run">
+                    <script>${ant.script}</script>
+                    <target>run</target>
+                </action>
+                <action name="test">
+                    <script>${ant.script}</script>
+                    <target>test</target>
+                </action>
+            </ide-actions>
+            <export>
+                <type>folder</type>
+                <location>target/classes</location>
+                <script>${ant.script}</script>
+                <build-target>build</build-target>
+            </export>
+            <export>
+                <type>folder</type>
+                <location>target/test-classes</location>
+                <script>${ant.script}</script>
+                <build-target>build</build-target>
+            </export>
+            <view>
+                <items>
+                    <source-folder style="packages">
+                        <label>src/main/java</label>
+                        <location>src/main/java</location>
+                    </source-folder>
+                    <source-folder style="packages">
+                        <label>src/test/java</label>
+                        <location>src/test/java</location>
+                    </source-folder>
+                    <source-file>
+                        <label>pom</label>
+                        <location>pom.xml</location>
+                    </source-file>
+                    <source-file>
+                        <label>mavencall</label>
+                        <location>nbproject/mavencall.xml</location>
+                    </source-file>
+                    <source-folder style="tree">
+                        <label>src/main/resources</label>
+                        <location>src/main/resources</location>
+                    </source-folder>
+                    <source-folder style="tree">
+                        <label>src/test/resources</label>
+                        <location>src/test/resources</location>
+                    </source-folder>
+                    <source-folder style="tree">
+                        <label>src/site</label>
+                        <location>src/site</location>
+                    </source-folder>
+                    <source-folder style="tree">
+                        <label>target</label>
+                        <location>target</location>
+                    </source-folder>
+                </items>
+                <context-menu>
+                    <action>
+                        <script>${ant.script}</script>
+                        <label>Refresh Project</label>
+                        <target>refresh-project</target>
+                    </action>
+                    <ide-action name="build"/>
+                    <ide-action name="clean"/>
+                    <ide-action name="rebuild"/>
+                    <ide-action name="javadoc"/>
+                    <ide-action name="run"/>
+                    <ide-action name="test"/>
+                    <action>
+                        <script>${ant.script}</script>
+                        <label>Format Code</label>
+                        <target>jalopy</target>
+                    </action>
+                </context-menu>
+            </view>
+            <subprojects/>
+        </general-data>
+        <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/2">
+            <compilation-unit>
+                <package-root>src/main/java</package-root>
+                <classpath mode="compile">${local.repository}/concurrent/concurrent/1.3.4/concurrent-1.3.4.jar:${local.repository}/log4j/log4j/1.2.8/log4j-1.2.8.jar:${local.repository}/commons-beanutils/commons-beanutils/1.4/commons-beanutils-1.4.jar:${local.repository}/commons-lang/commons-lang/2.1/commons-lang-2.1.jar:${local.repository}/commons-collections/commons-collections/3.1/commons-collections-3.1.jar:${local.repository}/org/apache/derby/derby/10.1.1.0/derby-10.1.1.0.jar:${local.repository}/commons-jxpath/commons-jxpath/1.2/commons-jxpath-1.2.jar:${local.repository}/commons-digester/commons-digester/1.6/commons-digester-1.6.jar:${local.repository}/org/apache/jackrabbit/jackrabbit-core/1.0.1/jackrabbit-core-1.0.1.jar:${local.repository}/ant/ant-optional/1.5.1/ant-optional-1.5.1.jar:${local.repository}/lucene/lucene/1.4.3/lucene-1.4.3.jar:${local.repository}/commons-configuration/commons-configuration/1.3/commons-configuration-1.3.jar:${local.repository}/commons-logging/commons-logging/1.0/commons-logging-1.0.jar:${local.repository}/commons-codec/commons-codec/1.3/commons-codec-1.3.jar:${local.repository}/xerces/xercesImpl/2.2.1/xercesImpl-2.2.1.jar:${local.repository}/xerces/xerces/1.2.3/xerces-1.2.3.jar:${local.repository}/xalan/xalan/2.7.0/xalan-2.7.0.jar:${local.repository}/xerces/xmlParserAPIs/2.0.2/xmlParserAPIs-2.0.2.jar:${local.repository}/jdom/jdom/b9/jdom-b9.jar:${local.repository}/javax/servlet/servlet-api/2.2/servlet-api-2.2.jar:${local.repository}/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar:${local.repository}/commons-beanutils/commons-beanutils-core/1.7.0/commons-beanutils-core-1.7.0.jar:${local.repository}/commons-logging/commons-logging-api/1.0.4/commons-logging-api-1.0.4.jar:${local.repository}/org/slf4j/slf4j-log4j12/1.0/slf4j-log4j12-1.0.jar:${local.repository}/geronimo-spec/geronimo-spec-jta/1.0-M1/geronimo-spec-jta-1.0-M1.jar:${local.repository}/jsr170/jcr/1.0/jcr-1.0.jar</classpath>
+                <built-to>target/classes</built-to>
+                <source-level>1.5</source-level>
+            </compilation-unit>
+            <compilation-unit>
+                <package-root>src/test/java</package-root>
+                <unit-tests/>
+                <classpath mode="compile">target/classes:${local.repository}/concurrent/concurrent/1.3.4/concurrent-1.3.4.jar:${local.repository}/junit/junit/3.8.1/junit-3.8.1.jar:${local.repository}/log4j/log4j/1.2.8/log4j-1.2.8.jar:${local.repository}/commons-beanutils/commons-beanutils/1.4/commons-beanutils-1.4.jar:${local.repository}/commons-lang/commons-lang/2.1/commons-lang-2.1.jar:${local.repository}/commons-collections/commons-collections/3.1/commons-collections-3.1.jar:${local.repository}/org/apache/derby/derby/10.1.1.0/derby-10.1.1.0.jar:${local.repository}/commons-jxpath/commons-jxpath/1.2/commons-jxpath-1.2.jar:${local.repository}/commons-digester/commons-digester/1.6/commons-digester-1.6.jar:${local.repository}/org/apache/jackrabbit/jackrabbit-core/1.0.1/jackrabbit-core-1.0.1.jar:${local.repository}/ant/ant-optional/1.5.1/ant-optional-1.5.1.jar:${local.repository}/lucene/lucene/1.4.3/lucene-1.4.3.jar:${local.repository}/commons-configuration/commons-configuration/1.3/commons-configuration-1.3.jar:${local.repository}/commons-logging/commons-logging/1.0/commons-logging-1.0.jar:${local.repository}/commons-codec/commons-codec/1.3/commons-codec-1.3.jar:${local.repository}/xerces/xercesImpl/2.2.1/xercesImpl-2.2.1.jar:${local.repository}/xerces/xerces/1.2.3/xerces-1.2.3.jar:${local.repository}/xalan/xalan/2.7.0/xalan-2.7.0.jar:${local.repository}/xerces/xmlParserAPIs/2.0.2/xmlParserAPIs-2.0.2.jar:${local.repository}/jdom/jdom/b9/jdom-b9.jar:${local.repository}/javax/servlet/servlet-api/2.2/servlet-api-2.2.jar:${local.repository}/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar:${local.repository}/commons-beanutils/commons-beanutils-core/1.7.0/commons-beanutils-core-1.7.0.jar:${local.repository}/commons-logging/commons-logging-api/1.0.4/commons-logging-api-1.0.4.jar:${local.repository}/org/slf4j/slf4j-log4j12/1.0/slf4j-log4j12-1.0.jar:${local.repository}/geronimo-spec/geronimo-spec-jta/1.0-M1/geronimo-spec-jta-1.0-M1.jar:${local.repository}/jsr170/jcr/1.0/jcr-1.0.jar</classpath>
+                <built-to>target/test-classes</built-to>
+                <source-level>1.5</source-level>
+            </compilation-unit>
+        </java-data>
+    </configuration>
+</project>

Added: trunk/libdb/pom.xml
===================================================================
--- trunk/libdb/pom.xml	                        (rev 0)
+++ trunk/libdb/pom.xml	2006-10-09 17:49:22 UTC (rev 16)
@@ -0,0 +1,141 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<!--////////////////////////////////////////
+    /////////////General////////////////////
+    /////////////////////////////////////-->
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.jlink</groupId>
+    <artifactId>libdb</artifactId>
+    <packaging>jar</packaging>
+    <version>0.0.1-SNAPSHOT</version>
+    <name>JLink libdb</name>
+    <url>http://java-link.sf.net/</url>
+    <dependencies>
+	<dependency>
+	    <groupId>junit</groupId>
+	    <artifactId>junit</artifactId>
+	    <version>3.8.1</version>
+	    <scope>test</scope>
+	</dependency>
+        <dependency>
+            <groupId>commons-configuration</groupId>
+            <artifactId>commons-configuration</artifactId>
+            <version>1.3</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>jackrabbit-core</artifactId>
+            <version>1.0.1</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>jsr170</groupId>
+            <artifactId>jcr</artifactId>
+            <version>1.0</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+	    <groupId>log4j</groupId>
+	    <artifactId>log4j</artifactId>
+	    <version>1.2.13</version>
+            <scope>compile</scope>
+	</dependency>
+        <dependency>
+            <groupId>commons-configuration</groupId>
+            <artifactId>commons-configuration</artifactId>
+            <version>1.3</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+<!--////////////////////////////////////////
+    /////////////Reporting//////////////////
+    /////////////////////////////////////-->
+    <reporting>
+	<plugins>
+	    <plugin>
+		<groupId>org.codehaus.mojo</groupId>
+		<artifactId>jxr-maven-plugin</artifactId>
+	    </plugin>
+	    <plugin>
+		<groupId>org.apache.maven.plugins</groupId>
+		<artifactId>maven-javadoc-plugin</artifactId>
+	    </plugin>
+	    <plugin>
+		<groupId>org.apache.maven.plugins</groupId>
+		<artifactId>maven-pmd-plugin</artifactId>
+		<configuration>
+		    <rulesets>
+			<ruleset>/rulesets/basic.xml</ruleset>
+			<ruleset>/rulesets/braces.xml</ruleset>
+			<ruleset>/rulesets/codesize.xml</ruleset>
+			<ruleset>/rulesets/coupling.xml</ruleset>
+			<ruleset>/rulesets/design.xml</ruleset>
+			<ruleset>/rulesets/finalizers.xml</ruleset>
+			<ruleset>/rulesets/imports.xml</ruleset>
+			<ruleset>/rulesets/javabeans.xml</ruleset>
+			<ruleset>/rulesets/logging-java.xml</ruleset>
+			<ruleset>/rulesets/naming.xml</ruleset>
+			<ruleset>/rulesets/optimizations.xml</ruleset>
+			<ruleset>/rulesets/strictexception.xml</ruleset>
+			<ruleset>/rulesets/strings.xml</ruleset>
+			<ruleset>/rulesets/sunsecure.xml</ruleset>
+			<ruleset>/rulesets/unusedcode.xml</ruleset>
+		    </rulesets>
+		    <linkXref>true</linkXref>
+		    <sourceEncoding>utf-8</sourceEncoding>
+		    <minimumTokens>100</minimumTokens>
+                    <targetJdk>1.5</targetJdk>
+		</configuration>
+	    </plugin>
+	    <plugin>
+		<groupId>org.apache.maven.plugins</groupId>
+		<artifactId>maven-surefire-report-plugin</artifactId>
+	    </plugin>
+	</plugins>
+    </reporting>
+<!--////////////////////////////////////////
+    /////////////Building///////////////////
+    /////////////////////////////////////-->
+    <build>
+	<plugins>
+	    <plugin>
+    		<groupId>org.apache.maven.plugins</groupId>
+    		<artifactId>maven-compiler-plugin</artifactId>
+		<configuration>
+    		    <source>1.5</source>
+    		    <target>1.5</target>
+    		</configuration>
+	    </plugin>
+	</plugins>
+    </build>
+<!--////////////////////////////////////////
+    /////////////Deploying//////////////////
+    /////////////////////////////////////-->
+    <distributionManagement>
+	<site>
+    	    <id>jlink-sf</id>
+	    <url>scp://shell.sf.net/home/groups/j/ja/java-link/htdocs/maven2/libdb</url>
+        </site>
+    </distributionManagement>
+<!--////////////////////////////////////////
+    /////////////Include from root//////////
+    /////////////////////////////////////-->
+    <ciManagement>
+	<system>cruisecontrol</system>
+	<url>http://welterde.i2p/cruisecontrol/</url>
+    </ciManagement>
+    <issueManagement>
+	<system>sourceforge</system>
+	<url>http://sourceforge.net/tracker/?group_id=162264</url>
+    </issueManagement>
+    <developers>
+	<developer>
+	    <id>welterde</id>
+	    <email>wel...@ar...</email>
+	</developer>
+    </developers>
+    <scm>
+	<connection>scm:svn:https://svn.sourceforge.net/svnroot/javalink</connection>
+	<url>http://svn.sourceforge.net/viewcvs.cgi/java-link/</url>
+    </scm>
+</project>

Added: trunk/libdb/src/main/java/org/jlink/server/libdb/StorageManager.java
===================================================================
--- trunk/libdb/src/main/java/org/jlink/server/libdb/StorageManager.java	                        (rev 0)
+++ trunk/libdb/src/main/java/org/jlink/server/libdb/StorageManager.java	2006-10-09 17:49:22 UTC (rev 16)
@@ -0,0 +1,121 @@
+/*
+ * StorageManager.java
+ *
+ * Created on 10. September 2006, 11:13
+ *
+ * JLink: An Introversion Uplink Clone with multiplayer support.
+ * Copyright (C) 2006 Tassilo Schweyer
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+
+package org.jlink.server.libdb;
+
+import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
+import org.apache.commons.configuration.Configuration;
+import org.apache.log4j.Logger;
+
+import org.jlink.server.libdb.drivers.Driver;
+
+/**
+ *
+ * @author welterde
+ */
+public class StorageManager {
+    //Static Configuration
+    public static final String ENV_SEP = System.getProperty("file.separator");
+    public static final String DB_HOME = System.getProperty("user.home") + 
+            ENV_SEP + ".jlink" + ENV_SEP + "server" + ENV_SEP + "db";
+    public static final String DB_CONF = DB_HOME + ENV_SEP + "config.xml";
+    
+    /** Creates a new instance of StorageManager */
+    public StorageManager() {
+        log.debug("Storagemanager created");
+    }
+    
+    
+    //Lifecycle
+    /**
+     * 
+     * 
+     * 
+     * called when game is started.
+     */
+    public void init(Configuration conf) {
+        log.info("initing Storagemanger");
+        //null check
+        if(conf == null)
+            throw new NullPointerException("the config may not be null");
+        
+        // <editor-fold defaultstate="collapsed" desc=" create Driver ">
+        String driverClass = conf.getString("server.db.driver", "org.jlink." +
+                "server.libdb.drivers.JackrabbitDriver");
+        log.info("creating DatabaseDriver: " + driverClass);
+        //try to create the driver wanted
+        try {
+            //load the class
+            Class driver = Class.forName(driverClass);
+            //ok, now create an instance of it
+            Object obj = driver.newInstance();
+            //ok, everything went right, now lets cast it into an Driver and we
+            //are done here
+            this.db_driver = (Driver) obj;
+            
+        } catch(ClassNotFoundException exc) {
+            log.fatal("cannot create StorageManager Driver", exc);
+            //TODO: crash
+        } catch(InstantiationException exc) {
+            log.fatal("cannot create StorageManager Driver", exc);
+            //TODO: crash
+        } catch(IllegalAccessException exc) {
+            log.fatal("cannot create StorageManager Driver", exc);
+            //TODO: crash
+        } catch(ClassCastException exc) {
+            log.fatal("cannot create StorageManager Driver", exc);
+            //TODO: crash
+        }
+        // </editor-fold>
+        
+        // <editor-fold defaultstate="collapsed" desc=" init Driver ">
+        try {
+            String home = null;
+            String config = null;
+            
+            //load the strings from the config, with local defaults
+            home = conf.getString("server.db.home", "db");
+            config = conf.getString("server.db.conf", "db/config.xml");
+            this.db_driver.init(config, home);
+        } catch(RepositoryException exc) {
+            log.fatal("cannot init driver", exc);
+            //TODO: crash
+        }
+        // </editor-fold>
+        
+    }
+    public void destroy() {
+        
+    }
+    
+    
+    
+    
+    
+    
+    private Repository db_repo = null;
+    private Driver db_driver = null;
+    private Configuration conf = null;
+    private Logger log = Logger.getLogger(StorageManager.class);
+}

Added: trunk/libdb/src/main/java/org/jlink/server/libdb/drivers/Driver.java
===================================================================
--- trunk/libdb/src/main/java/org/jlink/server/libdb/drivers/Driver.java	                        (rev 0)
+++ trunk/libdb/src/main/java/org/jlink/server/libdb/drivers/Driver.java	2006-10-09 17:49:22 UTC (rev 16)
@@ -0,0 +1,52 @@
+/*
+ * Driver.java
+ *
+ * Created on 10. September 2006, 11:29
+ *
+ * JLink: An Introversion Uplink Clone with multiplayer support.
+ * Copyright (C) 2006 Tassilo Schweyer
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+
+package org.jlink.server.libdb.drivers;
+
+import java.io.File;
+import java.io.IOException;
+
+import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
+
+/**
+ *
+ * @author welterde
+ */
+public interface Driver {
+    /**
+     * Create an Repository.
+     */
+    public Repository init(String config, String home) throws RepositoryException;
+    
+    
+    
+    public void create(File home) throws RepositoryException;
+    
+    public void delete(File home) throws IOException;
+    
+    
+    
+    public void shutdown(Repository repo) throws RepositoryException;
+    
+}

Added: trunk/libdb/src/main/java/org/jlink/server/libdb/drivers/JackrabbitDriver.java
===================================================================
--- trunk/libdb/src/main/java/org/jlink/server/libdb/drivers/JackrabbitDriver.java	                        (rev 0)
+++ trunk/libdb/src/main/java/org/jlink/server/libdb/drivers/JackrabbitDriver.java	2006-10-09 17:49:22 UTC (rev 16)
@@ -0,0 +1,74 @@
+/*
+ * JackrabbitDriver.java
+ *
+ * Created on 10. September 2006, 12:01
+ *
+ * JLink: An Introversion Uplink Clone with multiplayer support.
+ * Copyright (C) 2006 Tassilo Schweyer
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+
+package org.jlink.server.libdb.drivers;
+
+
+import java.io.File;
+import java.io.IOException;
+
+
+import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
+
+import org.apache.jackrabbit.core.RepositoryImpl;
+import org.apache.jackrabbit.core.config.RepositoryConfig;
+
+/**
+ *
+ * @author welterde
+ */
+public class JackrabbitDriver implements Driver {
+    
+    /** Creates a new instance of JackrabbitDriver */
+    public JackrabbitDriver() {
+    }
+
+    public Repository init(String config, String home) throws RepositoryException {
+        Repository ret = null;
+        
+        //creating config object needed for creation of repo
+        RepositoryConfig conf = RepositoryConfig.create(config, home);
+        
+        //use the conf object to create the repo
+        ret = RepositoryImpl.create(conf);
+        
+        return ret;
+    }
+
+    public void create(File home) throws RepositoryException {
+        //TODO: work this out
+        throw new UnsupportedOperationException("aehm... yeah... you have to configure the jackrabbit yourself");
+    }
+
+    public void delete(File home) throws IOException {
+        //TODO: work this out
+        throw new UnsupportedOperationException("aehm... yeah... you have also to delete it yourself");
+    }
+
+    public void shutdown(Repository repo) throws RepositoryException {
+        //FIXME: might cause an ClassCastException if this isnt an jackrabbit repo
+        ((org.apache.jackrabbit.core.RepositoryImpl) repo).shutdown();
+    }
+    
+}


Property changes on: trunk/libdb/src/site
___________________________________________________________________
Name: svn:ignore
   + .DS_Store


Added: trunk/libdb/src/site/site.xml
===================================================================
--- trunk/libdb/src/site/site.xml	                        (rev 0)
+++ trunk/libdb/src/site/site.xml	2006-10-09 17:49:22 UTC (rev 16)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<project name="JLink libdb">
+  <bannerRight>
+    <src>http://sflogo.sourceforge.net/sflogo.php?group_id=162264&amp;type=3</src>
+  </bannerRight>
+  <body>
+    ${reports}
+  </body>
+</project>

Modified: trunk/server/nbproject/project.xml
===================================================================
--- trunk/server/nbproject/project.xml	2006-10-08 19:29:46 UTC (rev 15)
+++ trunk/server/nbproject/project.xml	2006-10-09 17:49:22 UTC (rev 16)
@@ -1,134 +1,121 @@
-<?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://www.netbeans.org/ns/project/1">
-    <type>org.netbeans.modules.ant.freeform</type>
-    <configuration>
-        <general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
-            <name>JLink Server</name>
-            <properties>
-                <property name="ant.script">nbproject/mavencall.xml</property>
-                <property-file>nbproject/project.properties</property-file>
-            </properties>
-            <folders>
-                <source-folder>
-                    <label>src/main/java</label>
-                    <type>java</type>
-                    <location>src/main/java</location>
-                </source-folder>
-                <source-folder>
-                    <label>src/test/java</label>
-                    <type>java</type>
-                    <location>src/test/java</location>
-                </source-folder>
-            </folders>
-            <ide-actions>
-                <action name="build">
-                    <script>${ant.script}</script>
-                    <target>build</target>
-                </action>
-                <action name="clean">
-                    <script>${ant.script}</script>
-                    <target>clean</target>
-                </action>
-                <action name="rebuild">
-                    <script>${ant.script}</script>
-                    <target>clean</target>
-                    <target>build</target>
-                </action>
-                <action name="javadoc">
-                    <script>${ant.script}</script>
-                    <target>javadoc</target>
-                </action>
-                <action name="run">
-                    <script>${ant.script}</script>
-                    <target>run</target>
-                </action>
-                <action name="test">
-                    <script>${ant.script}</script>
-                    <target>test</target>
-                </action>
-            </ide-actions>
-            <export>
-                <type>folder</type>
-                <location>target/classes</location>
-                <script>${ant.script}</script>
-                <build-target>build</build-target>
-            </export>
-            <export>
-                <type>folder</type>
-                <location>target/test-classes</location>
-                <script>${ant.script}</script>
-                <build-target>build</build-target>
-            </export>
-            <view>
-                <items>
-                    <source-folder style="packages">
-                        <label>src/main/java</label>
-                        <location>src/main/java</location>
-                    </source-folder>
-                    <source-folder style="packages">
-                        <label>src/test/java</label>
-                        <location>src/test/java</location>
-                    </source-folder>
-                    <source-file>
-                        <label>pom</label>
-                        <location>pom.xml</location>
-                    </source-file>
-                    <source-file>
-                        <label>mavencall</label>
-                        <location>nbproject/mavencall.xml</location>
-                    </source-file>
-                    <source-folder style="tree">
-                        <label>src/main/resources</label>
-                        <location>src/main/resources</location>
-                    </source-folder>
-                    <source-folder style="tree">
-                        <label>src/test/resources</label>
-                        <location>src/test/resources</location>
-                    </source-folder>
-                    <source-folder style="tree">
-                        <label>src/site</label>
-                        <location>src/site</location>
-                    </source-folder>
-                    <source-folder style="tree">
-                        <label>target</label>
-                        <location>target</location>
-                    </source-folder>
-                </items>
-                <context-menu>
-                    <action>
-                        <script>${ant.script}</script>
-                        <label>Refresh Project</label>
-                        <target>refresh-project</target>
-                    </action>
-                    <ide-action name="build"/>
-                    <ide-action name="clean"/>
-                    <ide-action name="rebuild"/>
-                    <ide-action name="javadoc"/>
-                    <ide-action name="run"/>
-                    <ide-action name="test"/>
-                    <action>
-                        <script>${ant.script}</script>
-                        <label>Format Code</label>
-                        <target>jalopy</target>
-                    </action>
-                </context-menu>
-            </view>
-            <subprojects/>
-        </general-data>
-        <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/2">
-            <compilation-unit>
-                <package-root>src/main/java</package-root>
-                <classpath mode="compile">${local.repository}/org/jlink/share/0.0.1-SNAPSHOT/share-0.0.1-SNAPSHOT.jar:${local.repository}/log4j/log4j/1.2.13/log4j-1.2.13.jar</classpath>
-                <built-to>target/classes</built-to>
-                <source-level>1.5</source-level>
-            </compilation-unit>
-            <compilation-unit>
-                <package-root>src/test/java</package-root>
-                <unit-tests/>
-                <classpath mode="compile">target/classes:${local.repository}/org/jlink/share/0.0.1-SNAPSHOT/share-0.0.1-SNAPSHOT.jar:${local.repository}/junit/junit/3.8.1/junit-3.8.1.jar:${local.repository}/log4j/log4j/1.2.13/log4j-1.2.13.jar</classpath>
-                <built-to>target/test-classes</built-to>
-                <source-level>1.5</source-level>
-            </compilation-unit>
-        </java-data>
-    </configuration>
-</project>
+  <type>org.netbeans.modules.ant.freeform</type>
+  <configuration>
+    <general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
+      <name>JLink Server</name>
+      <properties>
+        <property name="ant.script">nbproject/mavencall.xml</property>
+        <property-file>nbproject/project.properties</property-file>
+      </properties>
+      <folders>
+        <source-folder>
+          <label>src/main/java</label>
+          <type>java</type>
+          <location>src/main/java</location>
+        </source-folder>
+        <source-folder>
+          <label>src/test/java</label>
+          <type>java</type>
+          <location>src/test/java</location>
+        </source-folder>
+      </folders>
+      <ide-actions>
+        <action name="build">
+          <script>${ant.script}</script>
+          <target>build</target>
+        </action>
+        <action name="clean">
+          <script>${ant.script}</script>
+          <target>clean</target>
+        </action>
+        <action name="rebuild">
+          <script>${ant.script}</script>
+          <target>clean</target>
+          <target>build</target>
+        </action>
+        <action name="javadoc">
+          <script>${ant.script}</script>
+          <target>javadoc</target>
+        </action>
+        <action name="run">
+          <script>${ant.script}</script>
+          <target>run</target>
+        </action>
+        <action name="test">
+          <script>${ant.script}</script>
+          <target>test</target>
+        </action>
+      </ide-actions>
+      <view>
+        <items>
+          <source-file>
+            <label>pom</label>
+            <location>pom.xml</location>
+          </source-file>
+          <source-file>
+            <label>mavencall</label>
+            <location>nbproject/mavencall.xml</location>
+          </source-file>
+          <source-folder style="packages">
+            <label>src/main/java</label>
+            <location>src/main/java</location>
+          </source-folder>
+          <source-folder style="packages">
+            <label>src/test/java</label>
+            <location>src/test/java</location>
+          </source-folder>
+          <source-folder style="tree">
+            <label>src/main/resources</label>
+            <location>src/main/resources</location>
+          </source-folder>
+          <source-folder style="tree">
+            <label>src/test/resources</label>
+            <location>src/test/resources</location>
+          </source-folder>
+          <source-folder style="tree">
+            <label>src/site</label>
+            <location>src/site</location>
+          </source-folder>
+          <source-folder style="tree">
+            <label>target</label>
+            <location>target</location>
+          </source-folder>
+        </items>
+        <context-menu>
+          <action>
+            <script>${ant.script}</script>
+            <label>Refresh Project</label>
+            <target>refresh-project</target>
+          </action>
+          <ide-action name="build"/>
+          <ide-action name="clean"/>
+          <ide-action name="rebuild"/>
+          <ide-action name="javadoc"/>
+          <ide-action name="run"/>
+          <ide-action name="test"/>
+          <action>
+            <script>${ant.script}</script>
+            <label>Format Code</label>
+            <target>jalopy</target>
+          </action>
+        </context-menu>
+      </view>
+      <subprojects/>
+    </general-data>
+    <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/2">
+      <compilation-unit>
+        <package-root>src/main/java</package-root>
+        <classpath mode="compile">${local.repository}/commons-codec/commons-codec/1.3/commons-codec-1.3.jar:${local.repository}/commons-lang/commons-lang/1.0/commons-lang-1.0.jar:${local.repository}/commons-logging/commons-logging/1.0/commons-logging-1.0.jar:${local.repository}/xerces/xercesImpl/2.2.1/xercesImpl-2.2.1.jar:${local.repository}/org/jlink/share/0.0.1-SNAPSHOT/share-0.0.1-SNAPSHOT.jar:${local.repository}/xerces/xerces/1.2.3/xerces-1.2.3.jar:${local.repository}/commons-beanutils/commons-beanutils/1.4/commons-beanutils-1.4.jar:${local.repository}/xalan/xalan/2.7.0/xalan-2.7.0.jar:${local.repository}/log4j/log4j/1.2.13/log4j-1.2.13.jar:${local.repository}/commons-collections/commons-collections/3.1/commons-collections-3.1.jar:${local.repository}/jdom/jdom/b9/jdom-b9.jar:${local.repository}/commons-jxpath/commons-jxpath/1.2/commons-jxpath-1.2.jar:${local.repository}/javax/servlet/servlet-api/2.2/servlet-api-2.2.jar:${local.repository}/commons-digester/commons-digester/1.6/commons-digester-1.6.jar:${local.repository}/ant/ant-optional/1.5.1/ant-optional-1.5.1.jar:${local.repository}/commons-cli/commons-cli/1.0/commons-cli-1.0.jar:${local.repository}/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar:${local.repository}/commons-logging/commons-logging-api/1.0.4/commons-logging-api-1.0.4.jar:${local.repository}/commons-beanutils/commons-beanutils-core/1.7.0/commons-beanutils-core-1.7.0.jar:${local.repository}/commons-configuration/commons-configuration/1.3/commons-configuration-1.3.jar</classpath>
+        <built-to>target/classes</built-to>
+        <source-level>1.4</source-level>
+      </compilation-unit>
+      <compilation-unit>
+        <package-root>src/test/java</package-root>
+        <unit-tests/>
+        <classpath mode="compile">target/classes:${local.repository}/commons-codec/commons-codec/1.3/commons-codec-1.3.jar:${local.repository}/commons-lang/commons-lang/1.0/commons-lang-1.0.jar:${local.repository}/commons-logging/commons-logging/1.0/commons-logging-1.0.jar:${local.repository}/xerces/xercesImpl/2.2.1/xercesImpl-2.2.1.jar:${local.repository}/org/jlink/share/0.0.1-SNAPSHOT/share-0.0.1-SNAPSHOT.jar:${local.repository}/junit/junit/3.8.1/junit-3.8.1.jar:${local.repository}/xerces/xerces/1.2.3/xerces-1.2.3.jar:${local.repository}/commons-beanutils/commons-beanutils/1.4/commons-beanutils-1.4.jar:${local.repository}/xalan/xalan/2.7.0/xalan-2.7.0.jar:${local.repository}/log4j/log4j/1.2.13/log4j-1.2.13.jar:${local.repository}/commons-collections/commons-collections/3.1/commons-collections-3.1.jar:${local.repository}/jdom/jdom/b9/jdom-b9.jar:${local.repository}/commons-jxpath/commons-jxpath/1.2/commons-jxpath-1.2.jar:${local.repository}/javax/servlet/servlet-api/2.2/servlet-api-2.2.jar:${local.repository}/commons-digester/commons-digester/1.6/commons-digester-1.6.jar:${local.repository}/ant/ant-optional/1.5.1/ant-optional-1.5.1.jar:${local.repository}/commons-cli/commons-cli/1.0/commons-cli-1.0.jar:${local.repository}/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar:${local.repository}/commons-logging/commons-logging-api/1.0.4/commons-logging-api-1.0.4.jar:${local.repository}/commons-beanutils/commons-beanutils-core/1.7.0/commons-beanutils-core-1.7.0.jar:${local.repository}/commons-configuration/commons-configuration/1.3/commons-configuration-1.3.jar</classpath>
+        <built-to>target/test-classes</built-to>
+        <source-level>1.4</source-level>
+      </compilation-unit>
+    </java-data>
+  </configuration>
+</project>
\ No newline at end of file

Modified: trunk/server/pom.xml
===================================================================
--- trunk/server/pom.xml	2006-10-08 19:29:46 UTC (rev 15)
+++ trunk/server/pom.xml	2006-10-09 17:49:22 UTC (rev 16)
@@ -23,11 +23,29 @@
             <scope>compile</scope>
 	</dependency>
         <dependency>
+	    <groupId>org.jlink</groupId>
+	    <artifactId>libdb</artifactId>
+	    <version>0.0.1-SNAPSHOT</version>
+            <scope>compile</scope>
+	</dependency>
+        <dependency>
 	    <groupId>log4j</groupId>
 	    <artifactId>log4j</artifactId>
 	    <version>1.2.13</version>
             <scope>compile</scope>
 	</dependency>
+        <dependency>
+            <groupId>commons-cli</groupId>
+            <artifactId>commons-cli</artifactId>
+            <version>1.0</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>commons-configuration</groupId>
+            <artifactId>commons-configuration</artifactId>
+            <version>1.3</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 <!--////////////////////////////////////////
     /////////////Reporting//////////////////

Added: trunk/server/src/main/java/org/jlink/server/Main.java
===================================================================
--- trunk/server/src/main/java/org/jlink/server/Main.java	                        (rev 0)
+++ trunk/server/src/main/java/org/jlink/server/Main.java	2006-10-09 17:49:22 UTC (rev 16)
@@ -0,0 +1,198 @@
+/*
+ * Main.java
+ *
+ * Created on 8. Oktober 2006, 11:33
+ *
+ * JLink: An Introversion Uplink Clone with multiplayer support.
+ * Copyright (C) 2006 Tassilo Schweyer
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+
+package org.jlink.server;
+
+//imports
+//imports::own
+//imports::own::server
+//imports::own::server::jmx
+import org.jlink.server.jmx.JMXAgent;
+
+//imports::sys
+//imports::sys::commons-cli
+import org.apache.commons.cli.Option;
+import org.apache.commons.cli.OptionBuilder;
+import org.apache.commons.cli.Options;
+import org.apache.commons.cli.GnuParser;
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.HelpFormatter;
+import org.apache.commons.cli.ParseException;
+//import::sys::log4j
+import org.apache.log4j.PropertyConfigurator;
+import org.apache.log4j.xml.DOMConfigurator;
+import org.apache.log4j.BasicConfigurator;
+import org.apache.log4j.Logger;
+//import::sys::commons-configuration
+import org.apache.commons.configuration.Configuration;
+import org.apache.commons.configuration.XMLConfiguration;
+import org.apache.commons.configuration.ConfigurationException;
+
+/**
+ *
+ * @author welterde
+ */
+public class Main {
+    
+    /** Creates a new instance of Main */
+    private Main() {
+    }
+    
+    /**
+     * @param args the command line arguments
+     */
+    public static void main(String[] args) {
+        String conf_log = null;
+        String conf_srv = null;
+        
+        // <editor-fold defaultstate="collapsed" desc=" parse arguments ">
+        try {
+            //create options
+            // ...configs
+            Option opt_conf_srv = OptionBuilder.withArgName("config")
+                    .hasArg()
+                    .withDescription("The path to the server configuration")
+                    .withLongOpt("config")
+                    .create('C');
+            Option opt_conf_log = OptionBuilder.withArgName("log")
+                    .hasArg()
+                    .withDescription("The path to the log4j configuration")
+                    .withLongOpt("log")
+                    .create('L');
+            // ...ops
+            Option opt_op_help = new Option( "help", "print this message" );
+            //asamble
+            Options opts = new Options();
+            opts.addOption(opt_conf_srv);
+            opts.addOption(opt_conf_log);
+            opts.addOption(opt_op_help);
+            //parse
+            CommandLine cmd = new GnuParser().parse(opts, args);
+            //process
+            if(cmd.hasOption("help")) {
+                new HelpFormatter().printHelp("jlink", opts);
+                System.exit(0);
+            }
+            if(cmd.hasOption('C')) {
+                conf_srv = cmd.getOptionValue('C');
+            } else {
+                //crash
+                System.err.println("missing server config, please refer to help");
+                System.exit(1);
+            }
+            if(cmd.hasOption('L')) {
+                conf_log = cmd.getOptionValue('L');
+            } else {
+                //crash
+                System.err.println("missing logging config, please refer to help");
+                System.exit(1);
+            }
+        } catch(ParseException exc) {
+            throw new Error("error in cmd", exc);
+        }
+        // </editor-fold>
+        
+        // <editor-fold defaultstate="collapsed" desc=" init logging ">
+        //TODO: add existence check
+        if(conf_log.endsWith("properties") || conf_log.endsWith("cfg")) {
+            PropertyConfigurator.configure(conf_log);
+        } else if(conf_log.endsWith("xml")) {
+            DOMConfigurator.configure(conf_log);
+        } else {
+            //VOTE: shall we crash here or use simply BasicConf
+            BasicConfigurator.configure();
+            //TODO: till when vote is over, add log message telling that init logging failed
+        }
+        log = Logger.getLogger(Main.class);
+        log.info("logging started");
+        {
+            Logger sys = Logger.getLogger("jlink.init.sysinfo");
+            sys.info("retrieving system information");
+            sys.info("java.version: " + System.getProperty("java.version"));
+            sys.info("java.class.path: "+ System.getProperty("java.class.path"));
+            sys.info("System.compiler: " + System.getProperty("java.compiler"));
+            sys.info("os.name: " + System.getProperty("os.name"));
+            sys.info("os.arch: " + System.getProperty("os.arch"));
+            sys.info("os.version: " + System.getProperty("os.version"));
+            sys.info("user.dir: " + System.getProperty("user.dir"));
+        }
+        // </editor-fold>
+        
+        // <editor-fold defaultstate="collapsed" desc=" load config ">
+        //TODO: check existance of file
+        log.info("loading server configuration");
+        try {
+            xconf = new XMLConfiguration(conf_srv);
+            log.debug("configuration loaded");
+        } catch(ConfigurationException exc) {
+            log.fatal("cannot load server configuration", exc);
+            System.exit(1);
+        }
+        conf = xconf;
+        
+        // </editor-fold>
+        
+        // <editor-fold defaultstate="collapsed" desc=" startup ">
+        
+        // </editor-fold>
+        
+        // <editor-fold defaultstate="collapsed" desc=" JMX ">
+        JMXAgent agent = JMXAgent.getDefault();
+        // </editor-fold>
+        
+        Core core = new Core();
+        
+        core.start();
+        
+    }
+    
+    
+    
+    public static void shutdown() {
+        log.info("shutdown requested");
+        //TODO: shutdown everything
+        log.info("shutdown complete, exiting");
+        System.exit(0);
+    }
+    
+    
+    
+    public static void confSave() {
+        //FIX: Threadsave?
+        log.debug("saving config");
+        try {
+            xconf.save();
+            log.trace("config saved");
+        } catch (ConfigurationException exc) {
+            log.warn("couldnt save config", exc);
+        }
+    }
+    public static void confReload() {
+        //TODO: write this
+    }
+    
+    
+    private static Configuration conf = null;
+    private static XMLConfiguration xconf = null;
+    private static Logger log = null;
+}

Added: trunk/server/src/main/java/org/jlink/server/MainJMX.java
===================================================================
--- trunk/server/src/main/java/org/jlink/server/MainJMX.java	                        (rev 0)
+++ trunk/server/src/main/java/org/jlink/server/MainJMX.java	2006-10-09 17:49:22 UTC (rev 16)
@@ -0,0 +1,122 @@
+/*
+ * MainJMX.java
+ *
+ * Created on 8. Oktober 2006, 17:03
+ *
+ * JLink: An Introversion Uplink Clone with multiplayer support.
+ * Copyright (C) 2006 Tassilo Schweyer
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+
+package org.jlink.server;
+import javax.management.*;
+import java.util.Arrays;
+
+/**
+ * Dynamic MBean based on StandardMBean
+ * Class MainJMX
+ * Server Mainclass Controllbean
+ * @author welterde
+ */
+public class MainJMX extends javax.management.StandardMBean implements MainJMXMBean {
+    
+    public MainJMX() throws NotCompliantMBeanException {
+        super(MainJMXMBean.class);
+    }
+    
+    /**
+     * Next are the methods to compute MBeanInfo.
+     * You shouldn't update these methods.
+     */
+    protected String getDescription(MBeanInfo info) {
+        return "Server Mainclass Controllbean";
+    }
+    
+    protected String getDescription(MBeanAttributeInfo info) {
+        String description = null;
+        return description;
+    }
+    
+    protected String getDescription(MBeanOperationInfo op,
+            MBeanParameterInfo param,
+            int sequence) {
+        if (op.getName().equals("shutdown")) {
+            switch (sequence) {
+                default : return null;
+            }
+        }
+        return null;
+    }
+    
+    protected String getParameterName(MBeanOperationInfo op,
+            MBeanParameterInfo param,
+            int sequence) {
+        if (op.getName().equals("shutdown")) {
+            switch (sequence) {
+                default : return null;
+            }
+        }
+        return null;
+    }
+    
+    protected String getDescription(MBeanOperationInfo info) {
+        String description = null;
+        MBeanParameterInfo[] params = info.getSignature();
+        String[] signature = new String[params.length];
+        for (int i = 0; i < params.length; i++)
+            signature[i] = params[i].getType();
+        String[] methodSignature;
+        
+        methodSignature = new String[] {
+        };
+        if (info.getName().equals("shutdown") && Arrays.equals(signature, methodSignature)) {
+            description = "Operation exposed for management";
+        }
+        
+        return description;
+    }
+    
+    public MBeanInfo getMBeanInfo() {
+        MBeanInfo mbinfo = super.getMBeanInfo();
+        return new MBeanInfo(mbinfo.getClassName(),
+                mbinfo.getDescription(),
+                mbinfo.getAttributes(),
+                mbinfo.getConstructors(),
+                mbinfo.getOperations(),
+                getNotificationInfo());
+    }
+    
+    public MBeanNotificationInfo[] getNotificationInfo() {
+        return new MBeanNotificationInfo[] {};
+    }
+
+    /**
+     * Operation exposed for management
+     */
+    public void shutdown() {
+        Main.shutdown();
+    }
+
+    public void configSave() {
+        Main.confSave();
+    }
+
+    public void configReload() {
+        Main.confReload();
+    }
+}
+
+

Added: trunk/server/src/main/java/org/jlink/server/MainJMXMBean.java
===================================================================
--- trunk/server/src/main/java/org/jlink/server/MainJMXMBean.java	                        (rev 0)
+++ trunk/server/src/main/java/org/jlink/server/MainJMXMBean.java	2006-10-09 17:49:22 UTC (rev 16)
@@ -0,0 +1,45 @@
+/*
+ * MainJMXMBean.java
+ *
+ * Created on 8. Oktober 2006, 17:03
+ *
+ * JLink: An Introversion Uplink Clone with multiplayer support.
+ * Copyright (C) 2006 Tassilo Schweyer
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+
+package org.jlink.server;
+
+/**
+ * Interface MainJMXMBean
+ * Server Mainclass Controllbean
+ * @author welterde
+ */
+public interface MainJMXMBean
+{
+    /**
+     * Operation exposed for management
+     */
+    public void shutdown();
+    
+    
+    public void configSave();
+    
+    
+    public void configReload();
+}
+
+

Modified: trunk/server/src/main/java/org/jlink/server/jmx/JMXAgent.java
===================================================================
--- trunk/server/src/main/java/org/jlink/server/jmx/JMXAgent.java	2006-10-08 19:29:46 UTC (rev 15)
+++ trunk/server/src/main/java/org/jlink/server/jmx/JMXAgent.java	2006-10-09 17:49:22 UTC (rev 16)
@@ -25,12 +25,19 @@
 
 //import
 //import::own
+//import::own::server
+import org.jlink.server.MainJMX;
+//import::own::server::libdb
+import org.jlink.server.libdb.StorageManagerJMX;
 //import::sys
 //import::sys::jmx
 import javax.management.ObjectName;
 import javax.management.MBeanServer;
 import java.lang.management.ManagementFactory;
+//import::sys::log4j
+import org.apache.log4j.Logger;
 
+
 /**
  * JMX agent class.
  * @author tassilo
@@ -40,6 +47,22 @@
      * Instantiate and register your MBeans.
      */
     public void init() throws Exception {
+        log.info("registering jmx objects");
+        //Main::JMX::add()
+        {
+            log.debug("registering MainJMX");
+            ObjectName name = new ObjectName("org.jlink.server:type=MainJMX");
+            MainJMX obj = new MainJMX();
+            this.mbs.registerMBean(obj, name);
+            log.debug("done");
+        }
+//        {
+//            log.debug("registering StorageManagerJMX");
+//            ObjectName name = new ObjectName("org.jlink.server.libdb:type=StorageManagerJMX");
+//            StorageManagerJMX obj = new StorageManagerJMX();
+//            this.mbs.registerMBean(obj, name);
+//            log.debug("done");
+//        }
         //Core::JMX::add()
         
         //Database::JMX::add()
@@ -73,6 +96,9 @@
     private final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
     // Singleton instance
     private static JMXAgent singleton;
+    
+    
+    private Logger log = Logger.getLogger(JMXAgent.class);
 }
 
 

Modified: trunk/server/src/main/java/org/jlink/server/jmx/run.properties
===================================================================
--- trunk/server/src/main/java/org/jlink/server/jmx/run.properties	2006-10-08 19:29:46 UTC (rev 15)
+++ trunk/server/src/main/java/org/jlink/server/jmx/run.properties	2006-10-09 17:49:22 UTC (rev 16)
@@ -244,7 +244,7 @@
 #
 
 # For a non-default password file location use the foll...
 
[truncated message content]

View entire thread

SourceForge
  • Create a Project
  • Open Source Software
  • Business Software
  • Top Downloaded Projects
Company
  • About
  • Team
  • SourceForge Headquarters
    1320 Columbia Street Suite 310
    San Diego, CA 92101
    +1 (858) 422-6466
Resources
  • Support
  • Site Documentation
  • Site Status
  • SourceForge Reviews
SourceForge logo
© 2025 Slashdot Media. All Rights Reserved.
Terms Privacy Opt Out Advertise
×
Thanks for helping keep SourceForge clean.
X





Briefly describe the problem (required):
Upload screenshot of ad (required):
Select a file, or drag & drop file here.
✔
✘
Screenshot instructions:

Click URL instructions:
Right-click on the ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)

More information about our ad policies

Ad destination/click URL: