You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/10/23 23:03:55 UTC

svn commit: r1401476 - in /openejb/trunk/openejb: arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/ arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/ container/openejb-core/src/mai...

Author: rmannibucau
Date: Tue Oct 23 21:03:54 2012
New Revision: 1401476

URL: http://svn.apache.org/viewvc?rev=1401476&view=rev
Log:
TOMEE-496 TOMEE-497 simpleLog in arquillian tomee remote

Added:
    openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/SimpleTomEEFormatter.java
Modified:
    openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/IO.java
    openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java
    openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java

Modified: openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/IO.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/IO.java?rev=1401476&r1=1401475&r2=1401476&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/IO.java (original)
+++ openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/IO.java Tue Oct 23 21:03:54 2012
@@ -169,6 +169,14 @@ public class IO {
         return null;
     }
 
+    public static void closeSilently(final Closeable closeable) {
+        try {
+            close(closeable);
+        } catch (IOException e) {
+            // no-op
+        }
+    }
+
     public static boolean delete(File file) {
         if (file == null) return false;
         if (!file.delete()) {

Modified: openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java?rev=1401476&r1=1401475&r2=1401476&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java (original)
+++ openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java Tue Oct 23 21:03:54 2012
@@ -42,6 +42,7 @@ public class RemoteTomEEConfiguration ex
     private boolean debug;
     private int debugPort = 5005;
     private String catalina_opts = null; // using this format to match the script one
+    private boolean simpleLog = false;
 
     public String getGroupId() {
         return groupId;
@@ -178,5 +179,11 @@ public class RemoteTomEEConfiguration ex
         this.catalina_opts = opts;
     }
 
+    public boolean isSimpleLog() {
+        return simpleLog;
+    }
 
+    public void setSimpleLog(final boolean simpleLog) {
+        this.simpleLog = simpleLog;
+    }
 }

Modified: openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java?rev=1401476&r1=1401475&r2=1401476&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java (original)
+++ openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java Tue Oct 23 21:03:54 2012
@@ -26,7 +26,9 @@ import org.jboss.arquillian.container.sp
 
 import javax.naming.NamingException;
 import java.io.File;
+import java.io.FileWriter;
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Iterator;
@@ -78,6 +80,7 @@ public class RemoteTomEEContainer extend
             }
             container = new RemoteServer();
 
+            container.setAdditionalClasspath(addOneLineFormatter(openejbHome));
             container.start(args(), "start", true);
         } catch (Exception e) {
             logger.log(Level.SEVERE, "Unable to start remote container", e);
@@ -91,6 +94,28 @@ public class RemoteTomEEContainer extend
         }
     }
 
