You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2014/04/25 08:18:30 UTC

[31/46] FlexPMD Donation from Adobe Systems Inc

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/files/impl/AbstractFlexFileTest.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/files/impl/AbstractFlexFileTest.java b/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/files/impl/AbstractFlexFileTest.java
new file mode 100644
index 0000000..7987d77
--- /dev/null
+++ b/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/files/impl/AbstractFlexFileTest.java
@@ -0,0 +1,157 @@
+/*
+ * 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 com.adobe.ac.pmd.files.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.FileNotFoundException;
+import java.net.URISyntaxException;
+import java.util.HashSet;
+import java.util.Set;
+
+import junit.framework.Assert;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.adobe.ac.pmd.FlexPmdTestBase;
+import com.adobe.ac.pmd.files.IAs3File;
+import com.adobe.ac.pmd.files.IMxmlFile;
+
+public class AbstractFlexFileTest extends FlexPmdTestBase
+{
+   private IAs3File  as3;
+   private IMxmlFile mainMxml;
+   private IMxmlFile mxml;
+
+   @Before
+   public void init() throws FileNotFoundException,
+                     URISyntaxException
+   {
+      as3 = ( IAs3File ) getTestFiles().get( "AbstractRowData.as" );
+      mainMxml = ( IMxmlFile ) getTestFiles().get( "Main.mxml" );
+      mxml = ( IMxmlFile ) getTestFiles().get( "com.adobe.ac.ncss.mxml.IterationsList.mxml" );
+   }
+
+   @Test
+   public void testContains()
+   {
+      assertTrue( as3.contains( "logger",
+                                buildSetContaining( 0 ) ) );
+      assertFalse( as3.contains( "loggerr",
+                                 buildSetContaining( 0 ) ) );
+      assertFalse( as3.contains( "addEventListener",
+                                 buildSetContaining( 109,
+                                                     114 ) ) );
+   }
+
+   @Test
+   public void testEquals()
+   {
+      Assert.assertTrue( as3.equals( as3 ) );
+      Assert.assertFalse( mxml.equals( as3 ) );
+      Assert.assertFalse( as3.equals( mxml ) );
+   }
+
+   @Test
+   public void testFlexPMD152()
+   {
+      Assert.assertEquals( "com.something",
+                           AbstractFlexFile.computePackageName( "C:/somePath/ProjectName/com/something/Test.mxml",
+                                                                "C:/somePath/ProjectName",
+                                                                "Test.mxml",
+                                                                "/" ) );
+
+      Assert.assertEquals( "com.something",
+                           AbstractFlexFile.computePackageName( "C:/somePath/ProjectName/com/something/Test.mxml",
+                                                                "C:/somePath/ProjectName/",
+                                                                "Test.mxml",
+                                                                "/" ) );
+   }
+
+   @Test
+   public void testGetClassName()
+   {
+      assertEquals( "AbstractRowData.as",
+                    as3.getClassName() );
+      assertEquals( "IterationsList.mxml",
+                    mxml.getClassName() );
+   }
+
+   @Test
+   public void testGetFileName()
+   {
+      Assert.assertEquals( "AbstractRowData.as",
+                           as3.getFilename() );
+   }
+
+   @Test
+   public void testGetFilePath()
+   {
+      assertNotNull( as3.getFilePath() );
+      assertNotNull( mxml.getFilePath() );
+      assertNotNull( mainMxml.getFilePath() );
+   }
+
+   @Test
+   public void testGetPackageName()
+   {
+      assertEquals( "",
+                    as3.getPackageName() );
+      assertEquals( "com.adobe.ac.ncss.mxml",
+                    mxml.getPackageName() );
+   }
+
+   @Test
+   public void testGetPath()
+   {
+      assertEquals( "AbstractRowData.as",
+                    as3.getFullyQualifiedName() );
+      assertEquals( "com.adobe.ac.ncss.mxml.IterationsList.mxml",
+                    mxml.getFullyQualifiedName() );
+   }
+
+   @Test
+   public void testIsMainApplication()
+   {
+      assertFalse( as3.isMainApplication() );
+      assertFalse( mxml.isMainApplication() );
+      assertTrue( mainMxml.isMainApplication() );
+   }
+
+   @Test
+   public void testIsMxml()
+   {
+      assertFalse( as3.isMxml() );
+      assertTrue( mxml.isMxml() );
+   }
+
+   private Set< Integer > buildSetContaining( final int... lines )
+   {
+
+      final HashSet< Integer > hashSet = new HashSet< Integer >();
+
+      for ( final int line : lines )
+      {
+         hashSet.add( line );
+      }
+      return hashSet;
+   }
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/files/impl/As3FileTest.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/files/impl/As3FileTest.java b/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/files/impl/As3FileTest.java
new file mode 100644
index 0000000..b15e413
--- /dev/null
+++ b/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/files/impl/As3FileTest.java
@@ -0,0 +1,64 @@
+/*
+ * 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 com.adobe.ac.pmd.files.impl;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.adobe.ac.pmd.FlexPmdTestBase;
+import com.adobe.ac.pmd.files.IAs3File;
+
+public class As3FileTest extends FlexPmdTestBase
+{
+   private IAs3File data;
+
+   @Before
+   public void setUp()
+   {
+      data = ( IAs3File ) getTestFiles().get( "AbstractRowData.as" );
+   }
+
+   @Test
+   public void testGetCommentClosingTag()
+   {
+      assertEquals( "*/",
+                    data.getCommentClosingTag() );
+   }
+
+   @Test
+   public void testGetCommentOpeningTag()
+   {
+      assertEquals( "/*",
+                    data.getCommentOpeningTag() );
+   }
+
+   @Test
+   public void testGetLineAt()
+   {
+      assertEquals( "      public const logger : ILogger;",
+                    data.getLineAt( 45 ) );
+   }
+
+   @Test
+   public void testGetSingleLineComment()
+   {
+      assertEquals( "//",
+                    data.getSingleLineComment() );
+   }
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/files/impl/FileUtilsTest.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/files/impl/FileUtilsTest.java b/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/files/impl/FileUtilsTest.java
new file mode 100644
index 0000000..b507a86
--- /dev/null
+++ b/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/files/impl/FileUtilsTest.java
@@ -0,0 +1,115 @@
+/*
+ * 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 com.adobe.ac.pmd.files.impl;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.Assert;
+import net.sourceforge.pmd.PMDException;
+
+import org.junit.Test;
+
+import com.adobe.ac.pmd.FlexPmdTestBase;
+import com.adobe.ac.pmd.files.IFlexFile;
+
+public class FileUtilsTest extends FlexPmdTestBase
+{
+   @Test
+   public void testComputeFilesList() throws PMDException
+   {
+      Map< String, IFlexFile > files;
+      files = FileUtils.computeFilesList( getTestDirectory(),
+                                          null,
+                                          "",
+                                          null );
+
+      Assert.assertEquals( 105,
+                           files.size() );
+
+      final List< String > excludePatterns = new ArrayList< String >();
+      excludePatterns.add( "bug" );
+      files = FileUtils.computeFilesList( getTestDirectory(),
+                                          null,
+                                          "",
+                                          excludePatterns );
+
+      Assert.assertEquals( 88,
+                           files.size() );
+   }
+
+   @Test
+   public void testComputeFilesListWithEmptySourceFolder() throws PMDException
+   {
+      final Map< String, IFlexFile > files = FileUtils.computeFilesList( new File( getTestDirectory().getAbsolutePath()
+                                                                               + "/" + "empty/emptyFolder" ),
+                                                                         null,
+                                                                         "",
+                                                                         null );
+
+      Assert.assertEquals( 1,
+                           files.size() );
+   }
+
+   @Test
+   public void testComputeFilesListWithoutSource()
+   {
+      try
+      {
+         FileUtils.computeFilesList( null,
+                                     null,
+                                     "",
+                                     null );
+         Assert.fail();
+      }
+      catch ( final PMDException e )
+      {
+         Assert.assertEquals( "sourceDirectory is not specified",
+                              e.getMessage() );
+      }
+   }
+
+   @Test
+   public void testComputeFilesListWithSourceFile() throws PMDException
+   {
+      final Map< String, IFlexFile > files = FileUtils.computeFilesList( new File( getTestFiles().get( "AbstractRowData.as" )
+                                                                                                 .getFilePath() ),
+                                                                         null,
+                                                                         "",
+                                                                         null );
+
+      Assert.assertEquals( 1,
+                           files.size() );
+   }
+
+   @Test
+   public void testComputeFilesListWithSourceList() throws PMDException
+   {
+      final List< File > sourceList = new ArrayList< File >();
+
+      sourceList.add( getTestDirectory() );
+      final Map< String, IFlexFile > files = FileUtils.computeFilesList( null,
+                                                                         sourceList,
+                                                                         "",
+                                                                         null );
+
+      Assert.assertEquals( 105,
+                           files.size() );
+   }
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/files/impl/FlexFileFactoryTest.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/files/impl/FlexFileFactoryTest.java b/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/files/impl/FlexFileFactoryTest.java
new file mode 100644
index 0000000..842f3e6
--- /dev/null
+++ b/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/files/impl/FlexFileFactoryTest.java
@@ -0,0 +1,63 @@
+/*
+ * 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 com.adobe.ac.pmd.files.impl;
+
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+
+import org.junit.Test;
+
+import com.adobe.ac.pmd.FlexPmdTestBase;
+import com.adobe.ac.pmd.files.IAs3File;
+import com.adobe.ac.pmd.files.IFlexFile;
+import com.adobe.ac.pmd.files.IMxmlFile;
+
+public class FlexFileFactoryTest extends FlexPmdTestBase
+{
+   @Test
+   public void testCreate()
+   {
+      assertTrue( "",
+                  create( new File( getTestFiles().get( "AbstractRowData.as" ).getFilePath() ),
+                          new File( "" ) ) instanceof IAs3File );
+      assertTrue( "",
+                  create( new File( getTestFiles().get( "Main.mxml" ).getFilePath() ),
+                          new File( "" ) ) instanceof IMxmlFile );
+      assertTrue( "",
+                  create( new File( getTestFiles().get( "com.adobe.ac.ncss.mxml.IterationsList.mxml" )
+                                                  .getFilePath() ),
+                          new File( "" ) ) instanceof IMxmlFile );
+   }
+
+   private IFlexFile create( final File sourceFile,
+                             final File sourceDirectory )
+   {
+      IFlexFile file;
+
+      if ( sourceFile.getName().endsWith( ".as" ) )
+      {
+         file = new As3File( sourceFile, sourceDirectory );
+      }
+      else
+      {
+         file = new MxmlFile( sourceFile, sourceDirectory );
+      }
+
+      return file;
+   }
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/files/impl/MxmlFileTest.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/files/impl/MxmlFileTest.java b/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/files/impl/MxmlFileTest.java
new file mode 100644
index 0000000..e51bc29
--- /dev/null
+++ b/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/files/impl/MxmlFileTest.java
@@ -0,0 +1,50 @@
+/*
+ * 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 com.adobe.ac.pmd.files.impl;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.adobe.ac.pmd.FlexPmdTestBase;
+import com.adobe.ac.pmd.files.IMxmlFile;
+
+public class MxmlFileTest extends FlexPmdTestBase
+{
+   private IMxmlFile data;
+
+   @Before
+   public void setUp()
+   {
+      data = ( IMxmlFile ) getTestFiles().get( "Main.mxml" );
+   }
+
+   @Test
+   public void testGetActualScriptBlock()
+   {
+      assertEquals( Integer.valueOf( 4 ),
+                    Integer.valueOf( data.getActualScriptBlock().length ) );
+   }
+
+   @Test
+   public void testGetSingleLineComment()
+   {
+      assertEquals( "<!--",
+                    data.getSingleLineComment() );
+   }
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-files/src/test/java/net/sourceforge/pmd/PMDExceptionTest.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-files/src/test/java/net/sourceforge/pmd/PMDExceptionTest.java b/FlexPMD/flex-pmd-files/src/test/java/net/sourceforge/pmd/PMDExceptionTest.java
new file mode 100644
index 0000000..550d982
--- /dev/null
+++ b/FlexPMD/flex-pmd-files/src/test/java/net/sourceforge/pmd/PMDExceptionTest.java
@@ -0,0 +1,61 @@
+/*
+ * 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 net.sourceforge.pmd;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+public class PMDExceptionTest
+{
+   @SuppressWarnings("deprecation")
+   @Test
+   public void testGetReason()
+   {
+      final Exception reason = new Exception();
+      final PMDException exception = new PMDException( "message", reason );
+
+      assertEquals( reason,
+                    exception.getReason() );
+   }
+
+   @Test
+   public void testPMDExceptionString()
+   {
+      assertEquals( "message",
+                    new PMDException( "message" ).getMessage() );
+   }
+
+   @Test
+   public void testPMDExceptionStringException()
+   {
+      final PMDException exception = new PMDException( "message", new Exception() );
+
+      assertEquals( "message",
+                    exception.getMessage() );
+   }
+
+   @Test
+   public void testSetSeverity()
+   {
+      final PMDException exception = new PMDException( "message" );
+
+      exception.setSeverity( 1 );
+      assertEquals( Integer.valueOf( 1 ),
+                    Integer.valueOf( exception.getSeverity() ) );
+   }
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-flex-lib/.checkstyle
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex-lib/.checkstyle b/FlexPMD/flex-pmd-flex-lib/.checkstyle
new file mode 100644
index 0000000..a34f4bb
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex-lib/.checkstyle
@@ -0,0 +1,24 @@
+<?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.
+
+-->
+<fileset-config file-format-version="1.2.0" simple-config="true">
+    <fileset name="all" enabled="true" check-config-name="Ac" local="false">
+        <file-match-pattern match-pattern="." include-pattern="true"/>
+    </fileset>
+</fileset-config>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-flex-lib/.externalToolBuilders/org.maven.ide.eclipse.maven2Builder.launch
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex-lib/.externalToolBuilders/org.maven.ide.eclipse.maven2Builder.launch b/FlexPMD/flex-pmd-flex-lib/.externalToolBuilders/org.maven.ide.eclipse.maven2Builder.launch
new file mode 100644
index 0000000..850ec2f
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex-lib/.externalToolBuilders/org.maven.ide.eclipse.maven2Builder.launch
@@ -0,0 +1,25 @@
+<?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.
+
+-->
+<launchConfiguration type="org.maven.ide.eclipse.Maven2BuilderConfigurationType">
+<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_BUILDER_ENABLED" value="false"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_DISABLED_BUILDER" value="org.maven.ide.eclipse.maven2Builder"/>
+<mapAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS"/>
+<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
+</launchConfiguration>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-flex-lib/pom.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex-lib/pom.xml b/FlexPMD/flex-pmd-flex-lib/pom.xml
new file mode 100644
index 0000000..618220b
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex-lib/pom.xml
@@ -0,0 +1,207 @@
+<!--
+
+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.
+
+-->
+<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">
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>com.adobe.ac</groupId>
+	<artifactId>flex-pmd-flex-lib</artifactId>
+	<packaging>swc</packaging>
+	<name>Adobe Flex PMD Flex lib</name>
+	<description>Adobe Flex PMD Flex library containing shared classes</description>
+
+	<parent>
+		<artifactId>flex-pmd-flex-parent</artifactId>
+		<groupId>com.adobe.ac</groupId>
+		<version>1.3-SNAPSHOT</version>
+		<relativePath>../flex-pmd-flex-parent/pom.xml</relativePath>
+	</parent>
+
+	<dependencies>
+
+		<dependency>
+			<groupId>${project.groupId}</groupId>
+			<artifactId>flex-pmd-ruleset</artifactId>
+			<version>${project.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>com.adobe.cairngorm</groupId>
+			<artifactId>event-source</artifactId>
+			<version>${event-source.version}</version>
+			<type>swc</type>
+			<scope>test</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>com.adobe.cairngorm</groupId>
+			<artifactId>cairngorm</artifactId>
+			<version>${cairngorm.version}</version>
+			<type>swc</type>
+		</dependency>
+
+		<!-- flex sdk dependencies -->
+
+		<dependency>
+			<groupId>com.adobe.flex.framework</groupId>
+			<artifactId>flex-framework</artifactId>
+			<version>${flex.version}</version>
+			<type>pom</type>
+			<exclusions>
+				<exclusion>
+					<groupId>com.adobe.flex.framework</groupId>
+					<artifactId>playerglobal</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+
+		<dependency>
+			<groupId>com.adobe.flex.framework</groupId>
+			<artifactId>playerglobal</artifactId>
+			<version>${flash-player.version}-${flex.version}</version>
+			<type>swc</type>
+		</dependency>
+
+		<dependency>
+			<groupId>com.adobe.flex.framework</groupId>
+			<artifactId>datavisualization</artifactId>
+			<version>${flex.version}</version>
+			<type>swc</type>
+		</dependency>
+
+		<dependency>
+			<groupId>com.adobe.flex.framework</groupId>
+			<artifactId>datavisualization</artifactId>
+			<version>${flex.version}</version>
+			<type>rb.swc</type>
+			<classifier>en_US</classifier>
+		</dependency>
+
+		<!-- flexmojos Unit testing support -->
+		<dependency>
+			<groupId>org.sonatype.flexmojos</groupId>
+			<artifactId>flexmojos-unittest-support</artifactId>
+			<version>${flex-mojos-plugin.version}</version>
+			<type>swc</type>
+			<scope>test</scope>
+			<exclusions>
+				<exclusion>
+					<groupId>com.adobe.flex.framework</groupId>
+					<artifactId>playerglobal</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+
+	</dependencies>
+
+	<build>
+		<sourceDirectory>src/main/flex</sourceDirectory>
+		<testSourceDirectory>src/test/flex</testSourceDirectory>
+		<resources>
+			<resource>
+				<directory>src/main/resources</directory>
+			</resource>
+		</resources>
+		<testResources>
+			<testResource>
+				<directory>src/test/resources</directory>
+			</testResource>
+		</testResources>
+
+		<plugins>
+
+			<plugin>
+				<artifactId>maven-antrun-plugin</artifactId>
+				<version>${ant-run-plugin.version}</version>
+				<executions>
+					<execution>
+						<id>copy-version-as</id>
+						<phase>process-resources</phase>
+						<configuration>
+							<tasks>
+								<tstamp>
+									<format property="last.updated.date" pattern="yyyy-MM-dd" />
+									<format property="last.updated.time" pattern="HH:mm:ss" />
+								</tstamp>
+								<echo message="Generating Version.as..." />
+								<echo file="${basedir}/src/main/flex/Version.as" append="false" message="package" />
+								<echo file="${basedir}/src/main/flex/Version.as" append="true" message="{" />
+								<echo file="${basedir}/src/main/flex/Version.as" append="true" message=" public class Version" />
+								<echo file="${basedir}/src/main/flex/Version.as" append="true" message=" {" />
+								<echo file="${basedir}/src/main/flex/Version.as" append="true" message=" public static const BUILD_NUMBER : String = '${project.version}';" />
+								<echo file="${basedir}/src/main/flex/Version.as" append="true" message=" public static const BUILD_TIME : String = '${last.updated.time}';" />
+								<echo file="${basedir}/src/main/flex/Version.as" append="true" message=" public static const BUILD_DATE : String = '${last.updated.date}';" />
+								<echo file="${basedir}/src/main/flex/Version.as" append="true" message=" }" />
+								<echo file="${basedir}/src/main/flex/Version.as" append="true" message="}" />
+							</tasks>
+						</configuration>
+						<goals>
+							<goal>run</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+
+			<plugin>
+				<groupId>org.sonatype.flexmojos</groupId>
+				<artifactId>flexmojos-maven-plugin</artifactId>
+				<version>${flex-mojos-plugin.version}</version>
+				<extensions>true</extensions>
+				<configuration>
+					<targetPlayer>${flash-player.version}.0.0</targetPlayer>
+				</configuration>
+			</plugin>
+
+		</plugins>
+	</build>
+
+	<repositories>
+		<repository>
+			<id>flexmojos-repository</id>
+			<url>http://repository.sonatype.org/content/groups/public/</url>
+		</repository>
+	</repositories>
+	<pluginRepositories>
+		<pluginRepository>
+			<id>flexmojos-repository</id>
+			<url>http://repository.sonatype.org/content/groups/public/</url>
+		</pluginRepository>
+	</pluginRepositories>
+
+	<reporting>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-surefire-report-plugin</artifactId>
+				<configuration>
+					<reportsDirectory>surefire-reports</reportsDirectory>
+				</configuration>
+			</plugin>
+
+			<plugin>
+				<groupId>${project.groupId}</groupId>
+				<artifactId>flex-pmd-maven-plugin</artifactId>
+				<version>${project.parent.version}</version>
+				<configuration>
+					<failOnError>true</failOnError>
+				</configuration>
+			</plugin>
+
+		</plugins>
+	</reporting>
+
+</project>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/model/IDomainModel.as
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/model/IDomainModel.as b/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/model/IDomainModel.as
new file mode 100644
index 0000000..beb6097
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/model/IDomainModel.as
@@ -0,0 +1,26 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 com.adobe.ac.model
+{
+
+   public interface IDomainModel
+   {
+      // Marker interface for Domain Model
+   }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/model/IPresentationModel.as
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/model/IPresentationModel.as b/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/model/IPresentationModel.as
new file mode 100644
index 0000000..f0ee7c2
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/model/IPresentationModel.as
@@ -0,0 +1,26 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 com.adobe.ac.model
+{
+
+   public interface IPresentationModel
+   {
+      // Marker interface for Presentation Model
+   }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/api/IGetRulesetContent.as
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/api/IGetRulesetContent.as b/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/api/IGetRulesetContent.as
new file mode 100644
index 0000000..1e2d5d1
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/api/IGetRulesetContent.as
@@ -0,0 +1,28 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 com.adobe.ac.pmd.api
+{
+   import com.adobe.ac.pmd.model.Ruleset;
+
+   public interface IGetRulesetContent
+   {
+      function getRulesetContent( ref : String ) : void;
+      function onReceiveRulesetContent( ruleset : Ruleset ) : void;
+   }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/control/events/GetRulesetContentEvent.as
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/control/events/GetRulesetContentEvent.as b/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/control/events/GetRulesetContentEvent.as
new file mode 100644
index 0000000..e9f20c1
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/control/events/GetRulesetContentEvent.as
@@ -0,0 +1,56 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 com.adobe.ac.pmd.control.events
+{
+   import com.adobe.ac.pmd.api.IGetRulesetContent;
+   import com.adobe.cairngorm.control.CairngormEvent;
+
+   import flash.events.Event;
+
+   public class GetRulesetContentEvent extends CairngormEvent
+   {
+      public static const EVENT_NAME : String = "ruleset.getContent";
+
+      private var _invoker : IGetRulesetContent;
+      private var _ref : String;
+
+      public function GetRulesetContentEvent( invoker : IGetRulesetContent, ref : String )
+      {
+         super( EVENT_NAME );
+
+         _ref = ref;
+         _invoker = invoker;
+      }
+
+      public function get invoker() : IGetRulesetContent
+      {
+         return _invoker;
+      }
+
+      public function get ref() : String
+      {
+         return _ref;
+      }
+
+      override public function clone() : Event
+      {
+         return new GetRulesetContentEvent( _invoker, _ref );
+      }
+   }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/model/Property.as
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/model/Property.as b/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/model/Property.as
new file mode 100644
index 0000000..9e2f4d3
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/model/Property.as
@@ -0,0 +1,35 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 com.adobe.ac.pmd.model
+{
+   import com.adobe.ac.model.IDomainModel;
+
+   import mx.collections.ArrayCollection;
+   import mx.collections.ListCollectionView;
+
+   public class Property implements IDomainModel
+   {
+      public var name : String;
+      public var value : String;
+
+      public function Property()
+      {
+      }
+   }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/model/RootRuleset.as
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/model/RootRuleset.as b/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/model/RootRuleset.as
new file mode 100644
index 0000000..cb41e7a
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/model/RootRuleset.as
@@ -0,0 +1,103 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 com.adobe.ac.pmd.model
+{
+	import com.adobe.ac.model.IDomainModel;
+	
+	import flash.events.Event;
+	import flash.events.EventDispatcher;
+	
+	import mx.collections.ArrayCollection;
+	import mx.collections.ListCollectionView;
+	import mx.events.CollectionEvent;
+
+	public class RootRuleset  extends EventDispatcher implements IDomainModel
+	{
+		public static const CUSTOM_RULESET_NAME : String = "Parameterized rules";
+		private static const RULES_CHANGED : String = "rulesChange";
+		public var name : String;
+		public var description : String;
+		[Bindable]
+		public var rulesets : ListCollectionView = new ArrayCollection();
+		
+		private var _customRuleset : Ruleset = null;
+		
+		public function RootRuleset()
+		{
+			rulesets.addEventListener(CollectionEvent.COLLECTION_CHANGE, handleRulesetChange);
+		}
+		
+
+		public function get customRuleset():Ruleset
+		{
+			return _customRuleset;
+		}
+
+		public function addRegExpBasedRule( rule : Rule ) : void
+		{
+			if ( ! customRuleset )
+			{
+				_customRuleset = new Ruleset();
+				_customRuleset.name = CUSTOM_RULESET_NAME;
+				rulesets.addItem( _customRuleset );
+			}
+			
+			rule.ruleset = _customRuleset;
+			_customRuleset.rules.addItem( rule );
+			rulesChanged();
+		}
+		
+		private function handleRulesetChange( event : CollectionEvent ) : void
+		{
+			for each ( var ruleset : Ruleset in rulesets )
+			{
+				ruleset.rules.addEventListener(CollectionEvent.COLLECTION_CHANGE, handleRulesChange);
+			}
+		}
+		
+		private function handleRulesChange( event : CollectionEvent ) : void
+		{
+			rulesChanged();
+		}
+		
+		public function rulesChanged() : void
+		{
+			dispatchEvent( new Event( RULES_CHANGED ) );			
+		}
+		
+		[Bindable("rulesChange")]
+		public function get rulesNb() : Number
+		{
+			var result : Number = 0;
+			
+			for each ( var ruleset : Ruleset in rulesets )
+			{
+				for each ( var rule : Rule in ruleset.rules )
+				{
+					if ( !rule.deleted )
+					{
+						result++;
+					}
+				}
+			}
+			
+			return result;
+		}
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/model/Rule.as
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/model/Rule.as b/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/model/Rule.as
new file mode 100644
index 0000000..9fe5509
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/model/Rule.as
@@ -0,0 +1,92 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 com.adobe.ac.pmd.model
+{
+   import com.adobe.ac.model.IDomainModel;
+   
+   import flash.events.Event;
+   import flash.events.EventDispatcher;
+   
+   import mx.collections.ArrayCollection;
+   import mx.collections.ListCollectionView;
+
+   public class Rule extends EventDispatcher implements IDomainModel // NO PMD BindableClass TooManyFields
+   {
+	   public static const NAME_CHANGE : String = "nameChange";
+	   public static const DELETED_CHANGE : String = "deleteChange";
+
+      public var since : String;
+	  [Bindable]
+      public var message : String;
+	  [Bindable]
+      public var examples : String;
+	  [Bindable]
+      public var description : String;
+	  [Bindable]
+      public var properties : ListCollectionView = new ArrayCollection();
+	  [Bindable]
+      public var priority : ViolationPriority;
+	  [Bindable]
+      public var ruleset : Ruleset;
+
+	  private var _deleted : Boolean = false;
+      private var _name : String;
+
+      public function Rule()
+      {
+      	ruleset = new Ruleset();
+      }
+
+      [Bindable( "nameChange" )]
+      public function get name() : String
+      {
+         return _name;
+      }
+
+      public function set name( value : String ) : void
+      {
+         _name = value;
+         dispatchEvent( new Event( NAME_CHANGE ) );
+      }
+
+      [Bindable( "nameChange" )]
+      public function get shortName() : String
+      {
+         return name.substr( name.lastIndexOf( "." ) + 1 );
+      }
+	  
+	  [Bindable( "deleteChange" )]
+	  public function get deleted() : Boolean
+	  {
+		  return _deleted;
+	  }
+
+	  public function remove() : void
+	  {
+		  _deleted = true;
+		  dispatchEvent( new Event( DELETED_CHANGE ) );
+	  }
+
+	  public function unDelete() : void
+	  {
+		  _deleted = false;
+		  dispatchEvent( new Event( DELETED_CHANGE ) );
+	  }
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/model/Ruleset.as
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/model/Ruleset.as b/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/model/Ruleset.as
new file mode 100644
index 0000000..45afcfa
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/model/Ruleset.as
@@ -0,0 +1,63 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 com.adobe.ac.pmd.model
+{
+    import com.adobe.ac.model.IDomainModel;
+    import com.adobe.ac.pmd.api.IGetRulesetContent;
+    import com.adobe.ac.pmd.control.events.GetRulesetContentEvent;
+    import com.adobe.ac.pmd.model.events.RulesetReceivedEvent;
+
+    import flash.events.EventDispatcher;
+
+    import mx.collections.ArrayCollection;
+    import mx.collections.ListCollectionView;
+    import mx.events.CollectionEvent;
+
+    [Event( name="rulesetReceived",type="com.adobe.ac.pmd.model.events.RulesetReceivedEvent" )]
+    public class Ruleset extends EventDispatcher implements IDomainModel, IGetRulesetContent // NO PMD BindableClass
+    {
+        private static const RULES_CHANGED : String = "rulesChange";
+		[Bindable]
+        public var isRef : Boolean;
+		[Bindable]
+        public var name : String;
+		[Bindable]
+        public var description : String;
+		[Bindable]
+        public var rules : ListCollectionView = new ArrayCollection();
+
+        public function Ruleset()
+        {
+        }
+
+        public function getRulesetContent( ref : String ) : void
+        {
+            new GetRulesetContentEvent( this, ref ).dispatch();
+        }
+
+        public function onReceiveRulesetContent( ruleset : Ruleset ) : void
+        {
+            name = ruleset.name;
+            rules = ruleset.rules;
+            isRef = ruleset.isRef;
+            description = ruleset.description;
+            dispatchEvent( new RulesetReceivedEvent( this ) );
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/model/ViolationPriority.as
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/model/ViolationPriority.as b/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/model/ViolationPriority.as
new file mode 100644
index 0000000..61fa224
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/model/ViolationPriority.as
@@ -0,0 +1,82 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 com.adobe.ac.pmd.model
+{
+   import flash.events.Event;
+   import flash.events.EventDispatcher;
+
+   public class ViolationPriority extends EventDispatcher
+   {
+      public static const ERROR : ViolationPriority = new ViolationPriority( 1, "Error" );
+      public static const WARNING : ViolationPriority = new ViolationPriority( 3, "Warning" );
+      public static const INFO : ViolationPriority = new ViolationPriority( 5, "Info" );
+
+      private var _level : int;
+      private var _name : String;
+
+      public function ViolationPriority( level : int, name : String )
+      {
+         _level = level;
+         _name = name;
+      }
+
+      public static function create( level : int ) : ViolationPriority
+      {
+         var result : ViolationPriority = null;
+		 
+         switch( level )
+         {
+            case 1:
+				result = ERROR;
+				break;
+            case 3:
+				result = WARNING;
+				break;
+            case 5:
+				result = INFO;
+				break;
+            default:
+               throw new Error( "Unknown violation level (" + level + ")" );
+         }
+		 return result;
+      }
+
+      public static function get values() : Array
+      {
+         return[ ERROR, WARNING, INFO ];
+      }
+
+      [Bindable( "unused" )]
+      public function get level() : int
+      {
+         return _level;
+      }
+
+      [Bindable( "initialized" )]
+      public function get name() : String
+      {
+         return _name;
+      }
+
+      override public function toString() : String
+      {
+         return _name;
+      }
+   }
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/model/events/RulesetReceivedEvent.as
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/model/events/RulesetReceivedEvent.as b/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/model/events/RulesetReceivedEvent.as
new file mode 100644
index 0000000..aeff332
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/model/events/RulesetReceivedEvent.as
@@ -0,0 +1,48 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 com.adobe.ac.pmd.model.events
+{
+   import com.adobe.ac.pmd.model.Ruleset;
+
+   import flash.events.Event;
+
+   public class RulesetReceivedEvent extends Event
+   {
+      public static const EVENT_NAME : String = "rulesetReceived";
+
+      private var _ruleset : Ruleset;
+
+      public function RulesetReceivedEvent( ruleset : Ruleset )
+      {
+         super( EVENT_NAME );
+
+         _ruleset = ruleset;
+      }
+
+      public function get ruleset() : Ruleset
+      {
+         return _ruleset;
+      }
+
+      override public function clone() : Event
+      {
+         return new RulesetReceivedEvent( ruleset );
+      }
+   }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/view/Title.mxml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/view/Title.mxml b/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/view/Title.mxml
new file mode 100644
index 0000000..caea7ad
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/view/Title.mxml
@@ -0,0 +1,36 @@
+<?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.
+
+-->
+<mx:Label xmlns:mx="http://www.adobe.com/2006/mxml"
+    styleName="h1"
+    >
+
+    <mx:filters>
+
+        <flash.filters:DropShadowFilter xmlns:flash.filters="flash.filters.*"
+            color="0xffffff"
+            angle="90"
+            blurX="0"
+            blurY="0"
+            distance="1"
+            />
+
+    </mx:filters>
+
+</mx:Label>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-flex-lib/src/main/resources/assets/cancelledIcon.png
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex-lib/src/main/resources/assets/cancelledIcon.png b/FlexPMD/flex-pmd-flex-lib/src/main/resources/assets/cancelledIcon.png
new file mode 100644
index 0000000..9bca099
Binary files /dev/null and b/FlexPMD/flex-pmd-flex-lib/src/main/resources/assets/cancelledIcon.png differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-flex-lib/src/main/resources/assets/export.png
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex-lib/src/main/resources/assets/export.png b/FlexPMD/flex-pmd-flex-lib/src/main/resources/assets/export.png
new file mode 100644
index 0000000..fd4bfcd
Binary files /dev/null and b/FlexPMD/flex-pmd-flex-lib/src/main/resources/assets/export.png differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-flex-lib/src/main/resources/assets/icon_tool_trash.png
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex-lib/src/main/resources/assets/icon_tool_trash.png b/FlexPMD/flex-pmd-flex-lib/src/main/resources/assets/icon_tool_trash.png
new file mode 100644
index 0000000..b4b470d
Binary files /dev/null and b/FlexPMD/flex-pmd-flex-lib/src/main/resources/assets/icon_tool_trash.png differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-flex-lib/src/main/resources/assets/icon_tool_trash2.png
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex-lib/src/main/resources/assets/icon_tool_trash2.png b/FlexPMD/flex-pmd-flex-lib/src/main/resources/assets/icon_tool_trash2.png
new file mode 100644
index 0000000..282a037
Binary files /dev/null and b/FlexPMD/flex-pmd-flex-lib/src/main/resources/assets/icon_tool_trash2.png differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-flex-lib/src/main/resources/assets/todoLogo.png
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex-lib/src/main/resources/assets/todoLogo.png b/FlexPMD/flex-pmd-flex-lib/src/main/resources/assets/todoLogo.png
new file mode 100644
index 0000000..a314b8d
Binary files /dev/null and b/FlexPMD/flex-pmd-flex-lib/src/main/resources/assets/todoLogo.png differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-flex-lib/src/main/resources/assets/todoLogo_big.png
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex-lib/src/main/resources/assets/todoLogo_big.png b/FlexPMD/flex-pmd-flex-lib/src/main/resources/assets/todoLogo_big.png
new file mode 100644
index 0000000..bb89f68
Binary files /dev/null and b/FlexPMD/flex-pmd-flex-lib/src/main/resources/assets/todoLogo_big.png differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-flex-lib/src/test/flex/AllTests.as
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex-lib/src/test/flex/AllTests.as b/FlexPMD/flex-pmd-flex-lib/src/test/flex/AllTests.as
new file mode 100644
index 0000000..681ca74
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex-lib/src/test/flex/AllTests.as
@@ -0,0 +1,36 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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
+{
+   import com.adobe.ac.pmd.model.RuleTest;
+   import com.adobe.ac.pmd.model.RulesetTest;
+   
+   import flexunit.framework.TestSuite;
+
+   public class AllTests extends TestSuite
+   {
+      public function AllTests()
+      {
+         super();
+
+         addTestSuite( RulesetTest );
+         addTestSuite( RuleTest );
+      }
+   }
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-flex-lib/src/test/flex/com/adobe/ac/pmd/model/RuleTest.as
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex-lib/src/test/flex/com/adobe/ac/pmd/model/RuleTest.as b/FlexPMD/flex-pmd-flex-lib/src/test/flex/com/adobe/ac/pmd/model/RuleTest.as
new file mode 100644
index 0000000..d4d4a6b
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex-lib/src/test/flex/com/adobe/ac/pmd/model/RuleTest.as
@@ -0,0 +1,61 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 com.adobe.ac.pmd.model
+{
+   import flexunit.framework.EventfulTestCase;
+
+   public class RuleTest extends EventfulTestCase
+   {
+      private var rule : Rule;
+      
+      public function RuleTest()
+      {
+      }
+
+      override public function setUp():void
+      {
+         rule = new Rule();
+      }
+      
+      public function testName() : void
+      {
+         listenForEvent( rule, Rule.NAME_CHANGE );
+         
+         rule.name = "com.adobe.ac.MyRule";
+         
+         assertEvents();
+         assertEquals( "MyRule", rule.shortName );
+         
+         rule.name = "MyRule";
+         assertEquals( "MyRule", rule.shortName );         
+      }
+      
+      public function testRemove() : void
+      {
+         var parentRuleset : Ruleset = new Ruleset();
+         
+         rule.ruleset = parentRuleset;
+         parentRuleset.rules.addItem( rule );
+         rule.remove();
+         
+		 assertEquals( 1, parentRuleset.rules.length );
+		 assertTrue( Rule( parentRuleset.rules.getItemAt( 0 ) ).deleted );
+      }
+   }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-flex-lib/src/test/flex/com/adobe/ac/pmd/model/RulesetTest.as
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex-lib/src/test/flex/com/adobe/ac/pmd/model/RulesetTest.as b/FlexPMD/flex-pmd-flex-lib/src/test/flex/com/adobe/ac/pmd/model/RulesetTest.as
new file mode 100644
index 0000000..f70d229
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex-lib/src/test/flex/com/adobe/ac/pmd/model/RulesetTest.as
@@ -0,0 +1,72 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 com.adobe.ac.pmd.model
+{
+   import com.adobe.ac.pmd.control.events.GetRulesetContentEvent;
+   import com.adobe.ac.pmd.model.events.RulesetReceivedEvent;
+   
+   import flexunit.framework.CairngormEventSource;
+   import flexunit.framework.EventfulTestCase;
+   
+   import mx.collections.ArrayCollection;
+
+   public class RulesetTest extends EventfulTestCase
+   {
+      private var model : Ruleset;
+      
+      public function RulesetTest()
+      {
+      }
+
+      override public function setUp():void
+      {
+         model = new Ruleset();
+      }
+      
+      public function testGetRulesetContent() : void
+      {
+         listenForEvent( CairngormEventSource.instance, GetRulesetContentEvent.EVENT_NAME );
+         
+         model.getRulesetContent( "ref" );
+         
+         assertEvents();
+         assertEquals( model, GetRulesetContentEvent( lastDispatchedExpectedEvent ).invoker );
+         assertEquals( "ref", GetRulesetContentEvent( lastDispatchedExpectedEvent ).ref );
+      }
+      
+      public function testOnReceiveRulesetContent() : void
+      {
+         var receivedRuleset : Ruleset = new Ruleset();
+         
+         listenForEvent( model, RulesetReceivedEvent.EVENT_NAME );
+         
+         receivedRuleset.name = "name";
+         receivedRuleset.description = "description";
+         receivedRuleset.rules = new ArrayCollection();
+         
+         model.onReceiveRulesetContent( receivedRuleset );
+         
+         assertEvents();
+         assertEquals( model, RulesetReceivedEvent( lastDispatchedExpectedEvent ).ruleset );
+         assertEquals( receivedRuleset.name, model.name );
+         assertEquals( receivedRuleset.description, model.description );
+         assertEquals( receivedRuleset.rules, model.rules );
+      }
+   }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-flex-parent/pom.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex-parent/pom.xml b/FlexPMD/flex-pmd-flex-parent/pom.xml
new file mode 100644
index 0000000..6ff8aca
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex-parent/pom.xml
@@ -0,0 +1,125 @@
+<!--
+
+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.
+
+-->
+<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">
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>com.adobe.ac</groupId>
+	<artifactId>flex-pmd-flex-parent</artifactId>
+	<packaging>pom</packaging>
+	<name>Adobe Flex PMD Flex Parent</name>
+
+	<parent>
+		<groupId>com.adobe.ac</groupId>
+		<artifactId>flex-pmd</artifactId>
+		<version>1.3-SNAPSHOT</version>
+		<relativePath>../flex-pmd-parent/pom.xml</relativePath>
+	</parent>
+
+	<properties>
+
+		<flex.version>3.2.0.3958</flex.version>
+		<flash-player.version>10</flash-player.version>
+		<flexunit.version>0.9</flexunit.version>
+		<event-source.version>1.1</event-source.version>
+		<flexunit-optional.version>0.85</flexunit-optional.version>
+		<event-source.version>1.1</event-source.version>
+		<cairngorm.version>2.2.1</cairngorm.version>
+		<flexunit-theme.version>1.0</flexunit-theme.version>
+
+	</properties>
+
+	<modules>
+		<module>../flex-pmd-ruleset-creator</module>
+		<module>../flex-pmd-violations-viewer</module>
+		<module>../flex-pmd-flex-lib</module>
+		<module>../flexunit-theme</module>
+	</modules>
+	
+	<build>
+		<sourceDirectory>.</sourceDirectory>
+		<plugins>
+		
+			<plugin>
+				<groupId>${project.groupId}</groupId>
+				<artifactId>flex-pmd-maven-plugin</artifactId>
+				<version>${project.version}</version>
+				<executions>
+					<execution>
+						<phase>package</phase>
+						<goals>
+							<goal>check</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+
+			<plugin>
+				<groupId>${project.groupId}</groupId>
+				<artifactId>flex-pmd-cpd-maven-plugin</artifactId>
+				<version>${project.version}</version>
+				<executions>
+					<execution>
+						<phase>package</phase>
+						<goals>
+							<goal>check</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+
+			<plugin>
+				<groupId>${project.groupId}</groupId>
+				<artifactId>flex-pmd-metrics-maven-plugin</artifactId>
+				<version>${project.version}</version>
+				<executions>
+					<execution>
+						<phase>package</phase>
+						<goals>
+							<goal>check</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+			
+		</plugins>
+	</build>
+
+	<reporting>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-surefire-report-plugin</artifactId>
+				<version>2.4.3</version>
+				<configuration>
+					<reportsDirectory>surefire-reports</reportsDirectory>
+				</configuration>
+			</plugin>
+
+			<plugin>
+				<groupId>${project.groupId}</groupId>
+				<artifactId>flex-pmd-maven-plugin</artifactId>
+				<version>${project.parent.version}</version>
+				<configuration>
+					<failOnError>true</failOnError>
+				</configuration>
+			</plugin>
+
+		</plugins>
+	</reporting>
+
+</project>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-hybrid-parent/pom.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-hybrid-parent/pom.xml b/FlexPMD/flex-pmd-hybrid-parent/pom.xml
new file mode 100644
index 0000000..d41df0d
--- /dev/null
+++ b/FlexPMD/flex-pmd-hybrid-parent/pom.xml
@@ -0,0 +1,279 @@
+<!--
+
+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.
+
+-->
+<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">
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>com.adobe.ac</groupId>
+	<artifactId>flex-pmd-hybrid-parent</artifactId>
+	<packaging>pom</packaging>
+	<name>Adobe Flex PMD Flex/Java Parent</name>
+	
+	<parent>
+		<groupId>com.adobe.ac</groupId>
+		<artifactId>flex-pmd</artifactId>
+		<version>1.3-SNAPSHOT</version>
+		<relativePath>../flex-pmd-parent/pom.xml</relativePath>
+	</parent>
+	
+	<modules>
+		<module>../flex-pmd-automator-workflow</module>
+		<module>../flex-pmd-bundles</module>
+	</modules>
+
+	<build>
+
+		<pluginManagement>
+			<plugins>
+				<plugin>
+					<groupId>org.apache.maven.plugins</groupId>
+					<artifactId>maven-dependency-plugin</artifactId>
+					<version>${dependency.version}</version>
+				</plugin>
+				<plugin>
+					<groupId>org.apache.maven.plugins</groupId>
+					<artifactId>maven-assembly-plugin</artifactId>
+					<version>${assembly.version}</version>
+				</plugin>
+			</plugins>
+		</pluginManagement>
+
+		<plugins>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-release-plugin</artifactId>
+				<version>${release-plugin.version}</version>
+			</plugin>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<configuration>
+					<source>${compileSource}</source>
+					<target>${compileSource}</target>
+				</configuration>
+			</plugin>
+
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>cobertura-maven-plugin</artifactId>
+				<version>${cobertura.version}</version>
+				<configuration>
+					<format>xml</format>
+				</configuration>
+			</plugin>
+
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>findbugs-maven-plugin</artifactId>
+				<version>${findbugs.version}</version>
+				<configuration>
+					<xmlOutput>true</xmlOutput>
+				</configuration>
+			</plugin>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-checkstyle-plugin</artifactId>
+				<version>${checkstyle.version}</version>
+				<configuration>
+					<configLocation>checkstyle.xml</configLocation>
+				</configuration>
+			</plugin>
+
+			<plugin>
+				<groupId>com.google.code.maven-license-plugin</groupId>
+				<artifactId>maven-license-plugin</artifactId>
+				<version>${license.version}</version>
+				<configuration>
+					<header>../flex-pmd-parent/src/etc/header.txt</header>
+					<includes>
+						<include>**/src/**</include>
+						<include>**/test/**</include>
+					</includes>
+					<excludes>
+						<exclude>**/Simple.as</exclude>
+						<exclude>**/Empty.*</exclude>
+						<exclude>**/Version.as</exclude>
+						<exclude>**/FlexPMD60.as</exclude>
+						<exclude>**/header.txt</exclude>
+						<exclude>**/MainWithNoCopyright.mxml</exclude>
+					</excludes>
+					<aggregate>true</aggregate>
+					<properties>
+						<year>${project.inceptionYear}</year>
+						<company>${project.organization.name}</company>
+					</properties>
+					<mapping>
+						<mxml>XML_STYLE</mxml>
+						<xsl>XML_STYLE</xsl>
+						<as>JAVADOC_STYLE</as>
+					</mapping>
+				</configuration>
+				<executions>
+					<execution>
+						<phase>package</phase>
+						<goals>
+							<goal>check</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+
+	</build>
+
+	<repositories>
+		<repository>
+			<id>maven2-repository.dev.java.net</id>
+			<name>Java.net Repository for Maven</name>
+			<url>http://download.java.net/maven/2/</url>
+		</repository>
+		<repository>
+			<id>central</id>
+			<name>maven-central</name>
+			<url>http://repo1.maven.org/maven2</url>
+			<releases>
+				<enabled>true</enabled>
+			</releases>
+			<snapshots>
+				<enabled>false</enabled>
+			</snapshots>
+		</repository>
+		<repository>
+			<id>dist.codehaus.org</id>
+			<layout>legacy</layout>
+			<url>http://dist.codehaus.org/</url>
+		</repository>
+		<repository>
+			<id>apache</id>
+			<name>Apache repository</name>
+			<layout>legacy</layout>
+			<url>http://cvs.apache.org/repository/</url>
+		</repository>
+		<repository>
+			<id>flex-mojos</id>
+			<url>http://repository.sonatype.org/content/groups/flexgroup</url>
+			<snapshots>
+				<enabled>false</enabled>
+				<checksumPolicy>ignore</checksumPolicy>
+			</snapshots>
+			<releases>
+				<enabled>true</enabled>
+				<checksumPolicy>ignore</checksumPolicy>
+			</releases>
+		</repository>
+	</repositories>
+
+	<pluginRepositories>
+		<pluginRepository>
+			<id>dist.codehaus.org</id>
+			<releases>
+				<enabled>true</enabled>
+			</releases>
+			<snapshots>
+				<enabled>true</enabled>
+			</snapshots>
+			<name>XDoclet central repository on codehaus</name>
+			<url>http://dist.codehaus.org</url>
+			<layout>legacy</layout>
+		</pluginRepository>
+		<pluginRepository>
+			<id>repository.codehaus.org</id>
+			<releases>
+				<enabled>true</enabled>
+			</releases>
+			<snapshots>
+				<enabled>true</enabled>
+			</snapshots>
+			<name>Central repository on codehaus</name>
+			<url>http://repository.codehaus.org</url>
+		</pluginRepository>
+		<pluginRepository>
+			<id>mc-release</id>
+			<name>Local Maven repository of releases</name>
+			<url>http://mc-repo.googlecode.com/svn/maven2/releases</url>
+			<snapshots>
+				<enabled>false</enabled>
+			</snapshots>
+			<releases>
+				<enabled>true</enabled>
+			</releases>
+		</pluginRepository>
+	</pluginRepositories>
+
+	<reporting>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-site-plugin</artifactId>
+				<version>2.0-beta-5</version>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-project-info-reports-plugin</artifactId>
+				<version>2.1.1</version>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-surefire-report-plugin</artifactId>
+				<inherited>true</inherited>
+				<version>2.4.3</version>
+			</plugin>
+			<plugin>
+				<artifactId>maven-pmd-plugin</artifactId>
+				<version>${maven-pmd-plugin.version}</version>
+				<configuration>
+					<linkXref>true</linkXref>
+					<minimumTokens>100</minimumTokens>
+					<targetJdk>${compileSource}</targetJdk>
+					<rulesets>
+						<ruleset>pmd.xml</ruleset>
+					</rulesets>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>javancss-maven-plugin</artifactId>
+				<version>2.0-beta-2</version>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-javadoc-plugin</artifactId>
+				<version>2.5</version>
+			</plugin>
+		</plugins>
+	</reporting>
+	
+	<profiles>
+		<profile>
+			<id>hudson</id>
+			<distributionManagement>
+				<repository>
+					<id>txi_releases</id>
+					<url>http://txici.can.adobe.com:9999/nexus/content/repositories/txi</url>
+				</repository>
+				<snapshotRepository>
+					<id>txi_snapshot</id>
+					<url>http://txici.can.adobe.com:9999/nexus/content/repositories/txi_snapshots/</url>
+				</snapshotRepository>
+			</distributionManagement>
+		</profile>
+	</profiles>
+	
+</project>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-java-parent/pom.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java-parent/pom.xml b/FlexPMD/flex-pmd-java-parent/pom.xml
new file mode 100644
index 0000000..d5b80de
--- /dev/null
+++ b/FlexPMD/flex-pmd-java-parent/pom.xml
@@ -0,0 +1,56 @@
+<!--
+
+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.
+
+-->
+<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">
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>com.adobe.ac</groupId>
+	<artifactId>flex-pmd-java-parent</artifactId>
+	<packaging>pom</packaging>
+	<name>Adobe Flex PMD Java Parent</name>
+
+	<parent>
+		<groupId>com.adobe.ac</groupId>
+		<artifactId>flex-pmd</artifactId>
+		<version>1.3-SNAPSHOT</version>
+		<relativePath>../flex-pmd-parent/pom.xml</relativePath>
+	</parent>
+
+	<modules>
+		<module>../as3-parser</module>
+		<module>../as3-parser-api</module>
+		<module>../as3-plugin-utils</module>
+		<module>../flex-pmd-test-resources</module>
+		<module>../flex-pmd-ruleset</module>
+		<module>../flex-pmd-cpd</module>
+		<module>../flex-pmd-cpd-ant-task</module>
+		<module>../flex-pmd-cpd-maven-plugin</module>
+		<module>../flex-pmd-cpd-command-line</module>
+		<module>../flex-pmd-ruleset-api</module>
+		<module>../flex-pmd-core</module>
+		<module>../flex-pmd-ant-task</module>
+		<module>../flex-pmd-maven-plugin</module>
+		<module>../flex-pmd-command-line</module>
+		<module>../flex-pmd-command-line-api</module>
+		<module>../flex-pmd-files</module>
+		<module>../flex-pmd-metrics</module>
+		<module>../flex-pmd-metrics-command-line</module>
+		<module>../flex-pmd-metrics-ant-task</module>
+		<module>../flex-pmd-metrics-maven-plugin</module>
+	</modules>
+
+</project>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/b0fc5f17/FlexPMD/flex-pmd-java-parent/sonar.sh
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java-parent/sonar.sh b/FlexPMD/flex-pmd-java-parent/sonar.sh
new file mode 100644
index 0000000..00c42ff
--- /dev/null
+++ b/FlexPMD/flex-pmd-java-parent/sonar.sh
@@ -0,0 +1,17 @@
+mvn sonar:sonar -Dsonar.jdbc.driver=com.mysql.jdbc.Driver -Dsonar.jdbc.url="jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8" -Dsonar.jdbc.username=root -Dsonar.jdbc.password= -o
+
+# 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.
+