but +1 with Romain.

JLouis


2014-02-17 14:43 GMT+01:00 Jean-Louis MONTEIRO <[email protected]>:

> With even it's even simpler I guess.
>
> JLouis
>
>
> 2014-02-17 14:33 GMT+01:00 Romain Manni-Bucau <[email protected]>:
>
> Hi Andy
>>
>> please revert it since it was the first version of the code we had in
>> tomee jaxrs integration and needed to be refactored to match real
>> needs. If your issue is with wadl generator please do something
>> specific to wadlgenerator in configureFactory (if provider instanceof
>> wadlgenerator replace cxf one or sthg like that)
>>
>>
>>
>> Romain Manni-Bucau
>> Twitter: @rmannibucau
>> Blog: http://rmannibucau.wordpress.com/
>> LinkedIn: http://fr.linkedin.com/in/rmannibucau
>> Github: https://github.com/rmannibucau
>>
>>
>>
>>
>> ---------- Forwarded message ----------
>> From:  <[email protected]>
>> Date: 2014-02-17 14:12 GMT+01:00
>> Subject: svn commit: r1568973 - in /tomee/tomee/trunk:
>>
>> server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
>>
>> tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java
>> To: [email protected]
>>
>>
>> Author: andygumbrecht
>> Date: Mon Feb 17 13:12:50 2014
>> New Revision: 1568973
>>
>> URL: http://svn.apache.org/r1568973
>> Log:
>> Visit https://issues.apache.org/jira/browse/TOMEE-1126.
>> Synchronization.
>>
>> Modified:
>>
>> tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
>>
>> tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java
>>
>> Modified:
>> tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
>> URL:
>> http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java?rev=1568973&r1=1568972&r2=1568973&view=diff
>>
>> ==============================================================================
>> ---
>> tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
>> (original)
>> +++
>> tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
>> Mon Feb 17 13:12:50 2014
>> @@ -79,7 +79,15 @@ import java.lang.annotation.Annotation;
>>  import java.lang.reflect.Constructor;
>>  import java.net.HttpURLConnection;
>>  import java.net.URL;
>> -import java.util.*;
>> +import java.util.ArrayList;
>> +import java.util.Arrays;
>> +import java.util.Collection;
>> +import java.util.Collections;
>> +import java.util.HashMap;
>> +import java.util.HashSet;
>> +import java.util.List;
>> +import java.util.Map;
>> +import java.util.Set;
>>  import java.util.concurrent.CopyOnWriteArrayList;
>>  import java.util.logging.Level;
>>  import java.util.regex.Pattern;
>> @@ -120,7 +128,22 @@ public class CxfRsHttpListener implement
>>          STATIC_CONTENT_TYPES.put("pdf", "application/pdf");
>>          STATIC_CONTENT_TYPES.put("xsd", "application/xml");
>>
>> -        for (final ProviderInfo<RequestHandler> rh :
>>
>> org.apache.cxf.jaxrs.provider.ProviderFactory.getSharedInstance().getRequestHandlers())
>> {
>> +        final String clazz =
>> SystemInstance.get().getProperty("openejb.cxf-rs.provider.classes",
>> "default");
>> +        final org.apache.cxf.jaxrs.provider.ProviderFactory factory =
>> org.apache.cxf.jaxrs.provider.ProviderFactory.getSharedInstance();
>> +
>> +        if (!"default".equals(clazz)) {
>> +
>> +            final String[] classes = clazz.split(",");
>> +            for (final String aClass : classes) {
>> +                try {
>> +
>>
>> factory.setUserProviders(Arrays.asList(Class.forName(clazz).newInstance()));
>> +                } catch (final Exception e) {
>> +                    LOGGER.warning("Failed to load class: " + clazz +
>> " - " + e.getMessage());
>> +                }
>> +            }
>> +        }
>> +
>> +        for (final ProviderInfo<RequestHandler> rh :
>> factory.getRequestHandlers()) {
>>              final RequestHandler provider = rh.getProvider();
>>              if (WadlGenerator.class.isInstance(provider)) {
>>                  final WadlGenerator wadlGenerator =
>> WadlGenerator.class.cast(provider);
>>
>> Modified:
>> tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java
>> URL:
>> http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java?rev=1568973&r1=1568972&r2=1568973&view=diff
>>
>> ==============================================================================
>> ---
>> tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java
>> (original)
>> +++
>> tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java
>> Mon Feb 17 13:12:50 2014
>> @@ -31,6 +31,7 @@ import org.apache.tomee.loader.TomcatHel
>>  import java.io.IOException;
>>  import java.lang.reflect.Field;
>>  import java.util.Properties;
>> +import java.util.concurrent.atomic.AtomicBoolean;
>>  import java.util.logging.Level;
>>  import java.util.logging.Logger;
>>
>> @@ -39,96 +40,99 @@ import java.util.logging.Logger;
>>  public class ServerListener implements LifecycleListener {
>>      private static final Logger LOGGER =
>> Logger.getLogger(ServerListener.class.getName());
>>
>> -    static private boolean listenerInstalled;
>> +    static private final AtomicBoolean listenerInstalled = new
>> AtomicBoolean(false);
>>
>> -    public void lifecycleEvent(LifecycleEvent event) {
>> +    public void lifecycleEvent(final LifecycleEvent event) {
>>          if (Lifecycle.BEFORE_INIT_EVENT.equals(event.getType()) &&
>> StandardServer.class.isInstance(event.getSource())) {
>>              installServerInfo();
>>          }
>>
>> -        // only install once
>> -        if (listenerInstalled ||
>> !Lifecycle.AFTER_INIT_EVENT.equals(event.getType())) return;
>> -        if (!(event.getSource() instanceof StandardServer)) return;
>> +        synchronized (listenerInstalled) {
>>
>> -        try {
>> -            final StandardServer server = (StandardServer)
>> event.getSource();
>> -
>> -            TomcatHelper.setServer(server);
>> -
>> -            final Properties properties = new Properties();
>> -            System.getProperties().setProperty("openejb.embedder.source",
>> getClass().getSimpleName());
>> -            properties.setProperty("openejb.embedder.source",
>> getClass().getSimpleName());
>> +            // only install once
>> +            if (listenerInstalled.get() ||
>> !Lifecycle.AFTER_INIT_EVENT.equals(event.getType())) return;
>> +            if (!(event.getSource() instanceof StandardServer)) return;
>>
>> +            try {
>> +                final StandardServer server = (StandardServer)
>> event.getSource();
>>
>> -            // if SystemInstance is already initialized, then return
>> -            if (SystemInstance.isInitialized()) {
>> -                return;
>> -            }
>> -
>> -            // set the openejb.loader property to tomcat-system
>> -            properties.setProperty("openejb.loader", "tomcat-system");
>> -
>> -            // Get the value of catalina.home and set it to openejb.home
>> -            String catalinaHome = System.getProperty("catalina.home");
>> -            properties.setProperty("openejb.home", catalinaHome);
>> +                TomcatHelper.setServer(server);
>>
>> -            //Sets system property for openejb.home
>> -            System.setProperty("openejb.home", catalinaHome);
>> +                final Properties properties = new Properties();
>> +
>> System.getProperties().setProperty("openejb.embedder.source",
>> getClass().getSimpleName());
>> +                properties.setProperty("openejb.embedder.source",
>> getClass().getSimpleName());
>>
>> -            //get the value of catalina.base and set it to openejb.base
>> -            String catalinaBase = System.getProperty("catalina.base");
>> -            properties.setProperty("openejb.base", catalinaBase);
>>
>> -            //Sets system property for openejb.base
>> -            System.setProperty("openejb.base", catalinaBase);
>> +                // if SystemInstance is already initialized, then return
>> +                if (SystemInstance.isInitialized()) {
>> +                    return;
>> +                }
>>
>> +                // set the openejb.loader property to tomcat-system
>> +                properties.setProperty("openejb.loader",
>> "tomcat-system");
>>
>> -            // System.setProperty("tomcat.version", "x.y.z.w");
>> -            // System.setProperty("tomcat.built", "mmm dd yyyy
>> hh:mm:ss");
>> -            // set the System properties, tomcat.version, tomcat.built
>> -            try {
>> -                ClassLoader classLoader =
>> ServerListener.class.getClassLoader();
>> -                Properties tomcatServerInfo =
>>
>> IO.readProperties(classLoader.getResourceAsStream("org/apache/catalina/util/ServerInfo.properties"),
>> new Properties());
>> +                // Get the value of catalina.home and set it to
>> openejb.home
>> +                final String catalinaHome =
>> System.getProperty("catalina.home");
>> +                properties.setProperty("openejb.home", catalinaHome);
>> +
>> +                //Sets system property for openejb.home
>> +                System.setProperty("openejb.home", catalinaHome);
>> +
>> +                //get the value of catalina.base and set it to
>> openejb.base
>> +                final String catalinaBase =
>> System.getProperty("catalina.base");
>> +                properties.setProperty("openejb.base", catalinaBase);
>> +
>> +                //Sets system property for openejb.base
>> +                System.setProperty("openejb.base", catalinaBase);
>> +
>> +
>> +                // System.setProperty("tomcat.version", "x.y.z.w");
>> +                // System.setProperty("tomcat.built", "mmm dd yyyy
>> hh:mm:ss");
>> +                // set the System properties, tomcat.version,
>> tomcat.built
>> +                try {
>> +                    final ClassLoader classLoader =
>> ServerListener.class.getClassLoader();
>> +                    final Properties tomcatServerInfo =
>>
>> IO.readProperties(classLoader.getResourceAsStream("org/apache/catalina/util/ServerInfo.properties"),
>> new Properties());
>> +
>> +                    String serverNumber =
>> tomcatServerInfo.getProperty("server.number");
>> +                    if (serverNumber == null) {
>> +                        // Tomcat5 only has server.info
>> +                        final String serverInfo =
>> tomcatServerInfo.getProperty("server.info");
>> +                        if (serverInfo != null) {
>> +                            final int slash = serverInfo.indexOf('/');
>> +                            serverNumber = serverInfo.substring(slash +
>> 1);
>> +                        }
>> +                    }
>> +                    if (serverNumber != null) {
>> +                        System.setProperty("tomcat.version",
>> serverNumber);
>> +                    }
>>
>> -                String serverNumber =
>> tomcatServerInfo.getProperty("server.number");
>> -                if (serverNumber == null) {
>> -                    // Tomcat5 only has server.info
>> -                    String serverInfo =
>> tomcatServerInfo.getProperty("server.info");
>> -                    if (serverInfo != null) {
>> -                        int slash = serverInfo.indexOf('/');
>> -                        serverNumber = serverInfo.substring(slash + 1);
>> +                    final String serverBuilt =
>> tomcatServerInfo.getProperty("server.built");
>> +                    if (serverBuilt != null) {
>> +                        System.setProperty("tomcat.built", serverBuilt);
>>                      }
>> -                }
>> -                if (serverNumber != null) {
>> -                    System.setProperty("tomcat.version", serverNumber);
>> +                } catch (final Throwable e) {
>> +                    // no-op
>>                  }
>>
>> -                String serverBuilt =
>> tomcatServerInfo.getProperty("server.built");
>> -                if (serverBuilt != null) {
>> -                    System.setProperty("tomcat.built", serverBuilt);
>> +                // manage additional libraries
>> +                try {
>> +                    ProvisioningUtil.addAdditionalLibraries();
>> +                } catch (final IOException e) {
>> +                    // ignored
>>                  }
>> -            } catch (Throwable e) {
>> -                // no-op
>> -            }
>>
>> -            // manage additional libraries
>> -            try {
>> -                ProvisioningUtil.addAdditionalLibraries();
>> -            } catch (IOException e) {
>> -                // ignored
>> -            }
>> +                final TomcatLoader loader = new TomcatLoader();
>> +                loader.init(properties);
>>
>> -            TomcatLoader loader = new TomcatLoader();
>> -            loader.init(properties);
>> -
>> -            listenerInstalled = true;
>> -        } catch (Exception e) {
>> -            LOGGER.log(Level.SEVERE, "TomEE Listener can't start
>> OpenEJB", e);
>> -            // e.printStackTrace(System.err);
>> +                listenerInstalled.set(true);
>> +            } catch (final Exception e) {
>> +                LOGGER.log(Level.SEVERE, "TomEE Listener can't start
>> OpenEJB", e);
>> +                // e.printStackTrace(System.err);
>> +            }
>>          }
>>      }
>>
>> -    private void installServerInfo() {
>> +    private synchronized void installServerInfo() {
>>          if
>> (SystemInstance.get().getOptions().get("tomee.keep-server-info",
>> false)) {
>>              return;
>>          }
>> @@ -146,7 +150,7 @@ public class ServerListener implements L
>>              final String version = OpenEjbVersion.get().getVersion();
>>              final String tomeeVersion = (Integer.parseInt("" +
>> version.charAt(0)) - 3) + version.substring(1, version.length());
>>              field.set(null, value.substring(0, slash) + " (TomEE)" +
>> value.substring(slash) + " (" + tomeeVersion + ")");
>> -        } catch (Exception e) {
>> +        } catch (final Exception e) {
>>              // no-op
>>          } finally {
>>              if (field != null) {
>>
>
>
>
> --
> Jean-Louis
>



-- 
Jean-Louis

Reply via email to