+    private String addOneLineFormatter(final File home) {
+        final String name = SimpleTomEEFormatter.class.getPackage().getName().replace('.', '/') + "/" + SimpleTomEEFormatter.class.getSimpleName() + ".class";
+        final InputStream is = getClass().getResourceAsStream("/" + name);
+        if (is != null) {
+            final File parent = new File(home, "bin/classes");
+            final File destination = new File(parent, name);
+            if (!destination.getParentFile().mkdirs()) {
+                LOGGER.warning("Can't create " + destination.getPath());
+            } else {
+                try {
+                    IO.copy(is, destination);
+                    return parent.getAbsolutePath(); // to add to the classpath, don't return destination
+                } catch (IOException e) {
+                    LOGGER.log(Level.WARNING, "Can't add SingleLineFormatter", e);
+                } finally {
+                    IO.closeSilently(is);
+                }
+            }
+        }
+        return null;
+    }
+
     private List<String> args() {
         String opts = configuration.getCatalina_opts();
         if (opts == null || (opts = opts.trim()).isEmpty()) {
@@ -163,6 +188,31 @@ public class RemoteTomEEContainer extend
             Setup.removeUselessWebapps(openejbHome);
         }
 
+        if (configuration.isSimpleLog()) {
+            boolean doIt = true;
+            if (configuration.getConf() != null) { // let the user override it
+                final File confFolder = new File(configuration.getConf());
+                if (confFolder.exists() && new File(confFolder, "logging.properties").exists()) {
+                    doIt = false;
+                }
+            }
+
+            if (doIt) {
+                FileWriter writer = null;
+                try {
+                    writer = new FileWriter(new File(openejbHome, "conf/logging.properties"));
+                    writer.write("handlers = java.util.logging.ConsoleHandler\n" +
+                            ".handlers = java.util.logging.ConsoleHandler\n" +
+                            "java.util.logging.ConsoleHandler.level = INFO\n" +
+                            "java.util.logging.ConsoleHandler.formatter = " + SimpleTomEEFormatter.class.getName());
+                } catch (IOException ioe) {
+                    // no-op
+                } finally {
+                    IO.closeSilently(writer);
+                }
+            }
+        }
+
         if (logger.isLoggable(Level.FINE)) {
             final Map<Object, Object> map = new TreeMap<Object, Object>(System.getProperties());
             for (Map.Entry<Object, Object> entry : map.entrySet()) {

Added: openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/SimpleTomEEFormatter.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/SimpleTomEEFormatter.java?rev=1401476&view=auto
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/SimpleTomEEFormatter.java (added)
+++ openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/SimpleTomEEFormatter.java Tue Oct 23 21:03:54 2012
@@ -0,0 +1,47 @@
+/**
+ * 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.tomee.arquillian.remote;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.logging.LogRecord;
+
+public class SimpleTomEEFormatter extends java.util.logging.Formatter {
+    private static final String LN = System.getProperty("line.separator");
+
+    @Override
+    public synchronized String format(LogRecord record) {
+        final Throwable thrown = record.getThrown();
+        final StringBuilder sbuf = new StringBuilder();
+        sbuf.append(record.getLevel().getLocalizedName());
+        sbuf.append(" - ");
+        sbuf.append(formatMessage(record));
+        sbuf.append(LN);
+        if (thrown != null) {
+            try {
+                final StringWriter sw = new StringWriter();
+                final PrintWriter pw = new PrintWriter(sw);
+                thrown.printStackTrace(pw);
+                pw.close();
+                sbuf.append(sw.toString());
+            } catch (Exception ex) {
+                // no-op
+            }
+        }
+        return sbuf.toString();
+    }
+}

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java?rev=1401476&r1=1401475&r2=1401476&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java Tue Oct 23 21:03:54 2012
@@ -47,6 +47,7 @@ public class RemoteServer {
     private final boolean profile = options.get("openejb.server.profile", false);
     private final boolean tomcat;
     private final String javaOpts = System.getProperty("java.opts");
+    private String additionalClasspath = null;
 
     /**
      * Has the remote server's instance been already running ?
@@ -272,12 +273,14 @@ public class RemoteServer {
                     argsList.add("-ea");
                     argsList.add("-classpath");
                     String ps = File.pathSeparator;
+                    final StringBuilder cp = new StringBuilder(bootstrapJar.getAbsolutePath()).append(ps).append(juliJar.getAbsolutePath());
                     if (commonsLoggingJar.exists()) {
-                        argsList.add(bootstrapJar.getAbsolutePath() + ps + juliJar.getAbsolutePath() + ps + commonsLoggingJar.getAbsolutePath());
-
-                    } else {
-                        argsList.add(bootstrapJar.getAbsolutePath() + ps + juliJar.getAbsolutePath());
+                        cp.append(ps).append(commonsLoggingJar.getAbsolutePath());
+                    }
+                    if (additionalClasspath != null) {
+                        cp.append(ps).append(additionalClasspath);
                     }
+                    argsList.add(cp.toString());
 
                     argsList.add("org.apache.catalina.startup.Bootstrap");
                     if (cmd == null) {
@@ -487,4 +490,8 @@ public class RemoteServer {
 
         return true;
     }
+
+    public void setAdditionalClasspath(final String additionalClasspath) {
+        this.additionalClasspath = additionalClasspath;
+    }
 }