/** {@inheritDoc} */
  @Override
  public void init(FilterConfig config) throws ServletException {
    // rewrap datasources in GlobalNamingResources with ResourceLink in
    // context.xml
    System.setProperty(
        Parameters.PARAMETER_SYSTEM_PREFIX + Parameter.REWRAP_DATASOURCES.getCode(),
        Boolean.TRUE.toString());

    if (Parameters.getParameter(Parameter.SQL_TRANSFORM_PATTERN) == null) {
      // regexp pour agréger les paramètres bindés dans les critères
      // de requêtes SQL tels que "in (?, ?, ?, ?)" et ainsi pour éviter
      // que ces requêtes ayant un nombre variable de paramètres soient
      // considérées comme différentes ;
      // de fait cela agrège aussi les values des inserts
      System.setProperty(
          Parameters.PARAMETER_SYSTEM_PREFIX + Parameter.SQL_TRANSFORM_PATTERN.getCode(),
          "\\([\\?, ]+\\)");
    }

    if (Parameters.getParameter(Parameter.DISPLAYED_COUNTERS) == null) {
      // disable jsp counter to fix
      // https://github.com/javamelody/liferay-javamelody/issues/5,
      // the jsp counter does not display anything anyway.
      // In consequence, jsf, job, ejb, jpa, spring, guice are also
      // disabled.
      System.setProperty(
          Parameters.PARAMETER_SYSTEM_PREFIX + Parameter.DISPLAYED_COUNTERS.getCode(),
          "http,sql,error,log");
    }

    super.init(config);

    LOG.debug("JavaMelody is monitoring Liferay");
  }
예제 #2
0
 public void actionPerformed(ActionEvent e) {
   String defaultHost = Parameters.getParameter("telnet.defaultHost", "localhost");
   String hostname = JOptionPane.showInputDialog(Edit.getFrame(), "Hostname:", defaultHost);
   if (hostname != null) {
     Edit.openFile("telnet://" + hostname);
   }
 }
예제 #3
0
 static Map<String, DataSource> getJndiDataSources() throws NamingException {
   final Map<String, DataSource> dataSources = new LinkedHashMap<String, DataSource>(2);
   final String datasourcesParameter = Parameters.getParameter(Parameter.DATASOURCES);
   if (datasourcesParameter == null) {
     dataSources.putAll(getJndiDataSourcesAt("java:comp/env/jdbc"));
     // pour jboss sans jboss-env.xml ou sans resource-ref dans web.xml :
     dataSources.putAll(getJndiDataSourcesAt("java:/jdbc"));
     // pour JavaEE 6 :
     // (voir par exemple
     // http://smokeandice.blogspot.com/2009/12/datasourcedefinition-hidden-gem-from.html)
     dataSources.putAll(getJndiDataSourcesAt("java:global/jdbc"));
     // pour WebLogic 10 et WebSphere 7, cf issue 68
     dataSources.putAll(getJndiDataSourcesAt("jdbc"));
   } else if (datasourcesParameter.trim().length() != 0) { // NOPMD
     final InitialContext initialContext = new InitialContext();
     for (final String datasource : datasourcesParameter.split(",")) {
       final String jndiName = datasource.trim();
       // ici, on n'ajoute pas java:/comp/env
       // et on suppose qu'il n'en faut pas ou que cela a été ajouté dans le paramétrage
       final DataSource dataSource = (DataSource) initialContext.lookup(jndiName);
       dataSources.put(jndiName, dataSource);
     }
     initialContext.close();
   }
   return Collections.unmodifiableMap(dataSources);
 }
예제 #4
0
  boolean stop() {
    boolean ok;
    try {
      JdbcWrapperHelper.rebindInitialDataSources(servletContext);

      // si jboss, glassfish ou weblogic avec datasource, on désencapsule aussi les objets wrappés
      final Map<String, DataSource> jndiDataSources = JdbcWrapperHelper.getJndiDataSources();
      final boolean rewrapDataSources =
          Boolean.parseBoolean(Parameters.getParameter(Parameter.REWRAP_DATASOURCES));
      for (final Map.Entry<String, DataSource> entry : jndiDataSources.entrySet()) {
        final String jndiName = entry.getKey();
        final DataSource dataSource = entry.getValue();
        if (rewrapDataSources || isServerNeedsRewrap(jndiName)) {
          unwrapDataSource(jndiName, dataSource);
        }
      }

      JdbcWrapperHelper.clearProxyCache();

      ok = true;
    } catch (final Throwable t) { // NOPMD
      // ça n'a pas marché, tant pis
      LOG.debug("rebinding initial datasources failed, skipping", t);
      ok = false;
    }
    return ok;
  }
