<?xml version="1.0" encoding="UTF-8"?>
<!--
  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.
-->
<ruleset name="pmd-eclipse">
    <description>PMD Plugin rules with custom Javascript.</description>
     <rule name="AvoidUnsafeStringConstructor"
                  message="Don't use new String(byte[]...) without an encoding."
                  class="org.apache.cxf.pmd.UnsafeStringConstructorRule">
              <description>
              Don't use new String(byte[]) or new String(byte[], int, int).
              </description>
                <priority>3</priority>

              <example>
        <![CDATA[
            public String doSomething() {
              return new String(byte[]);
            }
        ]]>
              </example>
            </rule>
</ruleset>