예제 #5
0
 /**
  * @return Nombre de jours avant qu'un fichier de graphique JRobin (extension .rrd) qui n'est plus
  *     utilisé, soit considéré comme obsolète et soit supprimé automatiquement, à minuit (90 par
  *     défaut, soit 3 mois).
  */
 private static int getObsoleteGraphsDays() {
   final String param = Parameters.getParameter(Parameter.OBSOLETE_GRAPHS_DAYS);
   if (param != null) {
     // lance une NumberFormatException si ce n'est pas un nombre
     final int result = Integer.parseInt(param);
     if (result <= 0) {
       throw new IllegalStateException(
           "The parameter obsolete-graphs-days should be > 0 (90 recommended)");
     }
     return result;
   }
   return DEFAULT_OBSOLETE_GRAPHS_DAYS;
 }
 public void actionPerformed(ActionEvent e) {
   ETextArea target = (ETextArea) getFocusedComponent();
   try {
     Document document = target.getDocument();
     int position = target.getCaretPosition();
     String whitespace = target.getIndentationOfLineAtOffset(position);
     String prefix = "{\n" + whitespace + Parameters.getParameter("indent.string");
     String suffix = "\n" + whitespace + "}";
     document.insertString(position, prefix + suffix, null);
     target.setCaretPosition(position + prefix.length());
   } catch (BadLocationException ex) {
     ex.printStackTrace();
   }
 }
예제 #7
0
 boolean rebindDataSources() {
   boolean ok;
   // on cherche une datasource avec InitialContext pour afficher nom et version bdd + nom et
   // version driver jdbc
   // (le nom de la dataSource recherchée dans JNDI est du genre jdbc/Xxx qui est le nom standard
   // d'une DataSource)
   try {
     final boolean rewrapDataSources =
         Boolean.parseBoolean(Parameters.getParameter(Parameter.REWRAP_DATASOURCES));
     if (rewrapDataSources) {
       // on annule le rebinding éventuellement fait avant par SessionListener
       // si rewrap-datasources est défini dans le filter
       JdbcWrapperHelper.rebindInitialDataSources(servletContext);
     }
     final Map<String, DataSource> jndiDataSources = JdbcWrapperHelper.getJndiDataSources();
     LOG.debug("datasources found in JNDI: " + jndiDataSources.keySet());
     for (final Map.Entry<String, DataSource> entry : jndiDataSources.entrySet()) {
       final String jndiName = entry.getKey();
       final DataSource dataSource = entry.getValue();
       if (rewrapDataSources || isServerNeedsRewrap(jndiName)) {
         rewrapDataSource(jndiName, dataSource);
       } else if (!isProxyAlready(dataSource)) {
         // si dataSource est déjà un proxy, il ne faut pas faire un proxy d'un proxy ni un
         // rebinding
         final DataSource dataSourceProxy = createDataSourceProxy(jndiName, dataSource);
         JdbcWrapperHelper.rebindDataSource(servletContext, jndiName, dataSource, dataSourceProxy);
         LOG.debug(
             "datasource rebinded: "
                 + jndiName
                 + " from class "
                 + dataSource.getClass().getName()
                 + " to class "
                 + dataSourceProxy.getClass().getName());
       }
     }
     ok = true;
   } catch (final Throwable t) { // NOPMD
     // ça n'a pas marché, tant pis
     LOG.debug("rebinding datasources failed, skipping", t);
     ok = false;
   }
   return ok;
 }
예제 #8
0
  @Override
  public int parseArguments(Parameters params) throws CmdLineException {
    String macString = params.getParameter(0);
    String[] macStringArray = null;

    if (macString.matches("[0-9a-fA-F]{12}"))
      /*
       * When entering this clause our MAC address is a hexadecimal string
       * with 12 digit. Hence we have no delimiter to split. So we simply
       * split after each two characters.
       */
      macStringArray = macString.split("(?<=\\G.{2})");
    else if (macString.matches("([0-9a-fA-F]{1,2}[^0-9a-fA-F]+){5}[0-9a-fA-F]{1,2}"))
      /*
       * When entering this clause our MAC address is a in the form
       * XX#XX#XX#XX#XX#XX where XX is a hexadecimal string with one or two
       * digits and # is a delimiter which contains no hexadecimal digit.
       * In most cases # is a dash (-), a colon (:) or a space ( ).
       * We just need to split by our delimiter.
       */
      macStringArray = macString.split("[^0-9a-fA-F]+");
    else throw new CmdLineException(owner, Messages.ILLEGAL_MAC_ADDRESS, macString);

    byte[] mac = new byte[6];
    for (int i = 0; i < 6; i++)
      /*
       * Yes, we really need to parse a short here... ;-)
       * Explanation: All six MAC address parts are unsigned bytes in
       * hexadecimal representation. They lay between 0x00 and 0xff
       * respectively 0 and 255. The Java data type byte is signed. It
       * lays between -128 and 127. Therefore we need to "convert" the
       * upper half of our unsigned values to negative to obtain the
       * correct bit representation (think of the two's complement). This
       * is done best by parsing short (or int or long) and casting to
       * byte.
       */
      mac[i] = (byte) Short.parseShort(macStringArray[i], 16);

    setter.asFieldSetter().addValue(mac);
    return 1;
  }
예제 #9
0
 @Override
 public int parseArguments(Parameters params) throws CmdLineException {
   setter.addValue(params.getParameter(0));
   return 1;
 }
예제 #10
0
 private static boolean isMonitoringDisabled() {
   // on doit réévaluer ici le paramètre, car au départ le servletContext
   // n'est pas forcément défini si c'est un driver jdbc sans dataSource
   return Boolean.parseBoolean(Parameters.getParameter(Parameter.DISABLED));
 }