You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by cd...@apache.org on 2014/08/27 00:43:32 UTC
[01/51] [partial] Refactored the PMD Maven build - Adjusted the
directory structure - Fixed a lot of compile problems - Fixed the maven setup
- Made PMD build with Flexmojos 7.1.0 and Apache Flex 4.13.0 - Fixed a few
UnitTests
Repository: flex-utilities
Updated Branches:
refs/heads/develop 1da832013 -> e43b7a87f
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-test-resources/src/main/resources/test/bug/FlexPMD233b.mxml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-test-resources/src/main/resources/test/bug/FlexPMD233b.mxml b/FlexPMD/flex-pmd-java/flex-pmd-test-resources/src/main/resources/test/bug/FlexPMD233b.mxml
new file mode 100644
index 0000000..a06fc62
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-test-resources/src/main/resources/test/bug/FlexPMD233b.mxml
@@ -0,0 +1,300 @@
+<?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.
+
+-->
+<!--- The default skin class for a Spark TitleWindow container.
+
+@see spark.skins.spark.TitleWindowCloseButtonSkin
+@see spark.components.TitleWindow
+
+@langversion 3.0
+@playerversion Flash 10
+@playerversion AIR 1.5
+@productversion Flex 4
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009"
+ xmlns:s="library://ns.adobe.com/flex/spark"
+ xmlns:fb="http://ns.adobe.com/flashbuilder/2009"
+ blendMode="normal"
+ mouseEnabled="false"
+ minWidth="76"
+ minHeight="76"
+ alpha.disabled="0.5"
+ alpha.disabledWithControlBar="0.5">
+
+ <fx:Metadata>
+ <![CDATA[
+ /**
+ * @copy spark.skins.spark.ApplicationSkin#hostComponent
+ */
+ [HostComponent("spark.components.TitleWindow")]
+ ]]>
+ </fx:Metadata>
+
+ <fx:Script fb:purpose="styling">
+ /* Define the skin elements that should not be colorized.
+ For panel, border and title background are skinned, but the content area and title text are not. */
+ static private const exclusions:Array = ["titleDisplay", "contentGroup"];// "background",
+
+ /**
+ * @private
+ */
+ override public function get colorizeExclusions():Array {return exclusions;}
+
+ /**
+ * @private
+ */
+ override protected function initializationComplete():void
+ {
+ useChromeColor = true;
+ super.initializationComplete();
+ }
+
+ /**
+ * @private
+ */
+ override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
+ {
+ if (getStyle("borderVisible") == true)
+ {
+ border.visible = true;
+ background.left = background.top = background.right = background.bottom = 1;
+ contents.left = contents.top = contents.right = contents.bottom = 1;
+ }
+ else
+ {
+ border.visible = false;
+ background.left = background.top = background.right = background.bottom = 0;
+ contents.left = contents.top = contents.right = contents.bottom = 0;
+ }
+
+ dropShadow.visible = getStyle("dropShadowVisible");
+
+ var cr:Number = getStyle("cornerRadius");
+ var withControls:Boolean =
+ (currentState == "disabledWithControlBar" ||
+ currentState == "normalWithControlBar" ||
+ currentState == "inactiveWithControlBar");
+
+ if (cornerRadius != cr)
+ {
+ cornerRadius = cr;
+
+ dropShadow.tlRadius = cornerRadius;
+ dropShadow.trRadius = cornerRadius;
+ dropShadow.blRadius = withControls ? cornerRadius : 0;
+ dropShadow.brRadius = withControls ? cornerRadius : 0;
+
+ setPartCornerRadii(topMaskRect, withControls);
+ setPartCornerRadii(border, withControls);
+ setPartCornerRadii(background, withControls);
+ }
+
+ if (bottomMaskRect) setPartCornerRadii(bottomMaskRect, withControls);
+
+ borderStroke.color = getStyle("borderColor");
+ borderStroke.alpha = getStyle("borderAlpha");
+ backgroundFill.color = getStyle("backgroundColor");
+ backgroundFill.alpha = getStyle("backgroundAlpha");
+
+ super.updateDisplayList(unscaledWidth, unscaledHeight);
+ }
+
+ /**
+ * @private
+ */
+ private function setPartCornerRadii(target:Rect, includeBottom:Boolean):void
+ {
+ target.topLeftRadiusX = cornerRadius;
+ target.topRightRadiusX = cornerRadius;
+ target.bottomLeftRadiusX = includeBottom ? cornerRadius : 0;
+ target.bottomRightRadiusX = includeBottom ? cornerRadius : 0;
+ }
+
+ private var cornerRadius:Number;
+ </fx:Script>
+
+ <s:states>
+ <s:State name="normal" />
+ <s:State name="inactive" stateGroups="inactiveGroup" />
+ <s:State name="disabled" />
+ <s:State name="normalWithControlBar" stateGroups="withControls" />
+ <s:State name="inactiveWithControlBar" stateGroups="withControls, inactiveGroup" />
+ <s:State name="disabledWithControlBar" stateGroups="withControls" />
+ </s:states>
+
+ <!--- drop shadow can't be hittable so it stays sibling of other graphics @private-->
+ <s:RectangularDropShadow id="dropShadow" blurX="20" blurY="20" alpha="0.32"
+ alpha.inactiveGroup="0.22" distance="11" distance.inactiveGroup="7"
+ angle="90" color="0x000000" left="0" top="0" right="0" bottom="0"/>
+
+ <!--- drop shadow can't be hittable so all other graphics go in this group -->
+ <s:Group left="0" right="0" top="0" bottom="0">
+
+ <!--- top group mask @private-->
+ <s:Group left="1" top="1" right="1" bottom="1" id="topGroupMask">
+ <!--- @private-->
+ <s:Rect id="topMaskRect" left="0" top="0" right="0" bottom="0">
+ <s:fill>
+ <s:SolidColor alpha="0"/>
+ </s:fill>
+ </s:Rect>
+ </s:Group>
+
+ <!--- bottom group mask @private-->
+ <s:Group left="1" top="1" right="1" bottom="1" id="bottomGroupMask"
+ includeIn="withControls">
+ <!--- @private-->
+ <s:Rect id="bottomMaskRect" left="0" top="0" right="0" bottom="0">
+ <s:fill>
+ <s:SolidColor alpha="0"/>
+ </s:fill>
+ </s:Rect>
+ </s:Group>
+
+ <!--- layer 1: border @private -->
+ <s:Rect id="border" left="0" right="0" top="0" bottom="0" radiusX="8">
+ <s:stroke>
+ <!--- Defines the TitleWindowSkin class's border stroke. The default value is 1. /////// HS ! ///////////-->
+ <s:SolidColorStroke id="borderStroke" weight="1" color="0xff0000"/>
+ </s:stroke>
+ </s:Rect>
+
+ <!-- layer 2: background fill -->
+ <!--- Defines the appearance of the TitleWindowSkin class's background. /////// HS ! /////////////////////-->
+ <s:Rect id="background" left="1" top="1" right="1" bottom="1" >
+ <s:fill>
+ <!--- Defines the TitleWindowSkin class's background fill. The default color is 0xFFFFFF. -->
+ <s:SolidColor id="backgroundFill" color="0x70a6d2" />
+ </s:fill>
+ </s:Rect>
+
+ <!-- layer 3: contents -->
+ <!--- Contains the vertical stack of title bar content and control bar. //////////////////////////-->
+ <s:Group left="1" right="1" top="1" bottom="1" id="contents" height="40">
+ <s:layout>
+ <s:VerticalLayout gap="0" horizontalAlign="justify" />
+ </s:layout>
+ <!--- @private -->
+ <s:Group id="topGroup" mask="{topGroupMask}">
+
+ <!--- layer 0: title bar fill @private /////////////////////////////////////////////////////-->
+ <s:Rect id="tbFill" left="0" right="0" top="0" bottom="1">
+ <s:fill>
+ <s:LinearGradient rotation="90">
+ <s:GradientEntry color="0x70a6d2"
+ /> <!--color.inactiveGroup="0xEAEAEA"-->
+ <s:GradientEntry color="0xdceefd"
+ /> <!--color.inactiveGroup="0xCECECE"-->
+ </s:LinearGradient>
+ </s:fill>
+ </s:Rect>
+
+ <!--- layer 1: title bar highlight @private ////////////////////////////////////////////////-->
+ <!--<s:Rect id="tbHilite" left="0" right="0" top="0" bottom="0">
+ <s:stroke>
+ <s:LinearGradientStroke rotation="90" weight="1">
+ <s:GradientEntry color="0x70a6d2" />
+ <s:GradientEntry color="0xFFFFFF" alpha="0.22"/>
+ </s:LinearGradientStroke>
+ </s:stroke>
+ <s:fill>
+ <s:LinearGradient rotation="90">
+ <s:GradientEntry color="0xa9d1f2" alpha="0.15" />
+ <s:GradientEntry color="0xa9d1f2" alpha="0.15" ratio="0.44"/>
+ <s:GradientEntry color="0xa9d1f2" alpha="0" ratio="0.4401"/>
+ </s:LinearGradient>
+ </s:fill>
+ </s:Rect>-->
+
+ <!--- layer 2: title bar divider @private ///////////////////////////////////////////////-->
+ <s:Rect id="tbDiv" left="0" right="0" height="1" bottom="0">
+ <s:fill>
+ <s:SolidColor color="0xffffff" alpha="0.75" />
+ </s:fill>
+ </s:Rect>
+
+ <!-- layer 3: text -->
+ <!--- @copy spark.components.Panel#titleDisplay ////////////////////////////////////////////-->
+ <s:Label id="titleDisplay" maxDisplayedLines="1"
+ left="9" right="36" top="1" bottom="0" minHeight="30"
+ verticalAlign="middle" fontWeight="bold" color="0x183d5b"/>
+
+ <!-- layer 4: moveArea -->
+ <!--- @copy spark.components.TitleWindow#moveArea -->
+ <s:Group id="moveArea" left="0" right="0" top="0" bottom="0" />
+
+ <!--- @copy spark.components.TitleWindow#closeButton -->
+ <s:Button id="closeButton" skinClass="spark.skins.spark.TitleWindowCloseButtonSkin"
+ width="15" height="15" right="7" top="7" />
+ </s:Group>
+
+ <!--
+ Note: setting the minimum size to 0 here so that changes to the host component's
+ size will not be thwarted by this skin part's minimum size. This is a compromise,
+ more about it here: http://bugs.adobe.com/jira/browse/SDK-21143
+ -->
+ <!--- @copy spark.components.SkinnableContainer#contentGroup -->
+ <s:Group id="contentGroup" width="100%" height="100%" minWidth="0" minHeight="0">
+ </s:Group>
+
+ <!--- @private ////////////////////////////////////////////////////////////////////////////-->
+ <s:Group id="bottomGroup" minWidth="0" minHeight="0"
+ includeIn="withControls">
+
+ <s:Group left="0" right="0" top="0" bottom="0" mask="{bottomGroupMask}">
+
+ <!-- layer 0: control bar divider line -->
+ <!--<s:Rect left="0" right="0" top="0" height="1" alpha="0.22">
+ <s:fill>
+ <s:SolidColor color="0xff0000" />
+ </s:fill>
+ </s:Rect>-->
+
+ <!-- layer 1: control bar highlight -->
+ <s:Rect left="0" right="0" top="1" bottom="0">
+ <s:stroke>
+ <s:LinearGradientStroke rotation="90" weight="1">
+ <s:GradientEntry color="0xFFFFFF" />
+ <s:GradientEntry color="0x70a6d2" />
+ </s:LinearGradientStroke>
+ </s:stroke>
+ </s:Rect>
+
+ <!-- layer 2: control bar fill -->
+ <s:Rect left="1" right="1" top="2" bottom="1">
+ <s:fill>
+ <s:LinearGradient rotation="90">
+ <s:GradientEntry color="0xdceefd"/> <!--0xEDEDED-->
+ <s:GradientEntry color="0x70a6d2"/>
+ </s:LinearGradient>
+ </s:fill>
+ </s:Rect>
+ </s:Group>
+
+ <!--- @copy spark.components.Panel#controlBarGroup -->
+ <s:Group id="controlBarGroup" left="0" right="0" top="1" bottom="1" minWidth="0" minHeight="0">
+ <s:layout>
+ <s:HorizontalLayout paddingLeft="10" paddingRight="10" paddingTop="7" paddingBottom="7" gap="10" />
+ </s:layout>
+ </s:Group>
+ </s:Group>
+ </s:Group>
+ </s:Group>
+</s:SparkSkin>
+
[40/51] [partial] Refactored the PMD Maven build - Adjusted the
directory structure - Fixed a lot of compile problems - Fixed the maven setup
- Made PMD build with Flexmojos 7.1.0 and Apache Flex 4.13.0 - Fixed a few
UnitTests
Posted by cd...@apache.org.
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/FlexPmdTestBase.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/FlexPmdTestBase.java b/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/FlexPmdTestBase.java
deleted file mode 100644
index c3e3b5d..0000000
--- a/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/FlexPmdTestBase.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * 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;
-
-import java.io.File;
-import java.util.Map;
-
-import com.adobe.ac.pmd.files.IFlexFile;
-
-/**
- * This is a base class for any FlexPMD rule test case.
- *
- * @author xagnetti
- */
-public class FlexPmdTestBase // NO_UCD
-{
- protected static final String BEGIN_LINE_NOT_CORRECT = "Begining line is not correct"; // NO_UCD
- protected static final String END_LINE_NOT_CORRECT = "Ending line is not correct"; // NO_UCD
- protected static final String VIOLATIONS_NUMBER_NOT_CORRECT = "Violations number is not correct"; // NO_UCD
-
- /**
- * Test files placeholder. The key is the qualified file name
- */
- private Map< String, IFlexFile > testFiles = ResourcesManagerTest.getInstance()
- .getTestFiles();
-
- /**
- *
- */
- protected FlexPmdTestBase()
- {
- }
-
- /**
- * @return
- */
- protected File getTestDirectory() // NO_UCD
- {
- return ResourcesManagerTest.getInstance().getTestRootDirectory();
- }
-
- /**
- * @return
- */
- protected final Map< String, IFlexFile > getTestFiles() // NO_UCD
- {
- return testFiles;
- }
-
- /**
- * @param testFilesToBeSet
- */
- protected final void setTestFiles( final Map< String, IFlexFile > testFilesToBeSet )
- {
- testFiles = testFilesToBeSet;
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/ResourcesManagerTest.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/ResourcesManagerTest.java b/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/ResourcesManagerTest.java
deleted file mode 100644
index 5986888..0000000
--- a/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/ResourcesManagerTest.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * 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;
-
-import java.io.File;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.logging.Logger;
-
-import net.sourceforge.pmd.PMDException;
-
-import com.adobe.ac.pmd.files.IFlexFile;
-import com.adobe.ac.pmd.files.impl.FileUtils;
-import com.adobe.ac.utils.StackTraceUtils;
-
-/**
- * Internal utility which finds out the test resources, and map them to their
- * qualified names.
- *
- * @author xagnetti
- */
-public final class ResourcesManagerTest
-{
- private static ResourcesManagerTest instance = null;
- private static final Logger LOGGER = Logger.getLogger( ResourcesManagerTest.class.getName() );
-
- /**
- * @return
- */
- public static synchronized ResourcesManagerTest getInstance() // NOPMD
- {
- if ( instance == null )
- {
- try
- {
- new LoggerUtils().loadConfiguration();
- instance = new ResourcesManagerTest( "/test" );
- }
- catch ( final URISyntaxException e )
- {
- LOGGER.warning( StackTraceUtils.print( e ) );
- }
- catch ( final PMDException e )
- {
- LOGGER.warning( StackTraceUtils.print( e ) );
- }
- }
- return instance;
- }
-
- private final Map< String, IFlexFile > testFiles;
- private final File testRootDirectory;
-
- private ResourcesManagerTest( final String directory ) throws URISyntaxException,
- PMDException
- {
- final URL resource = this.getClass().getResource( directory );
-
- if ( resource == null )
- {
- LOGGER.severe( directory
- + " folder is not found in the resource" );
- testRootDirectory = null;
- testFiles = new LinkedHashMap< String, IFlexFile >();
- }
- else
- {
- testRootDirectory = new File( resource.toURI().getPath() );
- testFiles = FileUtils.computeFilesList( testRootDirectory,
- null,
- "",
- null );
- }
- }
-
- /**
- * @return
- */
- public Map< String, IFlexFile > getTestFiles()
- {
- return testFiles;
- }
-
- protected File getTestRootDirectory()
- {
- return testRootDirectory;
- }
-}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/files/IAs3File.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/files/IAs3File.java b/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/files/IAs3File.java
deleted file mode 100644
index 4997eeb..0000000
--- a/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/files/IAs3File.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * 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;
-
-/**
- * @author xagnetti
- */
-public interface IAs3File extends IFlexFile
-{
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/files/IFlexFile.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/files/IFlexFile.java b/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/files/IFlexFile.java
deleted file mode 100644
index 21adb01..0000000
--- a/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/files/IFlexFile.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * 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;
-
-import java.util.Set;
-
-/**
- * @author xagnetti
- */
-public interface IFlexFile
-{
- /**
- * @param stringToLookup
- * @param linesToBeIgnored
- * @return
- */
- boolean contains( final String stringToLookup,
- final Set< Integer > linesToBeIgnored );
-
- /**
- * @return
- */
- String getClassName();
-
- /**
- * @return the token for comment closing
- */
- String getCommentClosingTag();
-
- /**
- * @return the token for comment opening
- */
- String getCommentOpeningTag();
-
- /**
- * @return java.io.File name
- */
- String getFilename();
-
- /**
- * @return java.io.File absolute path
- */
- String getFilePath();
-
- /**
- * @return
- */
- String getFullyQualifiedName();
-
- /**
- * @param lineIndex
- * @return
- */
- String getLineAt( int lineIndex );
-
- /**
- * @return
- */
- int getLinesNb();
-
- /**
- * @return
- */
- String getPackageName();
-
- /**
- * @return the token for one line comment
- */
- String getSingleLineComment();
-
- /**
- * @return true if the file is a main MXML file
- */
- boolean isMainApplication();
-
- /**
- * @return true if the file is a MXML file
- */
- boolean isMxml();
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/files/IMxmlFile.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/files/IMxmlFile.java b/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/files/IMxmlFile.java
deleted file mode 100644
index 1d98c98..0000000
--- a/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/files/IMxmlFile.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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;
-
-/**
- * @author xagnetti
- */
-public interface IMxmlFile extends IFlexFile
-{
- /**
- * @return
- */
- String[] getActualScriptBlock();
-
- /**
- * @return
- */
- int getBeginningScriptBlock();
-
- /**
- * @return
- */
- int getEndingScriptBlock();
-
- /**
- * @return
- */
- String[] getScriptBlock();
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/files/impl/AbstractFlexFile.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/files/impl/AbstractFlexFile.java b/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/files/impl/AbstractFlexFile.java
deleted file mode 100644
index 986f2a7..0000000
--- a/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/files/impl/AbstractFlexFile.java
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
- * 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.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-import java.util.logging.Logger;
-
-import org.apache.commons.lang.StringUtils;
-
-import com.adobe.ac.pmd.files.IFlexFile;
-import com.adobe.ac.utils.StackTraceUtils;
-
-/**
- * Abstract class representing a Flex File (either MXML or AS)
- *
- * @author xagnetti
- */
-abstract class AbstractFlexFile implements IFlexFile
-{
- private static final Logger LOGGER = Logger.getLogger( AbstractFlexFile.class.getName() );
-
- /**
- * @param filePath
- * @param rootPath
- * @param className
- * @param fileSeparator
- * @return
- */
- protected static String computePackageName( final String filePath,
- final CharSequence rootPath,
- final String className,
- final String fileSeparator )
- {
- String temporaryPackage;
-
- temporaryPackage = filePath.replace( className,
- "" ).replace( rootPath,
- "" ).replace( fileSeparator,
- "." );
- if ( temporaryPackage.endsWith( "." ) )
- {
- temporaryPackage = temporaryPackage.substring( 0,
- temporaryPackage.length() - 1 );
- }
- if ( temporaryPackage.length() > 0
- && temporaryPackage.charAt( 0 ) == '.' )
- {
- temporaryPackage = temporaryPackage.substring( 1,
- temporaryPackage.length() );
- }
- return temporaryPackage;
- }
-
- private static boolean doesCurrentLineContain( final String line,
- final String search )
- {
- return line.contains( search );
- }
-
- private final String className;
- private final File file;
- private final List< String > lines;
- private final String packageName;
-
- /**
- * @param underlyingFile
- * @param rootDirectory
- */
- protected AbstractFlexFile( final File underlyingFile,
- final File rootDirectory )
- {
- final String filePath = underlyingFile.getPath();
- final CharSequence rootPath = rootDirectory == null ? ""
- : rootDirectory.getPath();
-
- file = underlyingFile;
- className = underlyingFile.getName();
- packageName = computePackageName( filePath,
- rootPath,
- className,
- System.getProperty( "file.separator" ) );
- lines = new ArrayList< String >();
- try
- {
- String[] linesArray;
- linesArray = FileUtils.readLines( underlyingFile );
- for ( final String string : linesArray )
- {
- lines.add( string );
- }
- }
- catch ( final IOException e )
- {
- LOGGER.warning( StackTraceUtils.print( e ) );
- }
- }
-
- /*
- * (non-Javadoc)
- * @see com.adobe.ac.pmd.files.IFlexFile#contains(java.lang.String, int)
- */
- public final boolean contains( final String stringToLookup,
- final Set< Integer > linesToBeIgnored )
- {
- int lineIndex = 1;
- boolean found = false;
-
- for ( final String line : lines )
- {
- if ( doesCurrentLineContain( line,
- stringToLookup )
- && !linesToBeIgnored.contains( lineIndex ) )
- {
- found = true;
- break;
- }
- lineIndex++;
- }
- return found;
- }
-
- /*
- * (non-Javadoc)
- * @see java.lang.Object#equals(java.lang.Object)
- */
- @Override
- public final boolean equals( final Object obj )
- {
- return obj != null
- && obj instanceof AbstractFlexFile && hashCode() == ( ( AbstractFlexFile ) obj ).hashCode();
- }
-
- /*
- * (non-Javadoc)
- * @see com.adobe.ac.pmd.files.IFlexFile#getClassName()
- */
- public final String getClassName()
- {
- return className;
- }
-
- /*
- * (non-Javadoc)
- * @see com.adobe.ac.pmd.files.IFlexFile#getCommentClosingTag()
- */
- public abstract String getCommentClosingTag();
-
- /*
- * (non-Javadoc)
- * @see com.adobe.ac.pmd.files.IFlexFile#getCommentOpeningTag()
- */
- public abstract String getCommentOpeningTag();
-
- /*
- * (non-Javadoc)
- * @see com.adobe.ac.pmd.files.IFlexFile#getFilename()
- */
- public final String getFilename()
- {
- return file.getName();
- }
-
- /*
- * (non-Javadoc)
- * @see com.adobe.ac.pmd.files.IFlexFile#getFilePath()
- */
- public final String getFilePath()
- {
- return file.toURI().getPath();
- }
-
- /*
- * (non-Javadoc)
- * @see com.adobe.ac.pmd.files.IFlexFile#getFullyQualifiedName()
- */
- public final String getFullyQualifiedName()
- {
- return ( StringUtils.isEmpty( packageName ) ? ""
- : packageName
- + "." )
- + className;
- }
-
- /*
- * (non-Javadoc)
- * @see com.adobe.ac.pmd.files.IFlexFile#getLineAt(int)
- */
- public String getLineAt( final int lineIndex )
- {
- return lines.get( lineIndex - 1 );
- }
-
- /*
- * (non-Javadoc)
- * @see com.adobe.ac.pmd.files.IFlexFile#getLines()
- */
- public final List< String > getLines()
- {
- return lines;
- }
-
- /*
- * (non-Javadoc)
- * @see com.adobe.ac.pmd.files.IFlexFile#getLinesNb()
- */
- public int getLinesNb()
- {
- return lines.size();
- }
-
- /*
- * (non-Javadoc)
- * @see com.adobe.ac.pmd.files.IFlexFile#getPackageName()
- */
- public final String getPackageName()
- {
- return packageName;
- }
-
- /*
- * (non-Javadoc)
- * @see java.lang.Object#hashCode()
- */
- @Override
- public int hashCode()
- {
- return getFilePath().hashCode();
- }
-
- /*
- * (non-Javadoc)
- * @see com.adobe.ac.pmd.files.IFlexFile#isMainApplication()
- */
- public abstract boolean isMainApplication();
-
- /*
- * (non-Javadoc)
- * @see com.adobe.ac.pmd.files.IFlexFile#isMxml()
- */
- public abstract boolean isMxml();
-}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/files/impl/As3File.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/files/impl/As3File.java b/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/files/impl/As3File.java
deleted file mode 100644
index d4a3c93..0000000
--- a/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/files/impl/As3File.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * 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 com.adobe.ac.pmd.files.IAs3File;
-
-/**
- * @author xagnetti
- */
-class As3File extends AbstractFlexFile implements IAs3File
-{
- /**
- * @param file
- * @param rootDirectory
- */
- protected As3File( final File file,
- final File rootDirectory )
- {
- super( file, rootDirectory );
- }
-
- /*
- * (non-Javadoc)
- * @see com.adobe.ac.pmd.files.impl.AbstractFlexFile#getCommentClosingTag()
- */
- @Override
- public final String getCommentClosingTag()
- {
- return "*/";
- }
-
- /*
- * (non-Javadoc)
- * @see com.adobe.ac.pmd.files.impl.AbstractFlexFile#getCommentOpeningTag()
- */
- @Override
- public final String getCommentOpeningTag()
- {
- return "/*";
- }
-
- /*
- * (non-Javadoc)
- * @see com.adobe.ac.pmd.files.IFlexFile#getSingleLineComment()
- */
- public String getSingleLineComment()
- {
- return "//";
- }
-
- /*
- * (non-Javadoc)
- * @see com.adobe.ac.pmd.files.impl.AbstractFlexFile#isMainApplication()
- */
- @Override
- public final boolean isMainApplication()
- {
- return false;
- }
-
- /*
- * (non-Javadoc)
- * @see com.adobe.ac.pmd.files.impl.AbstractFlexFile#isMxml()
- */
- @Override
- public final boolean isMxml()
- {
- return false;
- }
-}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/files/impl/FileUtils.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/files/impl/FileUtils.java b/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/files/impl/FileUtils.java
deleted file mode 100644
index 12450f8..0000000
--- a/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/files/impl/FileUtils.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * 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.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-import net.sourceforge.pmd.PMDException;
-
-import com.adobe.ac.ncss.filters.FlexFilter;
-import com.adobe.ac.pmd.files.IFlexFile;
-
-/**
- * @author xagnetti
- */
-public final class FileUtils
-{
- /**
- * @param source
- * @param sourceList
- * @param packageToExclude
- * @param excludePatterns
- * @return
- * @throws PMDException
- */
- public static Map< String, IFlexFile > computeFilesList( final File source,
- final List< File > sourceList,
- final String packageToExclude,
- final List< String > excludePatterns ) throws PMDException
- {
- final Map< String, IFlexFile > files = new LinkedHashMap< String, IFlexFile >();
- final FlexFilter flexFilter = new FlexFilter();
- final Collection< File > foundFiles = getFlexFiles( source,
- sourceList,
- flexFilter );
-
- for ( final File sourceFile : foundFiles )
- {
- final AbstractFlexFile file = create( sourceFile,
- source );
-
- if ( ( "".equals( packageToExclude ) || !file.getFullyQualifiedName().startsWith( packageToExclude ) )
- && !currentPackageIncludedInExcludePatterns( file.getFullyQualifiedName(),
- excludePatterns ) )
- {
- files.put( file.getFullyQualifiedName(),
- file );
- }
- }
-
- return files;
- }
-
- /**
- * @param sourceFile
- * @param sourceDirectory
- * @return
- */
- public static AbstractFlexFile create( final File sourceFile,
- final File sourceDirectory )
- {
- AbstractFlexFile file;
-
- if ( sourceFile.getName().endsWith( ".as" ) )
- {
- file = new As3File( sourceFile, sourceDirectory );
- }
- else
- {
- file = new MxmlFile( sourceFile, sourceDirectory );
- }
-
- return file;
- }
-
- /**
- * @param file
- * @return
- * @throws IOException
- */
- public static String[] readLines( final File file ) throws IOException
- {
- final List< String > lines = com.adobe.ac.ncss.utils.FileUtils.readFile( file );
-
- return lines.toArray( new String[ lines.size() ] );
- }
-
- private static boolean currentPackageIncludedInExcludePatterns( final String fullyQualifiedName,
- final List< String > excludePatterns )
- {
- if ( excludePatterns != null )
- {
- for ( final String excludePattern : excludePatterns )
- {
- if ( fullyQualifiedName.startsWith( excludePattern ) )
- {
- return true;
- }
- }
- }
- return false;
- }
-
- private static Collection< File > getFlexFiles( final File source,
- final List< File > sourceList,
- final FlexFilter flexFilter ) throws PMDException
- {
- if ( source == null
- && sourceList == null )
- {
- throw new PMDException( "sourceDirectory is not specified", null );
- }
- Collection< File > foundFiles;
- if ( source == null )
- {
- foundFiles = com.adobe.ac.ncss.utils.FileUtils.listFiles( sourceList,
- flexFilter,
- true );
- }
- else
- {
- if ( source.isDirectory() )
- {
- foundFiles = com.adobe.ac.ncss.utils.FileUtils.listFiles( source,
- flexFilter,
- true );
- }
- else
- {
- foundFiles = new ArrayList< File >();
- foundFiles.add( source );
- }
- }
- if ( foundFiles.isEmpty() )
- {
- return new ArrayList< File >();
- }
- return foundFiles;
- }
-
- private FileUtils()
- {
- }
-}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/files/impl/MxmlFile.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/files/impl/MxmlFile.java b/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/files/impl/MxmlFile.java
deleted file mode 100644
index 7438c53..0000000
--- a/FlexPMD/flex-pmd-files/src/main/java/com/adobe/ac/pmd/files/impl/MxmlFile.java
+++ /dev/null
@@ -1,334 +0,0 @@
-/*
- * 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 com.adobe.ac.pmd.files.IMxmlFile;
-
-/**
- * @author xagnetti
- */
-class MxmlFile extends AbstractFlexFile implements IMxmlFile
-{
- private static final String METADATA_TAG = "Metadata";
- private String[] actualScriptBlock;
- private int endLine;
- private boolean mainApplication = false;
- private String[] scriptBlock;
- private int startLine;
-
- /**
- * @param file
- * @param rootDirectory
- */
- protected MxmlFile( final File file,
- final File rootDirectory )
- {
- super( file, rootDirectory );
-
- computeIfIsMainApplication();
- if ( getLinesNb() > 0 )
- {
- extractScriptBlock();
- }
- }
-
- /*
- * (non-Javadoc)
- * @see com.adobe.ac.pmd.files.IMxmlFile#getActualScriptBlock()
- */
- public final String[] getActualScriptBlock()
- {
- return actualScriptBlock; // NOPMD
- }
-
- /*
- * (non-Javadoc)
- * @see com.adobe.ac.pmd.files.IMxmlFile#getBeginningScriptBlock()
- */
- public int getBeginningScriptBlock()
- {
- return startLine;
- }
-
- /*
- * (non-Javadoc)
- * @see com.adobe.ac.pmd.files.impl.AbstractFlexFile#getCommentClosingTag()
- */
- @Override
- public final String getCommentClosingTag()
- {
- return "-->";
- }
-
- /*
- * (non-Javadoc)
- * @see com.adobe.ac.pmd.files.impl.AbstractFlexFile#getCommentOpeningTag()
- */
- @Override
- public final String getCommentOpeningTag()
- {
- return "<!--";
- }
-
- /*
- * (non-Javadoc)
- * @see com.adobe.ac.pmd.files.IMxmlFile#getEndingScriptBlock()
- */
- public int getEndingScriptBlock()
- {
- return endLine;
- }
-
- /*
- * (non-Javadoc)
- * @see com.adobe.ac.pmd.files.IMxmlFile#getScriptBlock()
- */
- public final String[] getScriptBlock()
- {
- return scriptBlock; // NOPMD by xagnetti on 7/7/09 3:15 PM
- }
-
- /*
- * (non-Javadoc)
- * @see com.adobe.ac.pmd.files.IFlexFile#getSingleLineComment()
- */
- public String getSingleLineComment()
- {
- return getCommentOpeningTag();
- }
-
- /*
- * (non-Javadoc)
- * @see com.adobe.ac.pmd.files.impl.AbstractFlexFile#isMainApplication()
- */
- @Override
- public final boolean isMainApplication()
- {
- return mainApplication;
- }
-
- /*
- * (non-Javadoc)
- * @see com.adobe.ac.pmd.files.impl.AbstractFlexFile#isMxml()
- */
- @Override
- public final boolean isMxml()
- {
- return true;
- }
-
- private void computeIfIsMainApplication()
- {
- for ( final String line : getLines() )
- {
- if ( line.contains( "Application " )
- && line.charAt( 0 ) == '<' )
- {
- mainApplication = true;
- break;
- }
- }
- }
-
- private int computeScriptOffSet( final int startingLineIndex )
- {
- int currentLineIndex = startingLineIndex + 1;
- while ( getLines().get( currentLineIndex ).contains( "CDATA[" )
- || getLines().get( currentLineIndex ).contains( "//" ) || containsCloseComment( currentLineIndex )
- || getLines().get( currentLineIndex ).trim().equals( "" ) )
- {
- currentLineIndex++;
- }
- return currentLineIndex
- - startingLineIndex;
- }
-
- private boolean containsCloseComment( final int currentLineIndex )
- {
- final boolean closedAsComment = getLines().get( currentLineIndex ).contains( "/*" )
- && getLines().get( currentLineIndex ).contains( "*/" );
- final boolean closeMxmlComment = getLines().get( currentLineIndex ).contains( "<!--" )
- && getLines().get( currentLineIndex ).contains( "-->" );
- return closedAsComment
- || closeMxmlComment;
- }
-
- private void copyScriptLinesKeepingOriginalLineIndices()
- {
- final List< String > scriptLines = extractScriptLines();
- final List< String > metaDataLines = extractMetaDataLines();
- final String packageLine = "package "
- + getPackageName() + "{";
- final String classLine = "class "
- + getClassName().split( "\\." )[ 0 ] + "{";
-
- scriptLines.set( 0,
- packageLine );
-
- if ( metaDataLines.isEmpty()
- || metaDataLines.get( 0 ).compareTo( "HostComponent" ) == 0 )
- {
- if ( scriptLines.size() > 1 )
- {
- scriptLines.set( 1,
- classLine );
- }
- }
- else
- {
- final int firstMetaDataLine = getFirstMetaDataLine( getLines() );
-
- for ( int i = firstMetaDataLine; i < firstMetaDataLine
- + metaDataLines.size(); i++ )
- {
- scriptLines.set( i,
- metaDataLines.get( i
- - firstMetaDataLine ) );
- }
- scriptLines.set( firstMetaDataLine
- + metaDataLines.size(),
- classLine );
- }
-
- scriptLines.set( scriptLines.size() - 1,
- "}}" );
- scriptBlock = scriptLines.toArray( new String[ scriptLines.size() ] );
- }
-
- private List< String > extractMetaDataLines()
- {
- final ArrayList< String > metaDataLines = new ArrayList< String >();
- int currentLineIndex = 0;
- int start = 0;
- int end = 0;
-
- for ( final String line : getLines() )
- {
- if ( line.contains( METADATA_TAG ) )
- {
- if ( line.contains( "</" ) )
- {
- end = currentLineIndex
- - ( getLines().get( currentLineIndex - 1 ).contains( "]]>" ) ? 1
- : 0 );
- if ( line.contains( "<fx" )
- || line.contains( "<mx" ) )
- {
- start = end;
- }
- break;
- }
- if ( line.contains( "<" ) )
- {
- start = currentLineIndex
- + ( getLines().get( currentLineIndex + 1 ).contains( "CDATA[" ) ? 2
- : 1 );
- }
- }
- currentLineIndex++;
- }
- metaDataLines.addAll( getLines().subList( start,
- end ) );
- return metaDataLines;
- }
-
- private void extractScriptBlock()
- {
- int currentLineIndex = 0;
- startLine = 0;
- endLine = 0;
-
- for ( final String line : getLines() )
- {
- if ( line.contains( "Script" ) )
- {
- if ( line.contains( "</" ) )
- {
- endLine = currentLineIndex
- - ( getLines().get( currentLineIndex - 1 ).contains( "]]>" ) ? 1
- : 0 );
- break;
- }
- else if ( line.contains( "<" ) )
- {
- startLine = currentLineIndex
- + computeScriptOffSet( currentLineIndex );
- }
- }
- currentLineIndex++;
- }
-
- copyScriptLinesKeepingOriginalLineIndices();
- }
-
- private List< String > extractScriptLines()
- {
- final List< String > scriptLines = new ArrayList< String >();
-
- for ( int j = 0; j < startLine; j++ )
- {
- scriptLines.add( "" );
- }
- if ( startLine < endLine )
- {
- actualScriptBlock = getLines().subList( startLine,
- endLine ).toArray( new String[ endLine
- - startLine ] );
- scriptLines.addAll( new ArrayList< String >( getLines().subList( startLine,
- endLine ) ) );
- }
- for ( int j = endLine; j < getLines().size(); j++ )
- {
- scriptLines.add( "" );
- }
- return scriptLines;
- }
-
- private int getFirstMetaDataLine( final List< String > lines )
- {
- for ( int i = 0; i < lines.size(); i++ )
- {
- final String line = lines.get( i );
-
- if ( line.contains( METADATA_TAG )
- && line.contains( "<" ) )
- {
- return i;
- }
- }
- return 0;
- }
-
- // private String printMetaData( final List< String > metaDataLines )
- // {
- // final StringBuffer buffer = new StringBuffer();
- // if ( metaDataLines == null
- // || metaDataLines.isEmpty() )
- // {
- // return "";
- // }
- // for ( final String line : metaDataLines )
- // {
- // buffer.append( line );
- // }
- // return buffer + " ";
- // }
-}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-files/src/main/java/net/sourceforge/pmd/PMDException.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-files/src/main/java/net/sourceforge/pmd/PMDException.java b/FlexPMD/flex-pmd-files/src/main/java/net/sourceforge/pmd/PMDException.java
deleted file mode 100644
index ce150c9..0000000
--- a/FlexPMD/flex-pmd-files/src/main/java/net/sourceforge/pmd/PMDException.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * 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;
-
-/**
- * A convenience exception wrapper. Contains the original exception, if any.
- * Also, contains a severity number (int). Zero implies no severity. The higher
- * the number the greater the severity.
- *
- * @author Donald A. Leckie
- * @version $Revision: 5681 $, $Date: 2007-11-30 14:00:56 -0800 (Fri, 30 Nov
- * 2007) $
- * @since August 30, 2002
- */
-public class PMDException extends Exception
-{
- private static final long serialVersionUID = 6938647389367956874L;
-
- private int severity;
-
- /**
- * @param message
- */
- public PMDException( final String message )
- {
- super( message );
- }
-
- /**
- * @param message
- * @param reason
- */
- public PMDException( final String message,
- final Exception reason )
- {
- super( message, reason );
- }
-
- /**
- * Returns the cause of this exception or <code>null</code>
- *
- * @return the cause of this exception or <code>null</code>
- * @deprecated use {@link #getCause()} instead
- */
- @Deprecated
- public Exception getReason()
- {
- return ( Exception ) getCause();
- }
-
- /**
- * @return
- */
- public int getSeverity()
- {
- return severity;
- }
-
- /**
- * @param severityToBeSet
- */
- public void setSeverity( final int severityToBeSet )
- {
- severity = severityToBeSet;
- }
-}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/FlexPmdTestBaseTest.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/FlexPmdTestBaseTest.java b/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/FlexPmdTestBaseTest.java
deleted file mode 100644
index 3fede84..0000000
--- a/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/FlexPmdTestBaseTest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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;
-
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-import junit.framework.Assert;
-
-import org.junit.Test;
-
-import com.adobe.ac.pmd.files.IFlexFile;
-
-public class FlexPmdTestBaseTest
-{
- @Test
- public void testSetTestFiles()
- {
- final FlexPmdTestBase testBase = new FlexPmdTestBase();
- final Map< String, IFlexFile > testFilesToBeSet = new LinkedHashMap< String, IFlexFile >();
-
- testBase.setTestFiles( testFilesToBeSet );
- Assert.assertEquals( testFilesToBeSet,
- testBase.getTestFiles() );
- }
-}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/ResourcesManagerTestTest.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/ResourcesManagerTestTest.java b/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/ResourcesManagerTestTest.java
deleted file mode 100644
index fe4848a..0000000
--- a/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/ResourcesManagerTestTest.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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;
-
-import junit.framework.Assert;
-
-import org.junit.Test;
-
-public class ResourcesManagerTestTest
-{
- @Test
- public void testGetInstance()
- {
- final ResourcesManagerTest manager = ResourcesManagerTest.getInstance();
-
- Assert.assertNotNull( manager.getTestFiles() );
- }
-}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/files/MxmlFileTest.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/files/MxmlFileTest.java b/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/files/MxmlFileTest.java
deleted file mode 100644
index 2193e78..0000000
--- a/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/files/MxmlFileTest.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * 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;
-
-import static org.junit.Assert.assertEquals;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.adobe.ac.pmd.FlexPmdTestBase;
-
-public class MxmlFileTest extends FlexPmdTestBase
-{
- private IMxmlFile bug141;
- private IMxmlFile bug233a;
- private IMxmlFile bug233b;
- private IMxmlFile deleteRenderer;
- private IMxmlFile iterationsList;
- private IMxmlFile nestedComponent;
-
- @Before
- public void setUp()
- {
- bug141 = ( IMxmlFile ) getTestFiles().get( "bug.FlexPMD141a.mxml" );
- bug233a = ( IMxmlFile ) getTestFiles().get( "bug.FlexPMD233a.mxml" );
- bug233b = ( IMxmlFile ) getTestFiles().get( "bug.FlexPMD233b.mxml" );
- iterationsList = ( IMxmlFile ) getTestFiles().get( "com.adobe.ac.ncss.mxml.IterationsList.mxml" );
- nestedComponent = ( IMxmlFile ) getTestFiles().get( "com.adobe.ac.ncss.mxml.NestedComponent.mxml" );
- deleteRenderer = ( IMxmlFile ) getTestFiles().get( "DeleteButtonRenderer.mxml" );
- }
-
- @Test
- public void testCommentTags()
- {
- assertEquals( "<!--",
- iterationsList.getCommentOpeningTag() );
- assertEquals( "-->",
- iterationsList.getCommentClosingTag() );
- }
-
- @Test
- public void testFlexPMD141()
- {
- final String[] lines = bug141.getScriptBlock();
-
- assertEquals( "package bug{",
- lines[ 0 ] );
- assertEquals( "class FlexPMD141a{",
- lines[ 1 ] );
- assertEquals( Integer.valueOf( 46 ),
- Integer.valueOf( lines.length ) );
- assertEquals( "",
- lines[ 36 ] );
- assertEquals( "",
- lines[ 37 ] );
- assertEquals( "",
- lines[ 38 ] );
- assertEquals( "private var object:List = new List();",
- lines[ 39 ].trim() );
- assertEquals( "}}",
- lines[ lines.length - 1 ] );
- }
-
- @Test
- public void testFlexPMD233()
- {
- final String[] lines = bug233a.getScriptBlock();
-
- Assert.assertEquals( "",
- lines[ 47 ] );
-
- Assert.assertEquals( 80,
- bug233b.getActualScriptBlock().length );
- }
-
- @Test
- public void testGetActionScriptScriptBlock()
- {
- final String[] deleteRendererLines = deleteRenderer.getScriptBlock();
-
- assertEquals( "package {",
- deleteRendererLines[ 0 ] );
- assertEquals( " [Event(name=\"ruleRemoved\", type=\"flash.events.Event\")]",
- deleteRendererLines[ 43 ] );
- assertEquals( "class DeleteButtonRenderer{",
- deleteRendererLines[ 44 ] );
- assertEquals( Integer.valueOf( 115 ),
- Integer.valueOf( deleteRendererLines.length ) );
- assertEquals( " import com.adobe.ac.pmd.model.Rule;",
- deleteRendererLines[ 49 ] );
- assertEquals( "}}",
- deleteRendererLines[ deleteRendererLines.length - 1 ] );
- }
-
- @Test
- public void testGetMxmlScriptBlock()
- {
- final String[] iterationsListLines = iterationsList.getScriptBlock();
-
- assertEquals( "package com.adobe.ac.ncss.mxml{",
- iterationsListLines[ 0 ] );
- assertEquals( "class IterationsList{",
- iterationsListLines[ 1 ] );
- assertEquals( " import com.adobe.ac.anthology.model.object.IterationModelLocator;",
- iterationsListLines[ 40 ] );
- assertEquals( "}}",
- iterationsListLines[ iterationsListLines.length - 1 ] );
- assertEquals( Integer.valueOf( 104 ),
- Integer.valueOf( iterationsListLines.length ) );
- }
-
- @Test
- public void testGetMxmlScriptBlock2()
- {
- final String[] nestedLines = nestedComponent.getScriptBlock();
-
- assertEquals( "package com.adobe.ac.ncss.mxml{",
- nestedLines[ 0 ] );
- assertEquals( "class NestedComponent{",
- nestedLines[ 1 ] );
- assertEquals( Integer.valueOf( 57 ),
- Integer.valueOf( nestedLines.length ) );
- assertEquals( "}}",
- nestedLines[ nestedLines.length - 1 ] );
- }
-
- @Test
- public void testScriptBlockLines()
- {
- assertEquals( Integer.valueOf( 40 ),
- Integer.valueOf( iterationsList.getBeginningScriptBlock() ) );
- assertEquals( Integer.valueOf( 94 ),
- Integer.valueOf( iterationsList.getEndingScriptBlock() ) );
- }
-}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/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
deleted file mode 100644
index 7987d77..0000000
--- a/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/files/impl/AbstractFlexFileTest.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * 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/e43b7a87/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
deleted file mode 100644
index b15e413..0000000
--- a/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/files/impl/As3FileTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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/e43b7a87/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
deleted file mode 100644
index b507a86..0000000
--- a/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/files/impl/FileUtilsTest.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * 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/e43b7a87/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
deleted file mode 100644
index 842f3e6..0000000
--- a/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/files/impl/FlexFileFactoryTest.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * 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/e43b7a87/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
deleted file mode 100644
index e51bc29..0000000
--- a/FlexPMD/flex-pmd-files/src/test/java/com/adobe/ac/pmd/files/impl/MxmlFileTest.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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/e43b7a87/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
deleted file mode 100644
index 550d982..0000000
--- a/FlexPMD/flex-pmd-files/src/test/java/net/sourceforge/pmd/PMDExceptionTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * 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/e43b7a87/FlexPMD/flex-pmd-flex-lib/.checkstyle
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex-lib/.checkstyle b/FlexPMD/flex-pmd-flex-lib/.checkstyle
deleted file mode 100644
index a34f4bb..0000000
--- a/FlexPMD/flex-pmd-flex-lib/.checkstyle
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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/e43b7a87/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
deleted file mode 100644
index 850ec2f..0000000
--- a/FlexPMD/flex-pmd-flex-lib/.externalToolBuilders/org.maven.ide.eclipse.maven2Builder.launch
+++ /dev/null
@@ -1,25 +0,0 @@
-<?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/e43b7a87/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
deleted file mode 100644
index 618220b..0000000
--- a/FlexPMD/flex-pmd-flex-lib/pom.xml
+++ /dev/null
@@ -1,207 +0,0 @@
-<!--
-
-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/e43b7a87/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
deleted file mode 100644
index beb6097..0000000
--- a/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/model/IDomainModel.as
+++ /dev/null
@@ -1,26 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-// 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/e43b7a87/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
deleted file mode 100644
index f0ee7c2..0000000
--- a/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/model/IPresentationModel.as
+++ /dev/null
@@ -1,26 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-// 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/e43b7a87/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
deleted file mode 100644
index 1e2d5d1..0000000
--- a/FlexPMD/flex-pmd-flex-lib/src/main/flex/com/adobe/ac/pmd/api/IGetRulesetContent.as
+++ /dev/null
@@ -1,28 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-// 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
[09/51] [partial] Refactored the PMD Maven build - Adjusted the
directory structure - Fixed a lot of compile problems - Fixed the maven setup
- Made PMD build with Flexmojos 7.1.0 and Apache Flex 4.13.0 - Fixed a few
UnitTests
Posted by cd...@apache.org.
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/style/ImportFromSamePackageRule.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/style/ImportFromSamePackageRule.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/style/ImportFromSamePackageRule.java
new file mode 100644
index 0000000..ef71b6d
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/style/ImportFromSamePackageRule.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 com.adobe.ac.pmd.rules.style;
+
+import org.apache.commons.lang.StringUtils;
+
+import com.adobe.ac.pmd.nodes.IPackage;
+import com.adobe.ac.pmd.parser.IParserNode;
+import com.adobe.ac.pmd.rules.core.AbstractAstFlexRule;
+import com.adobe.ac.pmd.rules.core.ViolationPriority;
+
+/**
+ * @author xagnetti
+ */
+public class ImportFromSamePackageRule extends AbstractAstFlexRule
+{
+ /*
+ * (non-Javadoc)
+ * @see
+ * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#findViolations(com.adobe
+ * .ac.pmd.nodes.IPackage)
+ */
+ @Override
+ protected final void findViolations( final IPackage packageNode )
+ {
+ final String packageName = packageNode.getName();
+
+ for ( final IParserNode importNode : packageNode.getImports() )
+ {
+ if ( StringUtils.substringBeforeLast( importNode.toString(),
+ "." ).equals( packageName ) )
+ {
+ addViolation( importNode );
+ }
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see com.adobe.ac.pmd.rules.core.AbstractFlexRule#getDefaultPriority()
+ */
+ @Override
+ protected final ViolationPriority getDefaultPriority()
+ {
+ return ViolationPriority.LOW;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/style/OverLongLineRule.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/style/OverLongLineRule.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/style/OverLongLineRule.java
new file mode 100644
index 0000000..1e80663
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/style/OverLongLineRule.java
@@ -0,0 +1,114 @@
+/*
+ * 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.rules.style;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.adobe.ac.pmd.IFlexViolation;
+import com.adobe.ac.pmd.files.IFlexFile;
+import com.adobe.ac.pmd.rules.core.ViolationPosition;
+import com.adobe.ac.pmd.rules.core.ViolationPriority;
+import com.adobe.ac.pmd.rules.core.thresholded.AbstractMaximizedFlexRule;
+
+/**
+ * @author xagnetti
+ */
+public class OverLongLineRule extends AbstractMaximizedFlexRule
+{
+ private static final int DEFAULT_THRESHOLD = 120;
+ private int currentLineLength;
+
+ /*
+ * (non-Javadoc)
+ * @see
+ * com.adobe.ac.pmd.rules.core.AbstractFlexRule#findViolationsInCurrentFile()
+ */
+ @Override
+ public final List< IFlexViolation > findViolationsInCurrentFile()
+ {
+ final List< IFlexViolation > violations = new ArrayList< IFlexViolation >();
+
+ if ( isConcernedByTheCurrentFile() )
+ {
+ final IFlexFile currentFile = getCurrentFile();
+
+ for ( int i = 1; i <= currentFile.getLinesNb(); i++ )
+ {
+ final String line = currentFile.getLineAt( i );
+
+ if ( !line.trim().startsWith( "import" )
+ && line.length() > getThreshold() )
+ {
+ currentLineLength = line.length();
+ final ViolationPosition position = ViolationPosition.create( i,
+ i,
+ 0,
+ currentLineLength );
+
+ addViolation( violations,
+ position );
+ }
+ }
+ }
+ return violations;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @seecom.adobe.ac.pmd.rules.core.thresholded.IThresholdedRule#
+ * getActualValueForTheCurrentViolation()
+ */
+ @Override
+ public final int getActualValueForTheCurrentViolation()
+ {
+ return currentLineLength;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
+ * com.adobe.ac.pmd.rules.core.thresholded.IThresholdedRule#getDefaultThreshold
+ * ()
+ */
+ @Override
+ public final int getDefaultThreshold()
+ {
+ return DEFAULT_THRESHOLD;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see com.adobe.ac.pmd.rules.core.AbstractFlexRule#getDefaultPriority()
+ */
+ @Override
+ protected final ViolationPriority getDefaultPriority()
+ {
+ return ViolationPriority.LOW;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
+ * com.adobe.ac.pmd.rules.core.AbstractFlexRule#isConcernedByTheCurrentFile()
+ */
+ @Override
+ protected boolean isConcernedByTheCurrentFile()
+ {
+ return true;
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/style/TabUsedAsIndentorRule.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/style/TabUsedAsIndentorRule.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/style/TabUsedAsIndentorRule.java
new file mode 100644
index 0000000..37f44a3
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/style/TabUsedAsIndentorRule.java
@@ -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.rules.style;
+
+import com.adobe.ac.pmd.rules.core.AbstractRegexpBasedRule;
+import com.adobe.ac.pmd.rules.core.ViolationPriority;
+
+public class TabUsedAsIndentorRule extends AbstractRegexpBasedRule
+{
+
+ @Override
+ protected ViolationPriority getDefaultPriority()
+ {
+ return ViolationPriority.NORMAL;
+ }
+
+ @Override
+ protected String getRegexp()
+ {
+ return "^ *\t.*";
+ }
+
+ @Override
+ protected boolean isConcernedByTheCurrentFile()
+ {
+ return !getCurrentFile().isMxml();
+ }
+
+ @Override
+ protected boolean isViolationDetectedOnThisMatchingLine( final String line )
+ {
+ return true;
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/IdenticalSwitchCasesRule.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/IdenticalSwitchCasesRule.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/IdenticalSwitchCasesRule.java
new file mode 100644
index 0000000..fad7a45
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/IdenticalSwitchCasesRule.java
@@ -0,0 +1,73 @@
+/*
+ * 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.rules.switchrules;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import com.adobe.ac.pmd.parser.IParserNode;
+import com.adobe.ac.pmd.rules.core.AbstractAstFlexRule;
+import com.adobe.ac.pmd.rules.core.ViolationPriority;
+
+/**
+ * @author xagnetti
+ */
+public class IdenticalSwitchCasesRule extends AbstractAstFlexRule
+{
+ /*
+ * (non-Javadoc)
+ * @see com.adobe.ac.pmd.rules.core.AbstractFlexRule#getDefaultPriority()
+ */
+ @Override
+ protected final ViolationPriority getDefaultPriority()
+ {
+ return ViolationPriority.LOW;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
+ * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#visitSwitch(com.adobe.
+ * ac.pmd.parser.IParserNode)
+ */
+ @Override
+ protected final void visitSwitch( final IParserNode ast )
+ {
+ super.visitSwitch( ast );
+
+ if ( ast.numChildren() > 0 )
+ {
+ final Map< String, IParserNode > cases = new LinkedHashMap< String, IParserNode >();
+
+ for ( final IParserNode caseStatement : ast.getChild( 1 ).getChildren() )
+ {
+ final String label = caseStatement.getChild( 0 ).toString();
+
+ if ( cases.containsKey( label ) )
+ {
+ addViolation( caseStatement );
+ break;
+ }
+ else
+ {
+ cases.put( label,
+ caseStatement );
+ }
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/NestedSwitchRule.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/NestedSwitchRule.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/NestedSwitchRule.java
new file mode 100644
index 0000000..38dd7e5
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/NestedSwitchRule.java
@@ -0,0 +1,58 @@
+/*
+ * 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.rules.switchrules;
+
+import com.adobe.ac.pmd.parser.IParserNode;
+import com.adobe.ac.pmd.rules.core.AbstractAstFlexRule;
+import com.adobe.ac.pmd.rules.core.ViolationPriority;
+
+/**
+ * @author xagnetti
+ */
+public class NestedSwitchRule extends AbstractAstFlexRule
+{
+ private int switchLevel = 0;
+
+ /*
+ * (non-Javadoc)
+ * @see com.adobe.ac.pmd.rules.core.AbstractFlexRule#getDefaultPriority()
+ */
+ @Override
+ protected final ViolationPriority getDefaultPriority()
+ {
+ return ViolationPriority.NORMAL;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
+ * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#visitSwitch(com.adobe.
+ * ac.pmd.parser.IParserNode)
+ */
+ @Override
+ protected final void visitSwitch( final IParserNode ast )
+ {
+ switchLevel++;
+ if ( switchLevel > 1 )
+ {
+ addViolation( ast );
+ }
+ super.visitSwitch( ast );
+
+ switchLevel--;
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/NonBreakableSwitchCaseRule.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/NonBreakableSwitchCaseRule.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/NonBreakableSwitchCaseRule.java
new file mode 100644
index 0000000..3697903
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/NonBreakableSwitchCaseRule.java
@@ -0,0 +1,41 @@
+/*
+ * 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.rules.switchrules;
+
+import com.adobe.ac.pmd.parser.IParserNode;
+import com.adobe.ac.pmd.rules.core.AbstractAstFlexRule;
+import com.adobe.ac.pmd.rules.core.ViolationPriority;
+
+public class NonBreakableSwitchCaseRule extends AbstractAstFlexRule
+{
+ @Override
+ protected ViolationPriority getDefaultPriority()
+ {
+ return ViolationPriority.HIGH;
+ }
+
+ @Override
+ protected void visitSwitchCase( final IParserNode switchCaseNode )
+ {
+ if ( switchCaseNode.getChildren() != null
+ && switchCaseNode.getChildren().size() > 0
+ && switchCaseNode.getLastChild().getStringValue().compareTo( "break" ) != 0 )
+ {
+ addViolation( switchCaseNode );
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/SwitchStatementsShouldHaveDefaultRule.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/SwitchStatementsShouldHaveDefaultRule.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/SwitchStatementsShouldHaveDefaultRule.java
new file mode 100644
index 0000000..163333e
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/SwitchStatementsShouldHaveDefaultRule.java
@@ -0,0 +1,75 @@
+/*
+ * 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.rules.switchrules;
+
+import com.adobe.ac.pmd.parser.IParserNode;
+import com.adobe.ac.pmd.rules.core.AbstractAstFlexRule;
+import com.adobe.ac.pmd.rules.core.ViolationPriority;
+
+/**
+ * @author xagnetti
+ */
+public class SwitchStatementsShouldHaveDefaultRule extends AbstractAstFlexRule
+{
+ private boolean defaultStatementFound = false;
+
+ /*
+ * (non-Javadoc)
+ * @see com.adobe.ac.pmd.rules.core.AbstractFlexRule#getDefaultPriority()
+ */
+ @Override
+ protected final ViolationPriority getDefaultPriority()
+ {
+ return ViolationPriority.HIGH;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
+ * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#visitSwitch(com.adobe.
+ * ac.pmd.parser.IParserNode)
+ */
+ @Override
+ protected final void visitSwitch( final IParserNode ast )
+ {
+ super.visitSwitch( ast );
+
+ if ( !defaultStatementFound )
+ {
+ ast.getChild( 1 );
+
+ addViolation( ast );
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
+ * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#visitSwitchDefaultCase
+ * (com.adobe.ac.pmd.parser.IParserNode)
+ */
+ @Override
+ protected final void visitSwitchDefaultCase( final IParserNode child )
+ {
+ super.visitSwitchDefaultCase( child );
+
+ if ( child.numChildren() != 0 )
+ {
+ defaultStatementFound = true;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/TooFewBrancheInSwitchStatementRule.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/TooFewBrancheInSwitchStatementRule.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/TooFewBrancheInSwitchStatementRule.java
new file mode 100644
index 0000000..2f4aae9
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/switchrules/TooFewBrancheInSwitchStatementRule.java
@@ -0,0 +1,144 @@
+/*
+ * 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.rules.switchrules;
+
+import java.util.Map;
+
+import net.sourceforge.pmd.PropertyDescriptor;
+
+import com.adobe.ac.pmd.parser.IParserNode;
+import com.adobe.ac.pmd.rules.core.AbstractAstFlexRule;
+import com.adobe.ac.pmd.rules.core.ViolationPriority;
+import com.adobe.ac.pmd.rules.core.thresholded.IThresholdedRule;
+
+/**
+ * @author xagnetti
+ */
+public class TooFewBrancheInSwitchStatementRule extends AbstractAstFlexRule implements IThresholdedRule
+{
+ public static final int DEFAULT_THRESHOLD = 3;
+ private int switchCases;
+
+ /*
+ * (non-Javadoc)
+ * @seecom.adobe.ac.pmd.rules.core.thresholded.IThresholdedRule#
+ * getActualValueForTheCurrentViolation()
+ */
+ public final int getActualValueForTheCurrentViolation()
+ {
+ return switchCases;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
+ * com.adobe.ac.pmd.rules.core.thresholded.IThresholdedRule#getDefaultThreshold
+ * ()
+ */
+ public final int getDefaultThreshold()
+ {
+ return DEFAULT_THRESHOLD;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
+ * com.adobe.ac.pmd.rules.core.thresholded.IThresholdedRule#getThreshold()
+ */
+ public final int getThreshold()
+ {
+ return getIntProperty( propertyDescriptorFor( getThresholdName() ) );
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
+ * com.adobe.ac.pmd.rules.core.thresholded.IThresholdedRule#getThresholdName
+ * ()
+ */
+ public final String getThresholdName()
+ {
+ return MINIMUM;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see com.adobe.ac.pmd.rules.core.AbstractFlexRule#getDefaultPriority()
+ */
+ @Override
+ protected final ViolationPriority getDefaultPriority()
+ {
+ return ViolationPriority.LOW;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see net.sourceforge.pmd.CommonAbstractRule#propertiesByName()
+ */
+ @Override
+ protected final Map< String, PropertyDescriptor > propertiesByName()
+ {
+ return getThresholdedRuleProperties( this );
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
+ * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#visitSwitch(com.adobe.
+ * ac.pmd.parser.IParserNode)
+ */
+ @Override
+ protected final void visitSwitch( final IParserNode ast )
+ {
+ switchCases = 0;
+
+ super.visitSwitch( ast );
+
+ if ( switchCases < getThreshold() )
+ {
+ addViolation( ast );
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
+ * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#visitSwitchCase(com.adobe
+ * .ac.pmd.parser.IParserNode)
+ */
+ @Override
+ protected final void visitSwitchCase( final IParserNode child )
+ {
+ super.visitSwitchCase( child );
+
+ switchCases++;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
+ * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#visitSwitchDefaultCase
+ * (com.adobe.ac.pmd.parser.IParserNode)
+ */
+ @Override
+ protected void visitSwitchDefaultCase( final IParserNode defaultCaseNode )
+ {
+ super.visitSwitchDefaultCase( defaultCaseNode );
+
+ switchCases++;
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/AbstractUnusedVariableRule.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/AbstractUnusedVariableRule.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/AbstractUnusedVariableRule.java
new file mode 100644
index 0000000..63640b2
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/AbstractUnusedVariableRule.java
@@ -0,0 +1,130 @@
+/*
+ * 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.rules.unused;
+
+import java.util.Map;
+
+import com.adobe.ac.pmd.parser.IParserNode;
+import com.adobe.ac.pmd.parser.NodeKind;
+import com.adobe.ac.pmd.rules.core.AbstractAstFlexRule;
+
+/**
+ * @author xagnetti
+ */
+abstract class AbstractUnusedVariableRule extends AbstractAstFlexRule
+{
+ private Map< String, IParserNode > variablesUnused;
+
+ /**
+ * @param variableName
+ * @param ast
+ */
+ protected final void addVariable( final String variableName,
+ final IParserNode ast )
+ {
+ variablesUnused.put( variableName,
+ ast );
+ }
+
+ /**
+ * @return
+ */
+ protected Map< String, IParserNode > getVariablesUnused()
+ {
+ return variablesUnused;
+ }
+
+ /**
+ * @param variablesUnusedToBeSet
+ */
+ protected void setVariablesUnused( final Map< String, IParserNode > variablesUnusedToBeSet )
+ {
+ variablesUnused = variablesUnusedToBeSet;
+ }
+
+ /**
+ * @param ast
+ */
+ protected final void tryToAddVariableNodeInChildren( final IParserNode ast )
+ {
+ if ( ast != null
+ && !tryToAddVariableNode( ast ) && ast.is( NodeKind.VAR_LIST ) )
+ {
+ for ( final IParserNode child : ast.getChildren() )
+ {
+ tryToAddVariableNode( child );
+ }
+ }
+ }
+
+ /**
+ * @param ast
+ */
+ protected final void tryToMarkVariableAsUsed( final IParserNode ast )
+ {
+ if ( variablesUnused != null
+ && ast != null )
+ {
+ markVariableAsUsed( ast );
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
+ * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#visitStatement(com.adobe
+ * .ac.pmd.parser.IParserNode)
+ */
+ @Override
+ protected void visitStatement( final IParserNode ast )
+ {
+ super.visitStatement( ast );
+
+ tryToMarkVariableAsUsed( ast );
+ }
+
+ private void markVariableAsUsed( final IParserNode ast )
+ {
+ if ( ast.numChildren() == 0 )
+ {
+ if ( variablesUnused.containsKey( ast.getStringValue() ) )
+ {
+ variablesUnused.remove( ast.getStringValue() );
+ }
+ }
+ else
+ {
+ for ( final IParserNode child : ast.getChildren() )
+ {
+ markVariableAsUsed( child );
+ }
+ }
+ }
+
+ private boolean tryToAddVariableNode( final IParserNode ast )
+ {
+ boolean result = false;
+
+ if ( ast.is( NodeKind.NAME_TYPE_INIT ) )
+ {
+ addVariable( ast.getChild( 0 ).getStringValue(),
+ ast );
+ result = true;
+ }
+ return result;
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/EmptyPrivateMethodRule.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/EmptyPrivateMethodRule.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/EmptyPrivateMethodRule.java
new file mode 100644
index 0000000..f9805c1
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/EmptyPrivateMethodRule.java
@@ -0,0 +1,41 @@
+/*
+ * 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.rules.unused;
+
+import com.adobe.ac.pmd.nodes.IFunction;
+import com.adobe.ac.pmd.nodes.Modifier;
+import com.adobe.ac.pmd.rules.core.AbstractAstFlexRule;
+import com.adobe.ac.pmd.rules.core.ViolationPriority;
+
+public class EmptyPrivateMethodRule extends AbstractAstFlexRule
+{
+ @Override
+ protected final void findViolations( final IFunction function )
+ {
+ if ( function.is( Modifier.PRIVATE )
+ && function.getBody().numChildren() == 0 )
+ {
+ addViolation( function );
+ }
+ }
+
+ @Override
+ protected final ViolationPriority getDefaultPriority()
+ {
+ return ViolationPriority.NORMAL;
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedFieldRule.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedFieldRule.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedFieldRule.java
new file mode 100644
index 0000000..c6bc6fd
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedFieldRule.java
@@ -0,0 +1,128 @@
+/*
+ * 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.rules.unused;
+
+import java.util.LinkedHashMap;
+import java.util.List;
+
+import com.adobe.ac.pmd.parser.IParserNode;
+import com.adobe.ac.pmd.parser.KeyWords;
+import com.adobe.ac.pmd.rules.core.ViolationPriority;
+
+/**
+ * @author xagnetti
+ */
+public class UnusedFieldRule extends AbstractUnusedVariableRule
+{
+ /*
+ * (non-Javadoc)
+ * @see
+ * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#isConcernedByTheCurrentFile
+ * ()
+ */
+ @Override
+ public final boolean isConcernedByTheCurrentFile()
+ {
+ return !getCurrentFile().isMxml();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see com.adobe.ac.pmd.rules.core.AbstractFlexRule#getDefaultPriority()
+ */
+ @Override
+ protected final ViolationPriority getDefaultPriority()
+ {
+ return ViolationPriority.HIGH;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
+ * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#visitClass(com.adobe.ac
+ * .pmd.parser.IParserNode)
+ */
+ @Override
+ protected final void visitClass( final IParserNode classNode )
+ {
+ setVariablesUnused( new LinkedHashMap< String, IParserNode >() );
+
+ super.visitClass( classNode );
+
+ for ( final String variableName : getVariablesUnused().keySet() )
+ {
+ final IParserNode variable = getVariablesUnused().get( variableName );
+
+ addViolation( variable,
+ variable,
+ variableName );
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
+ * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#visitVariableInitialization
+ * (com.adobe.ac.pmd.parser.IParserNode)
+ */
+ @Override
+ protected final void visitVariableInitialization( final IParserNode node )
+ {
+ super.visitVariableInitialization( node );
+
+ tryToMarkVariableAsUsed( node );
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
+ * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#visitVarOrConstList(com
+ * .adobe.ac.pmd.parser.IParserNode,
+ * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule.VariableOrConstant,
+ * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule.VariableScope)
+ */
+ @Override
+ protected final void visitVarOrConstList( final IParserNode ast,
+ final VariableOrConstant varOrConst,
+ final VariableScope scope )
+ {
+ if ( scope.equals( VariableScope.IN_CLASS ) )
+ {
+ final List< IParserNode > modifiers = ast.getChild( 0 ).getChildren();
+ boolean isPrivate = false;
+
+ if ( !modifiers.isEmpty() )
+ {
+ for ( final IParserNode modifierNode : modifiers )
+ {
+ if ( modifierNode.getStringValue().equals( KeyWords.PRIVATE.toString() ) )
+ {
+ isPrivate = true;
+ break;
+ }
+ }
+ }
+ if ( isPrivate )
+ {
+ tryToAddVariableNodeInChildren( ast );
+ }
+ }
+ super.visitVarOrConstList( ast,
+ varOrConst,
+ scope );
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedLocalVariableRule.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedLocalVariableRule.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedLocalVariableRule.java
new file mode 100644
index 0000000..64df71a
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedLocalVariableRule.java
@@ -0,0 +1,76 @@
+/*
+ * 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.rules.unused;
+
+import java.util.LinkedHashMap;
+
+import com.adobe.ac.pmd.parser.IParserNode;
+import com.adobe.ac.pmd.rules.core.ViolationPriority;
+
+/**
+ * @author xagnetti
+ */
+public class UnusedLocalVariableRule extends AbstractUnusedVariableRule
+{
+ /*
+ * (non-Javadoc)
+ * @see com.adobe.ac.pmd.rules.core.AbstractFlexRule#getDefaultPriority()
+ */
+ @Override
+ protected final ViolationPriority getDefaultPriority()
+ {
+ return ViolationPriority.NORMAL;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
+ * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#visitFunction(com.adobe
+ * .ac.pmd.parser.IParserNode,
+ * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule.FunctionType)
+ */
+ @Override
+ protected final void visitFunction( final IParserNode ast,
+ final FunctionType type )
+ {
+ setVariablesUnused( new LinkedHashMap< String, IParserNode >() );
+
+ super.visitFunction( ast,
+ type );
+ for ( final String variableName : getVariablesUnused().keySet() )
+ {
+ final IParserNode variable = getVariablesUnused().get( variableName );
+
+ addViolation( variable,
+ variable,
+ variableName );
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
+ * com.adobe.ac.pmd.rules.unused.AbstractUnusedVariableRule#visitStatement
+ * (com.adobe.ac.pmd.parser.IParserNode)
+ */
+ @Override
+ protected final void visitStatement( final IParserNode ast )
+ {
+ super.visitStatement( ast );
+ tryToAddVariableNodeInChildren( ast );
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedParameterRule.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedParameterRule.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedParameterRule.java
new file mode 100644
index 0000000..305def5
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedParameterRule.java
@@ -0,0 +1,239 @@
+/*
+ * 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.rules.unused;
+
+import java.util.LinkedHashMap;
+
+import com.adobe.ac.pmd.parser.IParserNode;
+import com.adobe.ac.pmd.parser.KeyWords;
+import com.adobe.ac.pmd.parser.NodeKind;
+import com.adobe.ac.pmd.rules.core.ViolationPriority;
+import com.adobe.ac.pmd.rules.parsley.utils.ParsleyMetaData;
+import com.adobe.ac.pmd.rules.parsley.utils.MetaDataTag.Location;
+
+/**
+ * @author xagnetti
+ */
+public class UnusedParameterRule extends AbstractUnusedVariableRule
+{
+ private static final String DATA_GRID_COLUMN = "DataGridColumn";
+ private static final String FAULT_FUNCTION_NAME = "fault";
+ private static final String RESPONDER_INTERFACE_NAME = "Responder";
+ private static final String RESULT_FUNCTION_NAME = "result";
+
+ private static String computeFunctionName( final IParserNode functionAst )
+ {
+ String functionName = "";
+ for ( final IParserNode node : functionAst.getChildren() )
+ {
+ if ( node.is( NodeKind.NAME ) )
+ {
+ functionName = node.getStringValue();
+ break;
+ }
+ }
+ return functionName;
+ }
+
+ private static boolean isClassImplementingIResponder( final IParserNode currentClass2 )
+ {
+ for ( final IParserNode node : currentClass2.getChildren() )
+ {
+ if ( node.is( NodeKind.IMPLEMENTS_LIST ) )
+ {
+ for ( final IParserNode implementation : node.getChildren() )
+ {
+ if ( implementation.getStringValue() != null
+ && implementation.getStringValue().contains( RESPONDER_INTERFACE_NAME ) )
+ {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ private static boolean isResponderImplementation( final IParserNode currentClass,
+ final IParserNode functionAst )
+ {
+ if ( !isClassImplementingIResponder( currentClass ) )
+ {
+ return false;
+ }
+ final String functionName = computeFunctionName( functionAst );
+
+ return RESULT_FUNCTION_NAME.compareTo( functionName ) == 0
+ || FAULT_FUNCTION_NAME.compareTo( functionName ) == 0;
+ }
+
+ private IParserNode currentClass;
+
+ /*
+ * (non-Javadoc)
+ * @see com.adobe.ac.pmd.rules.core.AbstractFlexRule#getDefaultPriority()
+ */
+ @Override
+ protected final ViolationPriority getDefaultPriority()
+ {
+ return ViolationPriority.NORMAL;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
+ * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#visitClass(com.adobe.ac
+ * .pmd.parser.IParserNode)
+ */
+ @Override
+ protected final void visitClass( final IParserNode classNode )
+ {
+ currentClass = classNode;
+ super.visitClass( classNode );
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
+ * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#visitFunction(com.adobe
+ * .ac.pmd.parser.IParserNode,
+ * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule.FunctionType)
+ */
+ @Override
+ protected final void visitFunction( final IParserNode functionAst,
+ final FunctionType type )
+ {
+ setVariablesUnused( new LinkedHashMap< String, IParserNode >() );
+ final boolean isOverriden = isFunctionOverriden( functionAst );
+
+ if ( !isOverriden
+ && !isResponderImplementation( currentClass,
+ functionAst ) && !isParsleyFunction( functionAst ) )
+ {
+ super.visitFunction( functionAst,
+ type );
+
+ if ( !functionIsEventHandler( functionAst ) )
+ {
+ for ( final String variableName : getVariablesUnused().keySet() )
+ {
+ final IParserNode variable = getVariablesUnused().get( variableName );
+
+ addViolation( variable,
+ variable,
+ variableName );
+ }
+ }
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
+ * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#visitParameters(com.adobe
+ * .ac.pmd.parser.IParserNode)
+ */
+ @Override
+ protected final void visitParameters( final IParserNode ast )
+ {
+ super.visitParameters( ast );
+
+ if ( ast.numChildren() != 0 )
+ {
+ for ( final IParserNode parameterNode : ast.getChildren() )
+ {
+ if ( !isParameterAnEvent( parameterNode )
+ && parameterNode.numChildren() > 0
+ && parameterNode.getChild( 0 ).numChildren() > 1
+ && parameterNode.getChild( 0 ).getChild( 1 ).getStringValue().compareTo( DATA_GRID_COLUMN ) != 0 )
+ {
+ addVariable( parameterNode.getChild( 0 ).getChild( 0 ).getStringValue(),
+ parameterNode );
+ }
+ }
+ }
+ }
+
+ private String extractFunctionName( final IParserNode ast )
+ {
+ if ( ast.numChildren() != 0 )
+ {
+ for ( final IParserNode node : ast.getChildren() )
+ {
+ if ( node.is( NodeKind.NAME ) )
+ {
+ return node.getStringValue();
+ }
+ }
+ }
+ return "";
+ }
+
+ private boolean functionIsEventHandler( final IParserNode ast )
+ {
+ final String functionName = extractFunctionName( ast );
+
+ return functionName.startsWith( "on" )
+ || functionName.startsWith( "handle" ) || functionName.endsWith( "handler" );
+ }
+
+ private boolean isFunctionOverriden( final IParserNode ast )
+ {
+ for ( final IParserNode child : ast.getChildren() )
+ {
+ if ( child.is( NodeKind.MOD_LIST ) )
+ {
+ for ( final IParserNode mod : child.getChildren() )
+ {
+ if ( mod.getStringValue().equals( KeyWords.OVERRIDE.toString() ) )
+ {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ private boolean isParameterAnEvent( final IParserNode parameterNode )
+ {
+ final IParserNode parameterType = getTypeFromFieldDeclaration( parameterNode );
+
+ return parameterType != null
+ && parameterType.getStringValue() != null && parameterType.getStringValue().contains( "Event" );
+ }
+
+ private boolean isParsleyFunction( final IParserNode functionAst )
+ {
+ for ( final IParserNode child : functionAst.getChildren() )
+ {
+ if ( child.is( NodeKind.META_LIST ) )
+ {
+ for ( final IParserNode metaDataChild : child.getChildren() )
+ {
+ if ( metaDataChild.getStringValue() != null
+ && ParsleyMetaData.getPossibleMetaDataFromLocation( Location.FUNCTION )
+ .containsKey( metaDataChild.getStringValue() ) )
+ {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedPrivateMethodRule.java
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedPrivateMethodRule.java b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedPrivateMethodRule.java
new file mode 100644
index 0000000..6637b4f
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/java/com/adobe/ac/pmd/rules/unused/UnusedPrivateMethodRule.java
@@ -0,0 +1,183 @@
+/*
+ * 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.rules.unused;
+
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import com.adobe.ac.pmd.files.IAs3File;
+import com.adobe.ac.pmd.nodes.IAttribute;
+import com.adobe.ac.pmd.nodes.IClass;
+import com.adobe.ac.pmd.nodes.IConstant;
+import com.adobe.ac.pmd.nodes.IFunction;
+import com.adobe.ac.pmd.nodes.IVariable;
+import com.adobe.ac.pmd.nodes.Modifier;
+import com.adobe.ac.pmd.parser.IParserNode;
+import com.adobe.ac.pmd.rules.core.AbstractAstFlexRule;
+import com.adobe.ac.pmd.rules.core.ViolationPriority;
+
+/**
+ * @author xagnetti
+ */
+public class UnusedPrivateMethodRule extends AbstractAstFlexRule
+{
+ private Map< String, IFunction > privateFunctions = null;
+
+ /*
+ * (non-Javadoc)
+ * @see
+ * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#findViolations(com.adobe
+ * .ac.pmd.nodes.IClass)
+ */
+ @Override
+ protected final void findViolations( final IClass classNode )
+ {
+ fillPrivateFunctions( classNode.getFunctions() );
+ findUnusedFunction( classNode.getBlock() );
+
+ super.findViolations( classNode );
+
+ addViolations();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
+ * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#findViolations(java.util
+ * .List)
+ */
+ @Override
+ protected final void findViolations( final List< IFunction > functions )
+ {
+ super.findViolations( functions );
+
+ for ( final IFunction function : functions )
+ {
+ findUnusedFunction( function.getBody() );
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
+ * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#findViolationsFromAttributes
+ * (java.util.List)
+ */
+ @Override
+ protected void findViolationsFromAttributes( final List< IAttribute > variables )
+ {
+ super.findViolationsFromAttributes( variables );
+
+ findViolationsFromVariables( variables );
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
+ * com.adobe.ac.pmd.rules.core.AbstractAstFlexRule#findViolationsFromConstants
+ * (java.util.List)
+ */
+ @Override
+ protected void findViolationsFromConstants( final List< IConstant > constants )
+ {
+ super.findViolationsFromConstants( constants );
+
+ findViolationsFromVariables( constants );
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see com.adobe.ac.pmd.rules.core.AbstractFlexRule#getDefaultPriority()
+ */
+ @Override
+ protected final ViolationPriority getDefaultPriority()
+ {
+ return ViolationPriority.NORMAL;
+ }
+
+ private void addViolations()
+ {
+ final Set< Integer > ignoredLines = new HashSet< Integer >();
+
+ for ( final String functionName : privateFunctions.keySet() )
+ {
+ final IFunction function = privateFunctions.get( functionName );
+ ignoredLines.clear();
+ ignoredLines.add( getNameFromFunctionDeclaration( function.getInternalNode() ).getLine() );
+
+ if ( getCurrentFile() instanceof IAs3File
+ || !getCurrentFile().contains( functionName,
+ ignoredLines ) )
+ {
+ addViolation( function );
+ }
+ }
+ }
+
+ private void fillPrivateFunctions( final List< IFunction > functions )
+ {
+ privateFunctions = new LinkedHashMap< String, IFunction >();
+
+ for ( final IFunction function : functions )
+ {
+ if ( function.is( Modifier.PRIVATE ) )
+ {
+ privateFunctions.put( function.getName(),
+ function );
+ }
+ }
+ }
+
+ private void findUnusedFunction( final IParserNode body )
+ {
+ if ( body != null )
+ {
+ if ( body.getStringValue() != null )
+ {
+ for ( final String functionName : privateFunctions.keySet() )
+ {
+ if ( body.getStringValue().equals( functionName ) )
+ {
+ privateFunctions.remove( functionName );
+ break;
+ }
+ }
+ }
+ if ( body.numChildren() != 0 )
+ {
+ for ( final IParserNode child : body.getChildren() )
+ {
+ findUnusedFunction( child );
+ }
+ }
+ }
+ }
+
+ private void findViolationsFromVariables( final List< ? extends IVariable > variables )
+ {
+ for ( final IVariable constant : variables )
+ {
+ if ( constant.getInitializationExpression() != null )
+ {
+ findUnusedFunction( constant.getInitializationExpression().getInternalNode() );
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/all_flex.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/all_flex.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/all_flex.xml
new file mode 100644
index 0000000..814086d
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/all_flex.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<!--
+
+ 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="All Flex Rules" xmlns="http://pmd.sf.net/ruleset/1.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
+ xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
+
+ <description>Every Flex Rule in FlexPMD</description>
+
+ <rule ref="com/adobe/ac/pmd/rulesets/architecture.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/asdocs.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/basic_mxml.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/binding.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/cairngorm.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/component.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/css.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/empty.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/event.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/indentation.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/maintanability.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/multitouch.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/naming.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/parsley.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/performance.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/sizing.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/style.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/switches.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/unittest.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/unused.xml" />
+
+</ruleset>
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/default_flex.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/default_flex.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/default_flex.xml
new file mode 100644
index 0000000..ef8fd61
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/default_flex.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<!--
+
+ 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="Default Flex Rules" xmlns="http://pmd.sf.net/ruleset/1.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
+ xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
+
+ <description>Every Flex Rule in FlexPMD</description>
+
+ <rule ref="com/adobe/ac/pmd/rulesets/architecture.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/basic_mxml.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/binding.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/cairngorm.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/component.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/css.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/empty.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/event.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/maintanability.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/naming.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/parsley.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/performance.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/security.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/sizing.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/style.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/switches.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/unittest.xml" />
+ <rule ref="com/adobe/ac/pmd/rulesets/unused.xml" />
+
+</ruleset>
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/architecture.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/architecture.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/architecture.xml
new file mode 100644
index 0000000..82adbe2
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/architecture.xml
@@ -0,0 +1,118 @@
+<?xml version="1.0"?>
+<!--
+
+ 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="Architecture Rules" xmlns="http://pmd.sf.net/ruleset/1.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
+ xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
+
+ <description>
+ The Architecture ruleset contains a collection of good practices around architecture.
+ </description>
+
+ <rule class="com.adobe.ac.pmd.rules.architecture.ViewComponentReferencedInModelRule"
+ message="A view component should not be referenced in a model class">
+ <description></description>
+ <priority>3</priority>
+ <example>
+package com.adobe.ac
+{
+ import mx.controls.ComboBox; // VIOLATION
+
+ public class MyModelClass
+ {
+ }
+}
+ </example>
+ </rule>
+
+ <rule class="com.adobe.ac.pmd.rules.architecture.MonkeyPatchingRule"
+ message="This class looks to be duplicated with a SDK class">
+ <description>Monkey patching can be a risky undertaking because it is not using intended extensibility points and thus may have unintended consequences or make migration to newer versions of the SDK more difficult</description>
+ <priority>1</priority>
+ </rule>
+
+ <rule class="com.adobe.ac.pmd.rules.architecture.UseInternalClassOutsideApiClass"
+ message="This class imports an internal class ({0}) from another function area ({1})">
+ <description>If you have different functionalities, you probably don't want every class of each to be accessible from any other functional areas.
+So you probably want to use this packaging:
+[org].[project].func1.api
+[org].[project].func1.restricted
+[org].[project].func2.api
+[org].[project].func2.restricted
+This rule makes sure that no restricted classes is accessed from outside its own function area.
+ </description>
+ <priority>1</priority>
+ <example>
+package functional
+{
+ import functional.func1.api.Func1ExposedClass;
+ import functional.func1.restricted.Func1RestrictedClass; // VIOLATION
+ import functional.func2.api.Func2ExposedClass;
+ import functional.func2.restricted.Func2RestrictedClass; // VIOLATION
+
+ public class FunctionClient
+ {
+ }
+}
+package functional.func1.api
+
+{
+ import functional.func1.restricted.Func1RestrictedClass;
+ import functional.func2.api.Func2ExposedClass;
+ import functional.func2.restricted.Func2RestrictedClass; // VIOLATION
+
+ public class Func1ExposedClass
+ {
+ }
+}
+package functional.func1.restricted
+{
+ import functional.func1.api.Func1ExposedClass;
+ import functional.func2.api.Func2ExposedClass;
+ import functional.func2.restricted.Func2RestrictedClass; // VIOLATION
+
+ public class Func1RestrictedClass
+ {
+ }
+}
+package functional.func2.api
+{
+ import functional.func1.api.Func1ExposedClass;
+ import functional.func1.restricted.Func1RestrictedClass; // VIOLATION
+ import functional.func2.restricted.Func2RestrictedClass;
+
+ public class Func2ExposedClass
+ {
+ }
+}
+package functional.func2.restricted
+{
+ import functional.func1.api.Func1ExposedClass;
+ import functional.func1.restricted.Func1RestrictedClass; // VIOLATION
+ import functional.func2.api.Func2ExposedClass;
+
+ public class Func2RestrictedClass
+ {
+ }
+}
+ </example>
+ </rule>
+
+</ruleset>
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/asdocs.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/asdocs.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/asdocs.xml
new file mode 100644
index 0000000..3877230
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/asdocs.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<!--
+
+ 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="AsDocs Rules"
+ xmlns="http://pmd.sf.net/ruleset/1.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
+ xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd"
+ >
+
+ <description>
+ The AsDocs Ruleset contains a collection of good practices related to AsDocs.
+ </description>
+
+ <rule
+ class="com.adobe.ac.pmd.rules.asdocs.AttributeAsDocMissingRule"
+ message="This attribute ({0}) should be documented with AsDocs.">
+ <priority>3</priority>
+ </rule>
+
+ <rule
+ class="com.adobe.ac.pmd.rules.asdocs.ClassAsDocMissingRule"
+ message="This class ({0}) should be documented with AsDocs.">
+ <priority>3</priority>
+ </rule>
+
+ <rule
+ class="com.adobe.ac.pmd.rules.asdocs.MethodAsDocMissingRule"
+ message="This method ({0}) should be documented with AsDocs.">
+ <priority>3</priority>
+ </rule>
+
+</ruleset>
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/basic_mxml.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/basic_mxml.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/basic_mxml.xml
new file mode 100644
index 0000000..2f9fcf5
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/basic_mxml.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0"?>
+<!--
+
+ 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="Basic MXML Rules" xmlns="http://pmd.sf.net/ruleset/1.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
+ xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
+
+ <description>
+ The Basic MXML Ruleset contains a collection of good practices which everyone should follow.
+ </description>
+
+ <rule class="com.adobe.ac.pmd.rules.mxml.MoreThanOneEntryPointInMxmlRule"
+ message="There is more than 1 public variable in this MXML component">
+ <priority>5</priority>
+ </rule>
+
+ <rule class="com.adobe.ac.pmd.rules.mxml.MoreThanTwoEntryPointsInMxmlRule"
+ message="There are more than 2 public variables in this MXML component">
+ <priority>3</priority>
+ </rule>
+
+ <rule class="com.adobe.ac.pmd.rules.mxml.TooLongScriptBlockRule"
+ message="This script block is too long ({0} maximum, but {1} actually)">
+ <priority>3</priority>
+ <properties>
+ <property name="maximum">
+ <value>50</value>
+ </property>
+ </properties>
+ </rule>
+
+ <rule class="com.adobe.ac.pmd.rules.mxml.CodeBehindInMxmlRule"
+ message="Avoid using code behind files">
+ <description>Code behind files are tightly coupled with the view, not unit-testable, not easy to navigate the code code base and not reusable. Try using presentation model pattern, or observer pattern</description>
+ <priority>5</priority>
+ </rule>
+
+ <rule class="com.adobe.ac.pmd.rules.mxml.TooManyStatesInMxmlRule"
+ message="Having too many states does not help visibility. Try to refactor this view component.">
+ <priority>3</priority>
+ <properties>
+ <property name="maximum">
+ <value>5</value>
+ </property>
+ </properties>
+ </rule>
+
+</ruleset>
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/binding.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/binding.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/binding.xml
new file mode 100644
index 0000000..0eedc46
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/binding.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0"?>
+<!--
+
+ 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="Binding Rules" xmlns="http://pmd.sf.net/ruleset/1.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
+ xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
+
+ <description>
+ The Binding ruleset contains a collection of good practices around usage of binding.
+ </description>
+
+ <rule class="com.adobe.ac.pmd.rules.binding.BindingUtilsRule"
+ message="BindingUtils class uses hard coded strings, which won't be picked up by the compiler if you rename this attribute. You should probably consider refactoring using events">
+ <description></description>
+ <priority>1</priority>
+ <example>
+public class Controller extends FrontController
+{
+ public function Controller()
+ {
+ BindingUtils.bindSetter(setContent, value, "content"); // VIOLATION
+ }
+}
+ </example>
+ </rule>
+
+ <rule class="com.adobe.ac.pmd.rules.binding.ChangeWatcherRule"
+ message="ChangeWatcher class uses hard coded strings to specify the attribute name, to listen to. Prefer listening to events or setters">
+ <priority>1</priority>
+ <example>
+public final class Title
+{
+ private var watcher : ChangeWatcher; // VIOLATION
+}
+ </example>
+ </rule>
+
+ <rule class="com.adobe.ac.pmd.rules.binding.TooLongBindingExpressionRule"
+ message="This binding expression is too long ({0} dots maximum, but {1} actually)">
+ <description>A Binding expression is executed as soon as one of the bindable attributes changed. If a binding expression contains too many expression, there could be some performance issue.</description>
+ <priority>3</priority>
+ <properties>
+ <property name="maximum">
+ <value>3</value>
+ </property>
+ </properties>
+ <example>
+ <![CDATA[
+<mx:Label text="{ vfrfr.frfr.frf.lala }"/> <!-- Violation-->
+ ]]>
+ </example>
+ </rule>
+</ruleset>
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/cairngorm.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/cairngorm.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/cairngorm.xml
new file mode 100644
index 0000000..43b425c
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/cairngorm.xml
@@ -0,0 +1,134 @@
+<?xml version="1.0"?>
+<!--
+
+ 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="Cairngorm Rules" xmlns="http://pmd.sf.net/ruleset/1.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
+ xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
+ <description>
+ The Cairngorm Ruleset contains a collection of good practices related to Cairngorm.
+ </description>
+
+ <rule class="com.adobe.ac.pmd.rules.cairngorm.BindableModelLocatorRule"
+ message="A modelLocator must not be Bindable at a class level">
+ <description>A bindable ModelLocator could leads to performance issues due to bindings</description>
+ <priority>1</priority>
+ <example>
+[Bindable]
+public class BindableModelLocator // VIOLATION
+{
+}
+ </example>
+ </rule>
+
+ <rule
+ class="com.adobe.ac.pmd.rules.cairngorm.ReferenceModelLocatorOutsideTheMainApplicationRule"
+ message="The ModelLocator should be only accessible from the main application file">
+ <description>The ModelLocator should be only accessible from the main application file. Then sub-models should be injected to the nested views.</description>
+ <priority>3</priority>
+ <example>
+package business
+{
+ import model.MyModelLocator; // VIOLATION
+
+ public class MyBusinessClass
+ {
+ }
+}
+ </example>
+ </rule>
+
+ <rule class="com.adobe.ac.pmd.rules.cairngorm.FatControllerRule"
+ message="A FrontController must nor add all its commands within the Controller constructor">
+ <description>Try split them into methods where you add commands depending on their functional area.</description>
+ <priority>3</priority>
+ <example>
+package control
+{
+ import control.GetItems1Command;
+ import control.GetItems1Event;
+ import control.GetItems2Command;
+ import control.GetItems2Event;
+ // A lot of other imports
+
+ public class MyFrontController // VIOLATION
+ {
+ public function MyFrontController()
+ {
+ addCommand(
+ GetItems1Event.EVENT_NAME,
+ GetItems1Command );
+
+ addCommand(
+ GetItems2Event.EVENT_NAME,
+ GetItems2Command );
+
+ // A lot of other addCommand
+ }
+ }
+}
+ </example>
+ </rule>
+
+ <rule
+ class="com.adobe.ac.pmd.rules.cairngorm.BadCairngormEventNameFormatRule"
+ message="A Cairngorm event name should contain the function area name before the actual event name">
+ <description>You would have something like 'productManagement.getProducts' as an event name.</description>
+ <priority>3</priority>
+ <example>
+
+public class UncorrectConstructorEvent extends CairngormEvent
+{
+ public function UncorrectConstructorEvent( model : IModel )
+ {
+ super( "eventName", model ); // VIOLATION. It should be "functionalArea.eventName" instead
+ }
+}
+public class UncorrectConstantEvent extends CairngormEnterpriseEvent
+{
+ public static const EVENT_NAME : String = "eventName";
+
+ public function UncorrectConstantEvent( model : IModel )
+ {
+ super( EVENT_NAME, model ); // VIOLATION
+ }
+}
+ </example>
+ </rule>
+
+ <rule class="com.adobe.ac.pmd.rules.cairngorm.CairngormEventDispatcherCallExplicitlyRule"
+ message="CairngormEventDispatcher is called explicitly. {0}">
+ <priority>3</priority>
+ <example>
+ <![CDATA[
+public function foo() : void
+{
+ CairngormEventDispatcher.getInstance().dispatchEvent(new Event(CONSTANT)); // VIOLATION <- use cairngormEvent.dispatch();
+ CairngormEventDispatcher.getInstance().addEventListener(CONSTANT, onHearing); // VIOLATION <- MVC broken
+}
+ ]]>
+ </example>
+ </rule>
+
+ <rule class="com.adobe.ac.pmd.rules.cairngorm.ModelLocatorReferencedMoreThanOncePerClassRule"
+ message="Only one reference of ModelLocator is allowed per class">
+ <priority>3</priority>
+ </rule>
+
+</ruleset>
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/component.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/component.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/component.xml
new file mode 100644
index 0000000..daba3e1
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/component.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<!--
+
+ 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="Custom component rules" xmlns="http://pmd.sf.net/ruleset/1.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
+ xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
+
+ <description>
+ The Component Ruleset contains a collection of good practices related to custom component development.
+ </description>
+
+ <rule
+ class="com.adobe.ac.pmd.rules.component.UpdateChildrenNumberInUpdateDisplayListRule"
+ message="Flex specific - Do not add or remove displayable children from updateDisplayList">
+ <description>UpdateDisplayList is called everytime a child is invalidated. So calling addChild or removeChild in this function could be really CPU consuming</description>
+ <priority>1</priority>
+ <example></example>
+ </rule>
+
+ <rule class="com.adobe.ac.pmd.rules.component.CallLaterDirectlyRule"
+ message="Flex specific - Don't call 'callLater' explicitly">
+ <description>If you needed to call 'callLater' explicitly, then you probably did not extend the correct component life cycle.</description>
+ <priority>1</priority>
+ </rule>
+
+</ruleset>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/css.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/css.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/css.xml
new file mode 100644
index 0000000..c580d39
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/css.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<!--
+
+ 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="CSS Rules" xmlns="http://pmd.sf.net/ruleset/1.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
+ xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
+
+ <description>
+ The Styling Ruleset contains a collection of good practices related to
+ styling.
+ </description>
+
+ <rule class="com.adobe.ac.pmd.rules.css.StyleBlockInMxmlRule"
+ message="The style block is embed in the MXML file">
+ <description>It is not a good practice to embed style blocks inside the MXML component. Prefer using external CSS files.</description>
+ <priority>3</priority>
+ </rule>
+
+ <rule class="com.adobe.ac.pmd.rules.css.UseCssInsteadOfEmbedMetaDataRule"
+ message="Embed metadata detected in source code where a stylesheet may be cleaner">
+ <priority>5</priority>
+ </rule>
+
+</ruleset>
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/empty.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/empty.xml b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/empty.xml
new file mode 100644
index 0000000..e6f46c3
--- /dev/null
+++ b/FlexPMD/flex-pmd-java/flex-pmd-ruleset/src/main/resources/com/adobe/ac/pmd/rulesets/empty.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<!--
+
+ 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="Empty statement Rules" xmlns="http://pmd.sf.net/ruleset/1.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
+ xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
+
+ <description>
+ The Empty ruleset contains a collection of rules detecting empty statements.
+ </description>
+
+ <rule class="com.adobe.ac.pmd.rules.empty.EmptyCatchStatementRule"
+ message="This catch statement is empty">
+ <priority>3</priority>
+ <example>
+public class Foo
+{
+ public function bar( x : int ) : void
+ {
+ try
+ {
+ }
+ catch( e : Exception ) // VIOLATION
+ {
+ }
+ }
+}
+ </example>
+ </rule>
+
+ <rule class="com.adobe.ac.pmd.rules.empty.EmptyIfStmtRule"
+ message="No statements in this if statement">
+ <description>Empty If Statement finds instances where a condition is checked but nothing is done about it. </description>
+ <priority>3</priority>
+ <example>
+public class Foo
+{
+ public function bar( x : int ) : void
+ {
+ if ( x == 0 )
+ {
+ // VIOLATION
+ }
+ }
+}
+ </example>
+ </rule>
+
+</ruleset>
[35/51] [partial] Refactored the PMD Maven build - Adjusted the
directory structure - Fixed a lot of compile problems - Fixed the maven setup
- Made PMD build with Flexmojos 7.1.0 and Apache Flex 4.13.0 - Fixed a few
UnitTests
Posted by cd...@apache.org.
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/html-template/index.template.html
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/html-template/index.template.html b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/html-template/index.template.html
new file mode 100644
index 0000000..2146ca8
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/html-template/index.template.html
@@ -0,0 +1,121 @@
+<!--
+ 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.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!-- saved from url=(0014)about:internet -->
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+ <!--
+ Smart developers always View Source.
+
+ This application was built using Adobe Flex, an open source framework
+ for building rich Internet applications that get delivered via the
+ Flash Player or to desktops via Adobe AIR.
+
+ Learn more about Flex at http://flex.org
+ // -->
+ <head>
+ <title>${title}</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <!-- Include CSS to eliminate any default margins/padding and set the height of the html element and
+ the body element to 100%, because Firefox, or any Gecko based browser, interprets percentage as
+ the percentage of the height of its parent container, which has to be set explicitly. Initially,
+ don't display flashContent div so it won't show if JavaScript disabled.
+ -->
+ <style type="text/css" media="screen">
+ html, body { height:100%; }
+ body { margin:0; padding:0; overflow:auto; text-align:center;
+ background-color: ${bgcolor}; }
+ #flashContent { display:none; }
+ </style>
+
+ <!-- Enable Browser History by replacing useBrowserHistory tokens with two hyphens -->
+ <!-- BEGIN Browser History required section ${useBrowserHistory}>
+ <link rel="stylesheet" type="text/css" href="history/history.css" />
+ <script type="text/javascript" src="history/history.js"></script>
+ <!${useBrowserHistory} END Browser History required section -->
+
+ <script type="text/javascript" src="swfobject.js"></script>
+ <script type="text/javascript">
+ <!-- For version detection, set to min. required Flash Player version, or 0 (or 0.0.0), for no version detection. -->
+ var swfVersionStr = "${version_major}.${version_minor}.${version_revision}";
+ <!-- To use express install, set to playerProductInstall.swf, otherwise the empty string. -->
+ var xiSwfUrlStr = "${expressInstallSwf}";
+ var flashvars = {};
+ var params = {};
+ params.quality = "high";
+ params.bgcolor = "${bgcolor}";
+ params.allowscriptaccess = "sameDomain";
+ params.allowfullscreen = "true";
+ var attributes = {};
+ attributes.id = "${application}";
+ attributes.name = "${application}";
+ attributes.align = "middle";
+ swfobject.embedSWF(
+ "${swf}.swf", "flashContent",
+ "${width}", "${height}",
+ swfVersionStr, xiSwfUrlStr,
+ flashvars, params, attributes);
+ <!-- JavaScript enabled so display the flashContent div in case it is not replaced with a swf object. -->
+ swfobject.createCSS("#flashContent", "display:block;text-align:left;");
+ </script>
+ </head>
+ <body>
+ <!-- SWFObject's dynamic embed method replaces this alternative HTML content with Flash content when enough
+ JavaScript and Flash plug-in support is available. The div is initially hidden so that it doesn't show
+ when JavaScript is disabled.
+ -->
+ <div id="flashContent">
+ <p>
+ To view this page ensure that Adobe Flash Player version
+ ${version_major}.${version_minor}.${version_revision} or greater is installed.
+ </p>
+ <script type="text/javascript">
+ var pageHost = ((document.location.protocol == "https:") ? "https://" : "http://");
+ document.write("<a href='http://www.adobe.com/go/getflashplayer'><img src='"
+ + pageHost + "www.adobe.com/images/shared/download_buttons/get_flash_player.gif' alt='Get Adobe Flash player' /></a>" );
+ </script>
+ </div>
+
+ <noscript>
+ <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="${width}" height="${height}" id="${application}">
+ <param name="movie" value="${swf}.swf" />
+ <param name="quality" value="high" />
+ <param name="bgcolor" value="${bgcolor}" />
+ <param name="allowScriptAccess" value="sameDomain" />
+ <param name="allowFullScreen" value="true" />
+ <!--[if !IE]>-->
+ <object type="application/x-shockwave-flash" data="${swf}.swf" width="${width}" height="${height}">
+ <param name="quality" value="high" />
+ <param name="bgcolor" value="${bgcolor}" />
+ <param name="allowScriptAccess" value="sameDomain" />
+ <param name="allowFullScreen" value="true" />
+ <!--<![endif]-->
+ <!--[if gte IE 6]>-->
+ <p>
+ Either scripts and active content are not permitted to run or Adobe Flash Player version
+ ${version_major}.${version_minor}.${version_revision} or greater is not installed.
+ </p>
+ <!--<![endif]-->
+ <a href="http://www.adobe.com/go/getflashplayer">
+ <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash Player" />
+ </a>
+ <!--[if !IE]>-->
+ </object>
+ <!--<![endif]-->
+ </object>
+ </noscript>
+ </body>
+</html>
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/pom.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/pom.xml b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/pom.xml
new file mode 100644
index 0000000..6df39c6
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/pom.xml
@@ -0,0 +1,186 @@
+<!--
+
+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>
+
+ <parent>
+ <artifactId>flex-pmd-flex</artifactId>
+ <groupId>org.apache.flex.pmd</groupId>
+ <version>1.3-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>flex-pmd-violations-viewer</artifactId>
+ <packaging>swf</packaging>
+
+ <name>Adobe Flex PMD Violations viewer</name>
+ <description>Adobe Flex PMD Violations viewer</description>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>flex-pmd-flex-lib</artifactId>
+ <version>${project.version}</version>
+ <type>swc</type>
+ </dependency>
+
+ <!-- Cairngorm -->
+ <dependency>
+ <groupId>com.adobe.cairngorm</groupId>
+ <artifactId>cairngorm</artifactId>
+ <version>${cairngorm.version}</version>
+ <type>swc</type>
+ </dependency>
+
+ <!-- flex sdk dependencies -->
+
+ <dependency>
+ <groupId>org.apache.flex</groupId>
+ <artifactId>framework</artifactId>
+ <version>${flex.version}</version>
+ <type>pom</type>
+ </dependency>
+
+ <dependency>
+ <groupId>com.adobe.flash.framework</groupId>
+ <artifactId>playerglobal</artifactId>
+ <version>${flash-player.version}</version>
+ <type>swc</type>
+ </dependency>
+
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>flexunit-theme</artifactId>
+ <version>${project.version}</version>
+ <type>swc</type>
+ <scope>theme</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>com.adobe.cairngorm</groupId>
+ <artifactId>event-source</artifactId>
+ <version>${event-source.version}</version>
+ <type>swc</type>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <sourceDirectory>src/main/flex</sourceDirectory>
+ <testSourceDirectory>src/test/flex</testSourceDirectory>
+ <testResources>
+ <testResource>
+ <directory>src/test/resources</directory>
+ </testResource>
+ </testResources>
+
+ <plugins>
+
+ <plugin>
+ <groupId>net.flexmojos.oss</groupId>
+ <artifactId>flexmojos-maven-plugin</artifactId>
+ <version>${flex-mojos-plugin.version}</version>
+ <extensions>true</extensions>
+ <configuration>
+ <targetPlayer>${flash-player.version}.0.0</targetPlayer>
+ <defaultSizeWidth>1000</defaultSizeWidth>
+ <defaultSizeHeight>700</defaultSizeHeight>
+ <useNetwork>false</useNetwork>
+ </configuration>
+ <dependencies>
+ <!-- This handles a bug in maven which causes problems with flex resources -->
+ <dependency>
+ <groupId>net.flexmojos.oss</groupId>
+ <artifactId>flexmojos-threadlocaltoolkit-wrapper</artifactId>
+ <version>${flex-mojos-plugin.version}</version>
+ </dependency>
+ <!-- Without this FM will use the compiler configured in its
+ master pom, which will result in version conflicts -->
+ <dependency>
+ <groupId>org.apache.flex</groupId>
+ <artifactId>compiler</artifactId>
+ <version>${flex.version}</version>
+ <type>pom</type>
+ </dependency>
+ </dependencies>
+ </plugin>
+
+ <plugin>
+ <groupId>net.flexmojos.oss</groupId>
+ <artifactId>flexmojos-maven-plugin</artifactId>
+ <version>${flex-mojos-plugin.version}</version>
+ <extensions>true</extensions>
+ <executions>
+ <execution>
+ <goals>
+ <goal>wrapper</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <templateURI>folder:html-template</templateURI>
+ </configuration>
+ <dependencies>
+ <!-- This handles a bug in maven which causes problems with flex resources -->
+ <dependency>
+ <groupId>net.flexmojos.oss</groupId>
+ <artifactId>flexmojos-threadlocaltoolkit-wrapper</artifactId>
+ <version>${flex-mojos-plugin.version}</version>
+ </dependency>
+ <!-- Without this FM will use the compiler configured in its
+ master pom, which will result in version conflicts -->
+ <dependency>
+ <groupId>org.apache.flex</groupId>
+ <artifactId>compiler</artifactId>
+ <version>${flex.version}</version>
+ <type>pom</type>
+ </dependency>
+ </dependencies>
+ </plugin>
+
+ </plugins>
+ </build>
+
+ <repositories>
+ <repository>
+ <id>flexmojos-repository</id>
+ <url>http://repository.sonatype.org/content/groups/flexgroup/</url>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ </repository>
+ </repositories>
+ <pluginRepositories>
+ <pluginRepository>
+ <id>flexmojos-repository</id>
+ <url>http://repository.sonatype.org/content/groups/flexgroup/</url>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ </pluginRepository>
+ </pluginRepositories>
+
+</project>
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/Main.mxml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/Main.mxml b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/Main.mxml
new file mode 100644
index 0000000..5cf62bc
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/Main.mxml
@@ -0,0 +1,87 @@
+<?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:Application xmlns:control="com.adobe.ac.pmd.control.*"
+ xmlns:local="*"
+ xmlns:mx="http://www.adobe.com/2006/mxml"
+ xmlns:services="com.adobe.ac.pmd.services.*"
+ xmlns:view="com.adobe.ac.pmd.view.*"
+ styleName="flexUnitApplication"
+ horizontalScrollPolicy="off"
+ layout="vertical"
+ minHeight="800"
+ minWidth="1000"
+ verticalScrollPolicy="off"
+ horizontalAlign="center"
+ verticalAlign="top"
+ xmlns:source="com.adobe.ac.pmd.view.source.*">
+
+ <mx:Panel width="100%"
+ height="100%"
+ styleName="mainPanel"
+ >
+
+ <mx:HBox width="100%"
+ horizontalGap="0"
+ paddingRight="10"
+ verticalAlign="bottom"
+ >
+
+ <view:Title styleName="panelTitleStyle"
+ text="PMD Violations viewer"
+ />
+
+ <view:Title styleName="panelTitleSubStyle"
+ text="powered by Adobe Technical Services"
+ buttonMode="true"
+ click="navigateToURL( new URLRequest( 'http://www.adobe.com/consulting/' ) )"
+ mouseChildren="false"
+ useHandCursor="true"
+ />
+
+ <mx:Spacer width="100%"
+ />
+
+ <view:Title styleName="panelTitleSubStyle"
+ text="v{ Version.BUILD_NUMBER } built on { Version.BUILD_DATE } at { Version.BUILD_TIME}"
+ />
+
+ </mx:HBox>
+
+ <mx:HRule width="100%"
+ styleName="flexUnitHRule"
+ />
+
+ <mx:ViewStack id="viewStack"
+ width="100%"
+ height="100%"
+ >
+
+ <view:UploadView id="uploadView"
+ violationsLoaded="viewStack.selectedIndex = 1"
+ />
+
+ <view:ResultsView results="{ uploadView.model.violations }"
+ />
+
+ </mx:ViewStack>
+
+ </mx:Panel>
+
+</mx:Application>
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/TestRunner.mxml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/TestRunner.mxml b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/TestRunner.mxml
new file mode 100644
index 0000000..9015a16
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/TestRunner.mxml
@@ -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.
+
+-->
+<FlexUnitTestRunnerApplication xmlns:flexunit="flexunit.flexui.*"
+ xmlns:mx="http://www.adobe.com/2006/mxml"
+ testSuite="{ new AllTests() }"
+ xmlns="*"
+ />
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/model/CharacterPosition.as
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/model/CharacterPosition.as b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/model/CharacterPosition.as
new file mode 100644
index 0000000..3b6e0cd
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/model/CharacterPosition.as
@@ -0,0 +1,44 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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
+{
+ public class CharacterPosition
+ {
+ private var _line : int;
+ private var _column : int;
+
+ public function CharacterPosition( line : int, column : int )
+ {
+ _line = line;
+ _column = column;
+ }
+
+ [Bindable("unused")]
+ public function get line() : int
+ {
+ return _line;
+ }
+
+ [Bindable("unused")]
+ public function get column() : int
+ {
+ return _column;
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/model/File.as
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/model/File.as b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/model/File.as
new file mode 100644
index 0000000..c681a3c
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/model/File.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
+{
+ public class File
+ {
+ private var _path : String;
+
+ public function File( path : String )
+ {
+ _path = path;
+ }
+
+ public function get path() : String
+ {
+ return _path;
+ }
+
+ public function get shortPath() : String
+ {
+ var srcIndex : int = path.indexOf( "src" );
+ var result : String = path;
+
+ if ( srcIndex != -1 )
+ {
+ var regexp : RegExp = new RegExp( "/", "g" );
+ result = path.substr( srcIndex + 4 ).replace( regexp, "." );
+ }
+ return result;
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/model/Violation.as
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/model/Violation.as b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/model/Violation.as
new file mode 100644
index 0000000..3ca98fe
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/model/Violation.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
+{
+ public class Violation
+ {
+ private var _position : ViolationPosition;
+ private var _rule : Rule;
+ private var _violatedFile : File;
+
+ public function Violation( begin : CharacterPosition, end : CharacterPosition, violatedFilePath : String )
+ {
+ _position = new ViolationPosition( begin, end );
+ _rule = new Rule();
+ _violatedFile = new File( violatedFilePath );
+ }
+
+ [Bindable("unused")]
+ public function get rule() : Rule
+ {
+ return _rule;
+ }
+
+ [Bindable("unused")]
+ public function get position() : ViolationPosition
+ {
+ return _position;
+ }
+
+ [Bindable("unused")]
+ public function get shortPath() : String
+ {
+ return _violatedFile.shortPath;
+ }
+
+ [Bindable("unused")]
+ public function get filePath() : String
+ {
+ return _violatedFile.path;
+ }
+
+ [Bindable("unused")]
+ public function get shortRuleName() : String
+ {
+ return _rule.shortName;
+ }
+
+ [Bindable("unused")]
+ public function get beginLine() : Number
+ {
+ return _position.begin.line;
+ }
+
+ [Bindable("unused")]
+ public function get message() : String
+ {
+ return _rule.message;
+ }
+
+ [Bindable("unused")]
+ public function get priority() : ViolationPriority
+ {
+ return _rule.priority;
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/model/ViolationPosition.as
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/model/ViolationPosition.as b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/model/ViolationPosition.as
new file mode 100644
index 0000000..c08fa8e
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/model/ViolationPosition.as
@@ -0,0 +1,44 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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
+{
+ public class ViolationPosition
+ {
+ private var _begin : CharacterPosition;
+ private var _end : CharacterPosition;
+
+ public function ViolationPosition( begin : CharacterPosition, end : CharacterPosition )
+ {
+ _begin = begin;
+ _end = end;
+ }
+
+ [Bindable("unused")]
+ public function get begin() : CharacterPosition
+ {
+ return _begin;
+ }
+
+ [Bindable("unused")]
+ public function get end() : CharacterPosition
+ {
+ return _end;
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/FilterResults.mxml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/FilterResults.mxml b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/FilterResults.mxml
new file mode 100644
index 0000000..8037dc5
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/FilterResults.mxml
@@ -0,0 +1,67 @@
+<?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:HBox xmlns:mx="http://www.adobe.com/2006/mxml" width="100%"
+ horizontalAlign="center">
+
+ <mx:Script>
+ <![CDATA[
+ import com.adobe.ac.pmd.view.model.ResultsModel;
+ import com.adobe.ac.pmd.view.model.ResultsFilter;
+
+ [Bindable]
+ public var model : ResultsModel;
+ ]]>
+ </mx:Script>
+
+ <mx:FormItem
+ label="Show violation level"
+ >
+
+ <mx:ComboBox id="filter"
+ dataProvider="{ ResultsFilter.VIOLATION_PRIORITIES }"
+ selectedIndex="1"
+ labelField="name"
+ change="model.currentPriorityVisible = filter.selectedItem.level"
+ />
+
+ </mx:FormItem>
+
+ <mx:FormItem
+ label="Group by"
+ >
+
+ <mx:List id="groupBy"
+ allowMultipleSelection="true"
+ dataProvider="{ ResultsFilter.GROUPING_FIELDS }"
+ labelField="name"
+ allowDragSelection="true"
+ rowCount="{ ResultsFilter.GROUPING_FIELDS.length }"
+ selectedIndices="{ model.selectedGoupFieldIndices }"
+ change="model.selectedGroupFields = groupBy.selectedIndices"
+ />
+
+ </mx:FormItem>
+
+ <mx:Button
+ label="Filter"
+ click="model.filter()"
+ />
+
+</mx:HBox>
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/ResultsFormatter.as
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/ResultsFormatter.as b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/ResultsFormatter.as
new file mode 100644
index 0000000..e8d6520
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/ResultsFormatter.as
@@ -0,0 +1,41 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.view
+{
+ import com.adobe.ac.pmd.model.Violation;
+
+ import mx.controls.advancedDataGridClasses.AdvancedDataGridColumn;
+
+ public final class ResultsFormatter
+ {
+ public static function formatViolationsNumberOrBeginLine(
+ item : Object, // NO PMD
+ column : AdvancedDataGridColumn ) : String // NO PMD
+ {
+ var violation : Violation = item as Violation;
+ var result : String = "";
+
+ if ( violation )
+ {
+ result = violation.position.begin.line.toString();
+ }
+ return result;
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/ResultsView.mxml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/ResultsView.mxml b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/ResultsView.mxml
new file mode 100644
index 0000000..51abe8f
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/ResultsView.mxml
@@ -0,0 +1,142 @@
+<?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:VBox xmlns:model="com.adobe.ac.pmd.view.model.*"
+ xmlns:mx="http://www.adobe.com/2006/mxml"
+ xmlns:view="com.adobe.ac.pmd.view.*"
+ width="100%"
+ height="100%"
+ horizontalAlign="center"
+ verticalAlign="middle"
+ verticalScrollPolicy="off"
+ >
+
+ <mx:Script>
+ <![CDATA[
+ import com.adobe.ac.pmd.model.Violation;
+ import mx.collections.ArrayCollection;
+
+ public function set results( value : ArrayCollection ) : void
+ {
+ model.violations = value;
+ gc.refresh();
+ }
+
+ private function currentVisibilityChange() : void
+ {
+ gc.refresh();
+ }
+
+ private function groupLabelFunction( item : Object, column : AdvancedDataGridColumn ) : String // NO PMD
+ {
+ var label : String;
+
+ if ( item && item.children )
+ {
+ label = item[ gc.grouping.label ] + " (" + item.children.length + ")";
+ }
+ else
+ {
+ label = item[ column.dataField ];
+ }
+ return label;
+ }
+ ]]>
+ </mx:Script>
+
+ <mx:Resize
+ id="resize"
+ duration="200"
+ />
+
+ <model:ResultsModel id="model"
+ currentVisibilityChange="currentVisibilityChange()"
+ />
+
+ <mx:GroupingCollection id="gc"
+ source="{ model.violations }"
+ grouping="{ model.grouping }"
+ />
+
+ <view:Summary model="{ model }"
+ />
+
+ <mx:HRule width="100%"
+ styleName="flexUnitHRule"
+ />
+
+ <view:FilterResults model="{ model }"
+ />
+
+ <mx:HRule width="100%"
+ styleName="flexUnitHRule"
+ />
+
+ <mx:HBox width="100%"
+ height="100%"
+ >
+
+ <mx:AdvancedDataGrid id="dg"
+ width="100%"
+ height="100%"
+ dataProvider="{ gc }"
+ change="model.selectedViolation = dg.selectedItem as Violation"
+ groupLabelFunction="groupLabelFunction"
+ >
+
+ <mx:columns>
+
+ <mx:AdvancedDataGridColumn dataField="shortPath"
+ headerText=""
+ sortable="false"
+ />
+
+ <mx:AdvancedDataGridColumn width="100"
+ labelFunction="ResultsFormatter.formatViolationsNumberOrBeginLine"
+ dataField="beginLine"
+ headerText="Line"
+ sortable="false"
+ />
+
+ <mx:AdvancedDataGridColumn dataField="message"
+ dataTipField="message"
+ headerText="Message"
+ sortable="false"
+ />
+
+ <mx:AdvancedDataGridColumn width="100"
+ dataField="priority"
+ headerText="Priority"
+ sortable="false"
+ />
+
+ </mx:columns>
+
+ </mx:AdvancedDataGrid>
+
+ <view:SelectedViolation includeInLayout="{ model.selectedViolation != null }"
+ close="model.selectedViolation = null"
+ violation="{ model.selectedViolation }"
+ visible="{ model.selectedViolation != null }"
+ resizeEffect="{ resize }"
+ />
+
+ </mx:HBox>
+
+</mx:VBox>
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/SelectedViolation.mxml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/SelectedViolation.mxml b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/SelectedViolation.mxml
new file mode 100644
index 0000000..f5e8c2b
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/SelectedViolation.mxml
@@ -0,0 +1,151 @@
+<?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:Form xmlns:mx="http://www.adobe.com/2006/mxml"
+ height="100%"
+ paddingBottom="0"
+ paddingLeft="0"
+ paddingRight="10"
+ paddingTop="0"
+ >
+ <mx:Metadata>
+ [Event(name="close", type = "flash.events.Event")]
+ </mx:Metadata>
+
+ <mx:Script>
+ <![CDATA[
+ import com.adobe.ac.pmd.model.Violation;
+
+ public static const CLOSE : String = "close";
+
+ [Bindable]
+ public var violation : Violation;
+ ]]>
+ </mx:Script>
+
+ <mx:HBox verticalAlign="middle"
+ >
+
+ <mx:Button label=">"
+ toolTip="Close panel"
+ click="dispatchEvent( new Event( CLOSE ) )"
+ />
+
+ <mx:Label text="Selected violation"
+ fontWeight="bold"
+ />
+
+ </mx:HBox>
+
+ <mx:FormItem label="RuleName"
+ >
+
+ <mx:Label text="{ violation.rule.shortName }"
+ toolTip="{ violation.rule.name }"
+ />
+
+ </mx:FormItem>
+
+ <mx:FormItem label="RuleSet"
+ >
+
+ <mx:Label text="{ violation.rule.ruleset.name }"
+ />
+
+ </mx:FormItem>
+
+ <mx:FormItem label="Message"
+ >
+
+ <mx:Text width="300"
+ text="{ violation.rule.message }"
+ />
+
+ </mx:FormItem>
+
+ <mx:FormItem label="Priority"
+ >
+
+ <mx:Label text="{ violation.rule.priority.name }"
+ />
+
+ </mx:FormItem>
+
+ <mx:FormItem label="Position"
+ >
+
+ <mx:VBox>
+
+ <mx:Label text="{ violation.shortPath }"
+ toolTip="{ violation.filePath }"
+ />
+
+ <mx:HBox>
+
+ <mx:Label width="50"
+ text=""
+ />
+
+ <mx:Label width="50"
+ text="line"
+ />
+
+ <mx:Label width="50"
+ text="column"
+ />
+
+ </mx:HBox>
+
+ <mx:HBox>
+
+ <mx:Label width="50"
+ text="start"
+ />
+
+ <mx:Label width="50"
+ text="{ violation.position.begin.line }"
+ />
+
+ <mx:Label width="50"
+ text="{ violation.position.begin.column }"
+ />
+
+ </mx:HBox>
+
+ <mx:HBox>
+
+ <mx:Label width="50"
+ text="end"
+ />
+
+ <mx:Label width="50"
+ text="{ violation.position.end.line }"
+ />
+
+ <mx:Label width="50"
+ text="{ violation.position.end.column }"
+ />
+
+ </mx:HBox>
+
+ </mx:VBox>
+
+ </mx:FormItem>
+
+</mx:Form>
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/Summary.mxml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/Summary.mxml b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/Summary.mxml
new file mode 100644
index 0000000..c7eeefa
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/Summary.mxml
@@ -0,0 +1,69 @@
+<?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:HBox xmlns:model="com.adobe.ac.pmd.model.*"
+ xmlns:mx="http://www.adobe.com/2006/mxml"
+ >
+
+ <mx:Script>
+ <![CDATA[
+ import com.adobe.ac.pmd.view.model.ResultsModel;
+
+ [Bindable]
+ public var model : ResultsModel;
+ ]]>
+ </mx:Script>
+
+<!-- <mx:HBox>-->
+
+ <mx:FormItem label="Violations #"
+ >
+
+ <mx:Label text="{ model.violationsNumber }"
+ />
+
+ </mx:FormItem>
+
+ <mx:FormItem label="Errors #"
+ >
+
+ <mx:Label text="{ model.errors }"
+ />
+
+ </mx:FormItem>
+
+ <mx:FormItem label="Warnings #"
+ >
+
+ <mx:Label text="{ model.warnings }"
+ />
+
+ </mx:FormItem>
+
+ <mx:FormItem label="Informations #"
+ >
+
+ <mx:Label text="{ model.informations }"
+ />
+
+ </mx:FormItem>
+
+<!-- </mx:Form>-->
+
+</mx:HBox>
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/UploadView.mxml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/UploadView.mxml b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/UploadView.mxml
new file mode 100644
index 0000000..0a546b0
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/UploadView.mxml
@@ -0,0 +1,44 @@
+<?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:VBox xmlns:model="com.adobe.ac.pmd.view.model.*"
+ xmlns:mx="http://www.adobe.com/2006/mxml"
+ xmlns:view="com.adobe.ac.pmd.view.*"
+ width="100%"
+ minHeight="600"
+ bottom="0"
+ horizontalAlign="center"
+ top="0"
+ verticalAlign="middle"
+ creationComplete="model.tryToLoadFromParameters()"
+ >
+
+ <mx:Metadata>
+ [Event(name="violationsLoaded", type="flash.events.Event")]
+ </mx:Metadata>
+
+ <model:UploadModel id="model"
+ violationsLoaded="dispatchEvent( event.clone() )"
+ />
+
+ <mx:Button label="Upload your Pmd results"
+ click="model.load()"
+ />
+
+</mx:VBox>
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/model/ResultsFilter.as
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/model/ResultsFilter.as b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/model/ResultsFilter.as
new file mode 100644
index 0000000..2920f34
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/model/ResultsFilter.as
@@ -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.view.model
+{
+ import com.adobe.ac.pmd.model.Violation;
+ import com.adobe.ac.pmd.model.ViolationPriority;
+
+ import mx.collections.GroupingField;
+
+ public final class ResultsFilter
+ {
+ public static const VIOLATION_PRIORITIES : Array = [
+ { name: "All", level: 0 },
+ ViolationPriority.ERROR,
+ ViolationPriority.WARNING,
+ ViolationPriority.INFO ];
+ public static const FILE_PATH_GROUPFIELD : GroupingField = new GroupingField( "shortPath" );
+ public static const RULENAME_GROUPFIELD : GroupingField = new GroupingField( "shortRuleName" );
+
+ [ArrayElementType("mx.collections.GroupingField")]
+ public static const GROUPING_FIELDS : Array = [ FILE_PATH_GROUPFIELD, RULENAME_GROUPFIELD ];
+
+ public static var currentPriorityVisible : int = 1; // NO PMD AvoidUsingPublicStaticField
+
+ public static function filterViolation( value : Object ) : Boolean // NO PMD
+ {
+ if ( currentPriorityVisible == 0 )
+ {
+ return true;
+ }
+ return ( value as Violation ).rule.priority.level == currentPriorityVisible;
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/model/ResultsModel.as
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/model/ResultsModel.as b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/model/ResultsModel.as
new file mode 100644
index 0000000..5bef07f
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/model/ResultsModel.as
@@ -0,0 +1,138 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.view.model
+{
+ import com.adobe.ac.model.IPresentationModel;
+ import com.adobe.ac.pmd.model.Violation;
+
+ import flash.events.Event;
+ import flash.events.EventDispatcher;
+
+ import mx.collections.ArrayCollection;
+ import mx.collections.Grouping;
+ import mx.collections.GroupingField;
+
+ [Event( name="currentVisibilityChange", type = "flash.events.Event" )]
+ public class ResultsModel extends EventDispatcher implements IPresentationModel
+ {
+ private static const CURRENT_VISIBILITY_CHANGE : String = "currentVisibilityChange";
+ private static const VIOLATIONS_COMPUTED : String = "violationsComputed";
+ private static const SELECTED_GROUP_FIELDS_CHANGE : String = 'selectedGroupFieldsChange';
+
+ private var _grouping : Grouping;
+ private var _violations : ViolationsModel
+
+ [Bindable]
+ public var selectedViolation : Violation;
+
+ public function ResultsModel()
+ {
+ _violations = new ViolationsModel();
+ _grouping = new Grouping();
+ selectedGroupFields = [ 1 ];
+ }
+
+ public function filter() : void
+ {
+ _violations.filter();
+ dispatchEvent( new Event( CURRENT_VISIBILITY_CHANGE ) )
+ }
+
+ public function set selectedGroupFields( value : Array ) : void
+ {
+ _grouping.fields = [];
+ for each ( var indice : Number in value )
+ {
+ _grouping.fields.push( ResultsFilter.GROUPING_FIELDS[ indice ] );
+ }
+
+ dispatchEvent( new Event( SELECTED_GROUP_FIELDS_CHANGE ) );
+ }
+
+ [Bindable('selectedGroupFieldsChange')]
+ public function get selectedGoupFieldIndices() : Array
+ {
+ var indices : Array = [];
+ var currentIndexInPossibleFields : int;
+
+ for each ( var selectedField : GroupingField in _grouping.fields )
+ {
+ currentIndexInPossibleFields = 0;
+ for each ( var possibleField : GroupingField in ResultsFilter.GROUPING_FIELDS )
+ {
+ if ( selectedField == possibleField )
+ {
+ indices.push( currentIndexInPossibleFields );
+ break;
+ }
+ currentIndexInPossibleFields++;
+ }
+ }
+ return indices;
+ }
+
+ [Bindable("unused")]
+ public function get grouping() : Grouping
+ {
+ return _grouping;
+ }
+
+ public function set currentPriorityVisible( value : int ) : void
+ {
+ ResultsFilter.currentPriorityVisible = value;
+ }
+
+ public function set violations( value : ArrayCollection ) : void
+ {
+ _violations.violations = value;
+
+ dispatchEvent( new Event( VIOLATIONS_COMPUTED ) );
+ }
+
+ [Bindable( "violationsComputed" )]
+ public function get errors() : int
+ {
+ return _violations.errors;
+ }
+
+ [Bindable( "violationsComputed" )]
+ public function get warnings() : int
+ {
+ return _violations.warnings;
+ }
+
+ [Bindable( "violationsComputed" )]
+ public function get informations() : int
+ {
+ return _violations.informations;
+ }
+
+ [Bindable( "violationsComputed" )]
+ public function get violationsNumber() : int
+ {
+ return _violations.violations.source.length;
+ }
+
+ [Bindable( "violationsComputed" )]
+ public function get violations() : ArrayCollection
+ {
+ return _violations.violations;
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/model/UploadModel.as
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/model/UploadModel.as b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/model/UploadModel.as
new file mode 100644
index 0000000..41c17ee
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/model/UploadModel.as
@@ -0,0 +1,135 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.view.model
+{
+ import com.adobe.ac.model.IPresentationModel;
+ import com.adobe.ac.pmd.model.CharacterPosition;
+ import com.adobe.ac.pmd.model.Violation;
+ import com.adobe.ac.pmd.model.ViolationPriority;
+
+ import flash.events.Event;
+ import flash.events.EventDispatcher;
+ import flash.net.FileFilter;
+ import flash.net.FileReference;
+ import flash.utils.ByteArray;
+
+ import mx.collections.ArrayCollection;
+ import mx.core.Application;
+ import mx.rpc.events.ResultEvent;
+ import mx.rpc.http.mxml.HTTPService;
+
+ [Event( name="violationsLoaded", type = "flash.events.Event" )]
+
+ public class UploadModel extends EventDispatcher implements IPresentationModel
+ {
+ public static const VIOLATIONS_LOADED : String = "violationsLoaded";
+
+ [ArrayElementType( "flash.net.FileFilter" )]
+ private static const FILTERS : Array = [ new FileFilter( "Pmd results file", "pmd.xml" ) ];
+
+ [Bindable]
+ public var violations : ArrayCollection;
+
+ private var fileReference : FileReference;
+
+ public function UploadModel()
+ {
+ super();
+ }
+
+ public function tryToLoadFromParameters() : void
+ {
+ var report : String = Application.application.parameters.report;
+
+ if ( report != "" )
+ {
+ var request : HTTPService = new HTTPService();
+
+ request.useProxy = false;
+ request.url = report;
+ request.showBusyCursor = true;
+ request.resultFormat = "xml";
+ request.addEventListener( ResultEvent.RESULT, onDonwloadResult );
+ request.send();
+ }
+ }
+
+ public function load() : void
+ {
+ fileReference = new FileReference();
+ fileReference.browse( FILTERS );
+ fileReference.addEventListener( Event.SELECT, onSelect );
+ }
+
+ public function deserializeViolations( violationsXml : XML ) : ArrayCollection
+ {
+ var newViolations : ArrayCollection = new ArrayCollection();
+
+ for each ( var fileXml : XML in violationsXml.file )
+ {
+ for each ( var violationXml : XML in fileXml.violation )
+ {
+ newViolations.addItem( deserializeViolation( violationXml, fileXml.@name ) );
+ }
+ }
+ return newViolations;
+ }
+
+ private function deserializeViolation( violationXml : XML, filePath : String ) : Violation
+ {
+ var beginPosition : CharacterPosition = new CharacterPosition(
+ violationXml.@beginline,
+ violationXml.@begincolumn );
+ var endPosition : CharacterPosition = new CharacterPosition(
+ violationXml.@endline,
+ violationXml.@endcolumn );
+ var violation : Violation = new Violation( beginPosition, endPosition, filePath );
+
+ violation.rule.name = violationXml.@rule;
+ violation.rule.ruleset.name = violationXml.@ruleset
+ violation.rule.priority = ViolationPriority.create( violationXml.@priority );
+ violation.rule.message = violationXml.toString();
+
+ return violation;
+ }
+
+ private function onDonwloadResult( e : ResultEvent ) : void
+ {
+ violations = deserializeViolations( new XML( e.result ) );
+
+ dispatchEvent( new Event( VIOLATIONS_LOADED ) )
+ }
+
+ private function onSelect( e : Event ) : void
+ {
+ fileReference.addEventListener( Event.COMPLETE, onLoadComplete );
+ fileReference.load();
+ }
+
+ private function onLoadComplete( e : Event ) : void
+ {
+ var data : ByteArray = fileReference.data;
+ var xml : XML = new XML( data.readUTFBytes( data.bytesAvailable ) );
+
+ violations = deserializeViolations( xml );
+
+ dispatchEvent( new Event( VIOLATIONS_LOADED ) )
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/model/ViolationsModel.as
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/model/ViolationsModel.as b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/model/ViolationsModel.as
new file mode 100644
index 0000000..bfb459f
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/main/flex/com/adobe/ac/pmd/view/model/ViolationsModel.as
@@ -0,0 +1,84 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.view.model
+{
+ import com.adobe.ac.pmd.model.Violation;
+
+ import mx.collections.ArrayCollection;
+
+ public class ViolationsModel
+ {
+ private var _errors : int = 0;
+ private var _warnings : int = 0;
+ private var _informations : int = 0;
+ private var _violations : ArrayCollection;
+
+ public function ViolationsModel()
+ {
+ }
+
+ public function get violations() : ArrayCollection
+ {
+ return _violations;
+ }
+
+ public function get errors() : int
+ {
+ return _errors;
+ }
+
+ public function get warnings() : int
+ {
+ return _warnings;
+ }
+
+ public function get informations() : int
+ {
+ return _informations;
+ }
+
+ public function set violations( value : ArrayCollection ) : void
+ {
+ _violations = value;
+ _violations.filterFunction = ResultsFilter.filterViolation;
+
+ for each ( var violation : Violation in _violations )
+ {
+ if ( violation.rule.priority.level == 1 )
+ {
+ _errors++;
+ }
+ else if ( violation.rule.priority.level == 3 )
+ {
+ _warnings++;
+ }
+ else if ( violation.rule.priority.level == 5 )
+ {
+ _informations++;
+ }
+ }
+ _violations.refresh();
+ }
+
+ public function filter() : void
+ {
+ _violations.refresh();
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/test/flex/AllTests.as
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/test/flex/AllTests.as b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/test/flex/AllTests.as
new file mode 100644
index 0000000..4d2e642
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex/flex-pmd-violations-viewer/src/test/flex/AllTests.as
@@ -0,0 +1,30 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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 flex - pmd - violations - viewer.src.test.flex
+{
+ import flexunit.framework.TestSuite;
+
+ public class AllTests extends TestSuite
+ {
+ public function AllTests()
+ {
+ super();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flexunit-theme/pom.xml
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flexunit-theme/pom.xml b/FlexPMD/flex-pmd-flex/flexunit-theme/pom.xml
new file mode 100644
index 0000000..1ffe2f4
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex/flexunit-theme/pom.xml
@@ -0,0 +1,91 @@
+<!--
+
+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>
+
+ <parent>
+ <artifactId>flex-pmd-flex</artifactId>
+ <groupId>org.apache.flex.pmd</groupId>
+ <version>1.3-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>flexunit-theme</artifactId>
+ <packaging>swc</packaging>
+
+ <name>FlexUnit theme</name>
+ <description>Adobe FlexUnit theme</description>
+
+ <dependencies>
+
+ <!-- flex sdk dependencies -->
+
+ <dependency>
+ <groupId>org.apache.flex</groupId>
+ <artifactId>framework</artifactId>
+ <version>${flex.version}</version>
+ <type>pom</type>
+ </dependency>
+
+ <dependency>
+ <groupId>com.adobe.flash.framework</groupId>
+ <artifactId>playerglobal</artifactId>
+ <version>${flash-player.version}</version>
+ <type>swc</type>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <sourceDirectory>src/main/resources</sourceDirectory>
+ <resources>
+ <resource>
+ <directory>src/main/resources</directory>
+ </resource>
+ </resources>
+
+ <plugins>
+ <plugin>
+ <groupId>net.flexmojos.oss</groupId>
+ <artifactId>flexmojos-maven-plugin</artifactId>
+ <version>${flex-mojos-plugin.version}</version>
+ <extensions>true</extensions>
+ <configuration>
+ <targetPlayer>${flash-player.version}</targetPlayer>
+ </configuration>
+ <dependencies>
+ <!-- This handles a bug in maven which causes problems with flex resources -->
+ <dependency>
+ <groupId>net.flexmojos.oss</groupId>
+ <artifactId>flexmojos-threadlocaltoolkit-wrapper</artifactId>
+ <version>${flex-mojos-plugin.version}</version>
+ </dependency>
+ <!-- Without this FM will use the compiler configured in its
+ master pom, which will result in version conflicts -->
+ <dependency>
+ <groupId>org.apache.flex</groupId>
+ <artifactId>compiler</artifactId>
+ <version>${flex.version}</version>
+ <type>pom</type>
+ </dependency>
+ </dependencies>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/assets/cancelledIcon.png
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/assets/cancelledIcon.png b/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/assets/cancelledIcon.png
new file mode 100644
index 0000000..9bca099
Binary files /dev/null and b/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/assets/cancelledIcon.png differ
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/assets/export.png
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/assets/export.png b/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/assets/export.png
new file mode 100644
index 0000000..fd4bfcd
Binary files /dev/null and b/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/assets/export.png differ
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/assets/icon_tool_trash.png
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/assets/icon_tool_trash.png b/FlexPMD/flex-pmd-flex/flexunit-theme/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/flexunit-theme/src/main/resources/assets/icon_tool_trash.png differ
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/assets/icon_tool_trash2.png
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/assets/icon_tool_trash2.png b/FlexPMD/flex-pmd-flex/flexunit-theme/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/flexunit-theme/src/main/resources/assets/icon_tool_trash2.png differ
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/assets/todoLogo.png
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/assets/todoLogo.png b/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/assets/todoLogo.png
new file mode 100644
index 0000000..a314b8d
Binary files /dev/null and b/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/assets/todoLogo.png differ
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/assets/todoLogo_big.png
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/assets/todoLogo_big.png b/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/assets/todoLogo_big.png
new file mode 100644
index 0000000..bb89f68
Binary files /dev/null and b/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/assets/todoLogo_big.png differ
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/css/default.css
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/css/default.css b/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/css/default.css
new file mode 100644
index 0000000..2e79328
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/css/default.css
@@ -0,0 +1,285 @@
+/*
+ * 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.
+ */
+Application {
+ backgroundColor: #3872b2;
+ backgroundGradientColors: #3872b2, #0c1a3d;
+ backgroundGradientAlphas: 1, 1;
+ themeColor: #0c1a3d;
+ color: #444444;
+ fontFamily: "Myriad Pro";
+ fontSize: 12;
+ verticalScrollBarStyleName: flexUnitScrollBar;
+ horizontalScrollBarStyleName: flexUnitScrollBar;
+ modal-transparency-blur: 0;
+ modal-transparency: 0;
+}
+
+ToolTip
+{
+ fontFamily: "Myriad Pro";
+ leading: 5;
+ fontSize: 11;
+ backgroundColor: #DFEAF4;
+}
+
+ScrollBar
+{
+ downArrowDisabledSkin: Embed( source="skins/VScrollBar_downArrowDisabledSkin.png" );
+ downArrowDownSkin: Embed( source="skins/VScrollBar_downArrowDownSkin.png" );
+ downArrowOverSkin: Embed( source="skins/VScrollBar_downArrowOverSkin.png" );
+ downArrowUpSkin: Embed( source="skins/VScrollBar_downArrowUpSkin.png" );
+ thumbIcon: Embed( source="skins/VScrollBar_thumbIcon.png" );
+ trackSkin: Embed( source="skins/VScrollBar_trackSkin.png" );
+ upArrowDisabledSkin: Embed( source="skins/VScrollBar_upArrowDisabledSkin.png" );
+ upArrowDownSkin: Embed( source="skins/VScrollBar_upArrowDownSkin.png" );
+ upArrowOverSkin: Embed( source="skins/VScrollBar_upArrowOverSkin.png" );
+ upArrowUpSkin: Embed( source="skins/VScrollBar_upArrowUpSkin.png" );
+ thumbDownSkin: Embed(
+ source="skins/VScrollBar_thumbDownSkin.png",
+ scaleGridLeft="1", scaleGridTop="5",
+ scaleGridRight="8", scaleGridBottom="44" );
+ thumbOverSkin: Embed(
+ source="skins/VScrollBar_thumbOverSkin.png",
+ scaleGridLeft="1", scaleGridTop="5",
+ scaleGridRight="8", scaleGridBottom="44" );
+ thumbUpSkin: Embed(
+ source="skins/VScrollBar_thumbUpSkin.png",
+ scaleGridLeft="1", scaleGridTop="5",
+ scaleGridRight="8", scaleGridBottom="44" );
+}
+
+/* Embedded Fonts */
+ /*@font-face {
+ font-family: "Myriad Pro SemiCond";
+ src: url( "fonts/fonts.swf" );
+}*/
+/* CSS file used for component-level compilation */
+
+/* Embedded Fonts */
+/* Font for titles */
+/*@font-face {
+ font-family: "Myriad Pro SemiCond";
+ src: url("fonts/fonts.swf");
+}*/
+
+/* Font for anything else */
+/*@font-face {
+ font-family: "Myriad Pro";
+ src: url("fonts/fonts.swf");
+}*/
+
+/*@font-face {
+ font-family: "Myriad Pro";
+ font-weight: bold;
+ src: url("fonts/fonts.swf");
+}*/
+
+ScrollBar
+{
+ downArrowDisabledSkin: Embed(source="skins/VScrollBar_downArrowDisabledSkin.png");
+ downArrowDownSkin: Embed(source="skins/VScrollBar_downArrowDownSkin.png");
+ downArrowOverSkin: Embed(source="skins/VScrollBar_downArrowOverSkin.png");
+ downArrowUpSkin: Embed(source="skins/VScrollBar_downArrowUpSkin.png");
+ thumbIcon: Embed(source="skins/VScrollBar_thumbIcon.png");
+ trackSkin: Embed(source="skins/VScrollBar_trackSkin.png");
+ upArrowDisabledSkin: Embed(source="skins/VScrollBar_upArrowDisabledSkin.png");
+ upArrowDownSkin: Embed(source="skins/VScrollBar_upArrowDownSkin.png");
+ upArrowOverSkin: Embed(source="skins/VScrollBar_upArrowOverSkin.png");
+ upArrowUpSkin: Embed(source="skins/VScrollBar_upArrowUpSkin.png");
+ thumbDownSkin: Embed(
+ source="skins/VScrollBar_thumbDownSkin.png",
+ scaleGridLeft="1", scaleGridTop="5",
+ scaleGridRight="8", scaleGridBottom="44" );
+ thumbOverSkin: Embed(
+ source="skins/VScrollBar_thumbOverSkin.png",
+ scaleGridLeft="1", scaleGridTop="5",
+ scaleGridRight="8", scaleGridBottom="44" );
+ thumbUpSkin: Embed(
+ source="skins/VScrollBar_thumbUpSkin.png",
+ scaleGridLeft="1", scaleGridTop="5",
+ scaleGridRight="8", scaleGridBottom="44" );
+}
+
+Button
+{
+ horizontalGap: -1;
+ firstButtonStyleName: "firstButtonBarButton";
+ lastButtonStyleName: "lastButtonBarButton";
+}
+
+.mainPanel {
+ header-height: 0;
+ vertical-gap: 2;
+ borderSkin: Embed(
+ source="skins/Panel_borderSkin.png",
+ scaleGridLeft="12", scaleGridTop="31",
+ scaleGridRight="265", scaleGridBottom="189" );
+ padding-top: 20;
+ padding-left: 8;
+ padding-right: 8;
+}
+
+.onlineIcon {
+ background-color: #26DE26;
+ corner-radius: 7;
+ borderThickness: 0;
+ borderStyle: solid;
+}
+
+.offlineIcon {
+ background-color: #D32929;
+ corner-radius: 7;
+ borderStyle: solid;
+ borderThickness: 0;
+}
+
+HRule {
+ strokeColor: #b9b9b9;
+ strokeWidth: 2;
+ shadowColor: #FFFFFF;
+}
+
+.FormItemLabel {
+ color: #777777;
+}
+
+.FormItemValue {
+ color: #444444;
+}
+
+.panelTitleStyle {
+ fontFamily: "Myriad Pro SemiCond";
+ fontSize: 24;
+ textIndent: 20;
+}
+
+.statusPanelTitleSubStyle {
+ fontFamily: "Myriad Pro SemiCond";
+ fontSize: 16;
+ horizontal-center: right;
+ paddingLeft: 15;
+}
+
+.acPanelTitleSubStyle {
+ fontFamily: "Myriad Pro SemiCond";
+ fontSize: 16;
+ horizontal-center: right;
+ color: #C20D2B;
+}
+
+.panelTitleSubStyle {
+ fontFamily: "Myriad Pro SemiCond";
+ fontSize: 16;
+ horizontal-center: right;
+}
+
+.lowerPanelTitleSubStyle{
+ fontFamily: "Myriad Pro SemiCond";
+ fontSize: 16;
+ textIndent: 20;
+}
+
+.panelTitleLogo {
+ background-image:Embed(source="assets/todoLogo_big.png");
+ backgroundAlpha: 1.0;
+ backgroundSize: auto;
+}
+
+.firstButtonBarButton
+{
+ disabledSkin: Embed(
+ source="skins/ButtonBarFirstButton_disabledSkin.png",
+ scaleGridLeft="6", scaleGridTop="6",
+ scaleGridRight="40", scaleGridBottom="16" );
+ downSkin: Embed(
+ source="skins/ButtonBarFirstButton_downSkin.png",
+ scaleGridLeft="6", scaleGridTop="6",
+ scaleGridRight="40", scaleGridBottom="16" );
+ overSkin: Embed(
+ source="skins/ButtonBarFirstButton_overSkin.png",
+ scaleGridLeft="6", scaleGridTop="6",
+ scaleGridRight="40", scaleGridBottom="16" );
+ selectedDisabledSkin: Embed(
+ source="skins/ButtonBarFirstButton_selectedDisabledSkin.png",
+ scaleGridLeft="6", scaleGridTop="6",
+ scaleGridRight="40", scaleGridBottom="16" );
+ selectedDownSkin: Embed(
+ source="skins/ButtonBarFirstButton_downSkin.png",
+ scaleGridLeft="6", scaleGridTop="6",
+ scaleGridRight="40", scaleGridBottom="16" );
+ selectedOverSkin: Embed(
+ source="skins/ButtonBarFirstButton_overSkin.png",
+ scaleGridLeft="6", scaleGridTop="6",
+ scaleGridRight="40", scaleGridBottom="16" );
+ selectedUpSkin: Embed(
+ source="skins/ButtonBarFirstButton_selectedUpSkin.png",
+ scaleGridLeft="6", scaleGridTop="6",
+ scaleGridRight="40", scaleGridBottom="16" );
+ upSkin: Embed(
+ source="skins/ButtonBarFirstButton_upSkin.png",
+ scaleGridLeft="6", scaleGridTop="6",
+ scaleGridRight="40", scaleGridBottom="16" );
+}
+
+.lastButtonBarButton
+{
+ disabledSkin: Embed(
+ source="skins/ButtonBarLastButton_disabledSkin.png",
+ scaleGridLeft="6", scaleGridTop="6",
+ scaleGridRight="40", scaleGridBottom="16" );
+ downSkin: Embed(
+ source="skins/ButtonBarLastButton_downSkin.png",
+ scaleGridLeft="6", scaleGridTop="6",
+ scaleGridRight="40", scaleGridBottom="16" );
+ overSkin: Embed(
+ source="skins/ButtonBarLastButton_overSkin.png",
+ scaleGridLeft="6", scaleGridTop="6",
+ scaleGridRight="40", scaleGridBottom="16" );
+ selectedDisabledSkin: Embed(
+ source="skins/ButtonBarLastButton_disabledSkin.png",
+ scaleGridLeft="6", scaleGridTop="6",
+ scaleGridRight="40", scaleGridBottom="16" );
+ selectedDownSkin: Embed(
+ source="skins/ButtonBarLastButton_downSkin.png",
+ scaleGridLeft="6", scaleGridTop="6",
+ scaleGridRight="40", scaleGridBottom="16" );
+ selectedOverSkin: Embed(
+ source="skins/ButtonBarLastButton_overSkin.png",
+ scaleGridLeft="6", scaleGridTop="6",
+ scaleGridRight="40", scaleGridBottom="16" );
+ selectedUpSkin: Embed(
+ source="skins/ButtonBarLastButton_selectedUpSkin.png",
+ scaleGridLeft="6", scaleGridTop="6",
+ scaleGridRight="40", scaleGridBottom="16" );
+ upSkin: Embed(
+ source="skins/ButtonBarLastButton_upSkin.png",
+ scaleGridLeft="6", scaleGridTop="6",
+ scaleGridRight="40", scaleGridBottom="16" );
+}
+Panel
+{
+ borderThicknessLeft: 4;
+ borderThicknessRight: 4;
+ roundedBottomCorners: true;
+ borderAlpha: 0.7;
+ paddingTop: 20;
+ paddingBottom: 20;
+ paddingLeft: 20;
+ paddingRight: 20;
+}
+
+
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarButton_disabledSkin.png
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarButton_disabledSkin.png b/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarButton_disabledSkin.png
new file mode 100644
index 0000000..09c33cb
Binary files /dev/null and b/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarButton_disabledSkin.png differ
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarButton_downSkin.png
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarButton_downSkin.png b/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarButton_downSkin.png
new file mode 100644
index 0000000..bd8646c
Binary files /dev/null and b/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarButton_downSkin.png differ
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarButton_overSkin.png
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarButton_overSkin.png b/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarButton_overSkin.png
new file mode 100644
index 0000000..349a753
Binary files /dev/null and b/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarButton_overSkin.png differ
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarButton_selectedDisabledSkin.png
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarButton_selectedDisabledSkin.png b/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarButton_selectedDisabledSkin.png
new file mode 100644
index 0000000..f73df16
Binary files /dev/null and b/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarButton_selectedDisabledSkin.png differ
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarButton_selectedUpSkin.png
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarButton_selectedUpSkin.png b/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarButton_selectedUpSkin.png
new file mode 100644
index 0000000..16c9a95
Binary files /dev/null and b/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarButton_selectedUpSkin.png differ
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarButton_upSkin.png
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarButton_upSkin.png b/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarButton_upSkin.png
new file mode 100644
index 0000000..95dc22d
Binary files /dev/null and b/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarButton_upSkin.png differ
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarFirstButton_disabledSkin.png
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarFirstButton_disabledSkin.png b/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarFirstButton_disabledSkin.png
new file mode 100644
index 0000000..4366eea
Binary files /dev/null and b/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarFirstButton_disabledSkin.png differ
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarFirstButton_downSkin.png
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarFirstButton_downSkin.png b/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarFirstButton_downSkin.png
new file mode 100644
index 0000000..ad95d69
Binary files /dev/null and b/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarFirstButton_downSkin.png differ
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarFirstButton_overSkin.png
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarFirstButton_overSkin.png b/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarFirstButton_overSkin.png
new file mode 100644
index 0000000..c15bf1f
Binary files /dev/null and b/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarFirstButton_overSkin.png differ
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarFirstButton_selectedDisabledSkin.png
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarFirstButton_selectedDisabledSkin.png b/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarFirstButton_selectedDisabledSkin.png
new file mode 100644
index 0000000..b044701
Binary files /dev/null and b/FlexPMD/flex-pmd-flex/flexunit-theme/src/main/resources/skins/ButtonBarFirstButton_selectedDisabledSkin.png differ
[37/51] [partial] Refactored the PMD Maven build - Adjusted the
directory structure - Fixed a lot of compile problems - Fixed the maven setup
- Made PMD build with Flexmojos 7.1.0 and Apache Flex 4.13.0 - Fixed a few
UnitTests
Posted by cd...@apache.org.
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e43b7a87/FlexPMD/flex-pmd-flex/flex-pmd-ruleset-creator/src/main/flex/assets/arrow.ai
----------------------------------------------------------------------
diff --git a/FlexPMD/flex-pmd-flex/flex-pmd-ruleset-creator/src/main/flex/assets/arrow.ai b/FlexPMD/flex-pmd-flex/flex-pmd-ruleset-creator/src/main/flex/assets/arrow.ai
new file mode 100644
index 0000000..7331f5b
--- /dev/null
+++ b/FlexPMD/flex-pmd-flex/flex-pmd-ruleset-creator/src/main/flex/assets/arrow.ai
@@ -0,0 +1,1121 @@
+%PDF-1.5
%����
+1 0 obj
<</Metadata 2 0 R/OCProperties<</D<</ON[5 0 R]/Order 6 0 R/RBGroups[]>>/OCGs[5 0 R]>>/Pages 3 0 R/Type/Catalog>>
endobj
2 0 obj
<</Length 43191/Subtype/XML/Type/Metadata>>stream
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.2-c063 53.352624, 2008/07/30-18:05:41 ">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about=""
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <dc:format>application/pdf</dc:format>
+ <dc:title>
+ <rdf:Alt>
+ <rdf:li xml:lang="x-default">arrow</rdf:li>
+ </rdf:Alt>
+ </dc:title>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xmp="http://ns.adobe.com/xap/1.0/"
+ xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/">
+ <xmp:CreatorTool>Adobe Illustrator CS4</xmp:CreatorTool>
+ <xmp:CreateDate>2009-12-09T09:41:16+01:00</xmp:CreateDate>
+ <xmp:ModifyDate>2009-12-09T09:41:17+01:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2009-12-09T09:41:17+01:00</xmp:MetadataDate>
+ <xmp:Thumbnails>
+ <rdf:Alt>
+ <rdf:li rdf:parseType="Resource">
+ <xmpGImg:width>256</xmpGImg:width>
+ <xmpGImg:height>196</xmpGImg:height>
+ <xmpGImg:format>JPEG</xmpGImg:format>
+ <xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAxAEAAwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FX
Yq7
FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F
XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX
Yq7FXYq7FXYq7FXYq7FXYq7FXVxV1cVdXFXVxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku
xV2KuxV2KuxV2KuxV2KuxV2KuxV1cVaxV2KuxV2KuxV2Kt1xV2KuxV2KuxV2KuxV2KuxV2KuxV2K
uxV2KuxV2KuxV2KuxV2KuxV2KuxVquKuxV1cVariricVarirq4q2Dirq4q3XFXYq7FW8VdirsVdi
rsVdirsVdirsVdirsVdirsVdirsVdirsVdirRxV2KurirROKrScVdXFWiRirq4q6uKuBGKt1xVwO
KrgcVbrirsVcMVbxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVrFXYq1XFWq4qtJxVonFVtffF
Wiw8cVdy98Va5jxxVvl74q3X3xVcG98VbBxVdXFW64q3irsVbxV2KuxV2KuxV2KuxV2KuxV2KuxV
2KuxVrFXYq1iq0nFVpOKrSffFVpb3xVaW98VSrUNftbaqRn1ph+yv2R8zkxAlUPp/mRJT6d3SJyd
pB9j6a9MModypyHB3BHtlarg3virfL3xVcG98VXhtuuKrgxxVcDiq7FW8VdireKuxV2KuxV2KuxV
2KuxV2KuxV2KtVxV2KtHFVpOKrScVWE4qsYnFUFf6pa2a/vW+MjaMbsfowiJKsbv9cu7qqKfSh/k
XqfmctEAEJdk1diqP07WLi0IQ/vIP5D2/wBU5GUbVklrfQXUfOFgfFe4+YykikokMcCrgxxVUVji
q9Tiq8HFVwOKrsVbx
V1cVbxV2KuxV2KuxV2KuxV2KuxV2KtYq44qtOKrScVWMcVQ9zdQQRmSZwiD
uf4YQLVjmoeZJJKpaD01/wB+H7R+Q7ZYId6ElZmZizEsx3JO5OWK1irsVdirsVXwzSwyCSJijjuM
BFqyDT9cimpHPSOXoG/ZP9MqlCkpsrZBVRG6YqqKcVVAcVXjFV4xVuuKt4q3irsVdirsVdirsVdi
rsVdirjirWKtHFVpOKqbsqgsx4qBUk7AYqkOpeZoY6x2g9WQf7sP2B8vHLBDvVjlzdXFzJ6k7l29
+g+Q7ZYBSFLCrsVdirsVdirsVdirsVTLTtamtqRy1kh6U/aX5ZCULVkdrdQ3EYeJuSn8PnlRFJRS
nAqoDiqoDiq4YquGKrsVbGKuxV2KuxV2KuxV2KuxV2KuOKtYq0cVUZ2kWNmiT1JB9lK8a/ScQrGd
RsvMl6T6qAR9oUdQv69/py0GIVL20HVl625+hkP6jkuMIU20fU1NDbt9FD+o48QVYdNvxWtu+3+S
cPEFQ7KysVYFWGxB2Iwq1irsVdirsVdirsVdiqrbXU9tIJIXKt38CPAjARasm0zW4LqkclIp/wCU
9G/1T/DKpQpKbKcgqoDiqoMVXDFVwxV2Kt4q7FXYq7FXYq7FXYq7FXHFWsVaOKrDiq04qpNiqm2K
qLjrirD9QNb64/4yN+BzIjyQh8KuxV2KuxVEaeoa8jUjkCTUHfscjLkrIPqlqesKH/Yj+mU2Url0
+yPWBPuGPEVXDStPYbwL+Iw8RVsaJpbUrB9zMP1HHjKplEiogRa8VFBUkn7zvkVVl64qvXriq/FV
wxV2Kt4q7FXYq7FXYq7FXYq7FXHFWsVaOKrSMVWHFVNhiqkwxVTcdcVYXeGt5OfGRz/wxzIHJCjh
V2KuxV2KovSRW/j9uX/ETkZ8lZIBlCV6jFVZB0xVVU
YqqqMVVBiq8DFV1MVXDFXYq3irsVdirsVd
irsVdirsVccVaxVqmKtHFVhxVYcVU2U4qpsDviqDk02yYljAhLbk03qcPEVUG0mwP+6V+iow8RVT
bR9PP+6R9DMP448ZVYdGsa7JT/ZN/XHjKrDodn4MPpw8ZVUttJt4JRKhbktaVO24p4YDMlUeFORV
UVTiqoo6YqqKMVVAMVVBiq8DFVwxVvFWxirsVdirsVdirsVdirsVdirsVaxV2KtYqtIxVYRiqxhi
qxl9sVWFfbFVMr7YqsK+2KtcPbFWuHtirYT2xVeF9sVXqp8MVXqvtiqoq+2KrwMVXAYqvAxVsYq3
irYxV2KuxV2KuxV2KuxV2KuxV2KuOKtYq7FWqYqtIxVYRiq0j2xVYV9sVWlR4YqsKDwxVrh7Yq7j
7Yq7gPDFVwQeGKrwvtiq4L7YqvAxVcBiq6mKrhireKuxVvFXYq7FXYq7FXYq7FXYq7FXYq7FXEYq
1irqYqtxVojFVpGKtEDFVpUYqtKjFWuIxV3AYq7iMVbCjFVwAxVcBiq4DFVwGKtjFW8VdireKuxV
2KuxV2KuxV2KuxV2KuxV2KuxV2KupirWKuxVqmKtHFWiMVapirXHFWqYq6mKupirdMVbAxVsDFW6
Yq3TFW8VdireKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV1MVaxV1MVapirRGKupirqYq7j
irqYq6mKt0xV1MVbxV2Kt0xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV1MVdTFW
sVdirqYq6mKupirqYq6mKuxV2Kt0xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2
KuxV2KuxV1MVdTFXUxVrFXYq3TFXUxV1MVdirsVdirsVdirsVdirsVdirsVdirsVdir
sVdirsVdi
rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir
sVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs
VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV
f//Z</xmpGImg:image>
+ </rdf:li>
+ </rdf:Alt>
+ </xmp:Thumbnails>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
+ xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
+ xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#">
+ <xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass>
+ <xmpMM:OriginalDocumentID>uuid:65E6390686CF11DBA6E2D887CEACB407</xmpMM:OriginalDocumentID>
+ <xmpMM:DocumentID>xmp.did:FB7F117407206811BFE2E9F5A7A531BF</xmpMM:DocumentID>
+ <xmpMM:InstanceID>uuid:c886d873-14bc-3a47-a6cc-e5a29eac31e9</xmpMM:InstanceID>
+ <xmpMM:History>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/pdf to <unknown></stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:D47F11740720681191099C3B601C4548</stEvt:instanceID>
+ <stEvt:when>2008-04-17T14:19:21+05:30</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/pdf to <unknown></stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/pdf to <unknown></stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FD7F11740720681197C1BF14D1759E83</stEvt:instanceID>
+ <stEvt:when>2008-05-16T17:01:20-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F77F117407206811BC18AC99CBA78E83</stEvt:instanceID>
+ <stEvt:when>2008-05-19T18:10:15-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FB7F117407206811B628E3BF27C8C41B</stEvt:instanceID>
+ <stEvt:when>2008-05-22T14:26:44-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:08C3BD25102DDD1181B594070CEB88D9</stEvt:instanceID>
+ <stEvt:when>2008-05-28T16:51:46-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F77F11740720681192B0DFFC927805D7</stEvt:instanceID>
+ <stEvt:when>2008-05-30T21:26:38-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F87F11740720681192B0DFFC927805D7</stEvt:instanceID>
+ <stEvt:when>2008-05-30T21:27-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F97F1174072068119098B097FDA39BEF</stEvt:instanceID>
+ <stEvt:when>2008-06-02T13:26:10-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FB7F117407206811BFE2E9F5A7A531BF</stEvt:instanceID>
+ <stEvt:when>2009-12-09T09:41:11+01:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>/</stEvt:changed>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpMM:History>
+ <xmpMM:DerivedFrom rdf:parseType="Resource">
+ <stRef:instanceID>uuid:32300939-b1c4-8440-b812-b255b7b0d326</stRef:instanceID>
+ <stRef:documentID>xmp.did:F97F1174072068119098B097FDA39BEF</stRef:documentID>
+ <stRef:originalDocumentID>uuid:65E6390686CF11DBA6E2D887CEACB407</stRef:originalDocumentID>
+ <stRef:renditionClass>proof:pdf</stRef:renditionClass>
+ </xmpMM:DerivedFrom>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/">
+ <illustrator:StartupProfile>Web</illustrator:StartupProfile>
+ <illustrator:Type>Document</illustrator:Type>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/"
+ xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#"
+ xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/">
+ <xmpTPg:NPages>1</xmpTPg:NPages>
+ <xmpTPg:HasVisibleTransparency>True</xmpTPg:HasVisibleTransparency>
+ <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint>
+ <xmpTPg:MaxPageSize rdf:parseType="Resource">
+ <stDim:w>800.000000</stDim:w>
+ <stDim:h>600.000000</stDim:h>
+ <stDim:unit>Pixels</stDim:unit>
+ </xmpTPg:MaxPageSize>
+ <xmpTPg:PlateNames>
+ <rdf:Seq>
+ <rdf:li>Cyan</rdf:li>
+ <rdf:li>Magenta</rdf:li>
+ <rdf:li>Yellow</rdf:li>
+ <rdf:li>Black</rdf:li>
+ </rdf:Seq>
+ </xmpTPg:PlateNames>
+ <xmpTPg:SwatchGroups>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:groupName>Default Swatch Group</xmpG:groupName>
+ <xmpG:groupType>0</xmpG:groupType>
+ <xmpG:Colorants>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>White</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>255</xmpG:red>
+ <xmpG:green>255</xmpG:green>
+ <xmpG:blue>255</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>Black</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>0</xmpG:red>
+ <xmpG:green>0</xmpG:green>
+ <xmpG:blue>0</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>RGB Red</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>255</xmpG:red>
+ <xmpG:green>0</xmpG:green>
+ <xmpG:blue>0</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>RGB Yellow</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>255</xmpG:red>
+ <xmpG:green>255</xmpG:green>
+ <xmpG:blue>0</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>RGB Green</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>0</xmpG:red>
+ <xmpG:green>255</xmpG:green>
+ <xmpG:blue>0</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>RGB Cyan</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>0</xmpG:red>
+ <xmpG:green>255</xmpG:green>
+ <xmpG:blue>255</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>RGB Blue</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>0</xmpG:red>
+ <xmpG:green>0</xmpG:green>
+ <xmpG:blue>255</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>RGB Magenta</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>255</xmpG:red>
+ <xmpG:green>0</xmpG:green>
+ <xmpG:blue>255</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=193 G=39 B=45</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>193</xmpG:red>
+ <xmpG:green>39</xmpG:green>
+ <xmpG:blue>45</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=237 G=28 B=36</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>237</xmpG:red>
+ <xmpG:green>28</xmpG:green>
+ <xmpG:blue>36</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=241 G=90 B=36</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>241</xmpG:red>
+ <xmpG:green>90</xmpG:green>
+ <xmpG:blue>36</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=247 G=147 B=30</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>247</xmpG:red>
+ <xmpG:green>147</xmpG:green>
+ <xmpG:blue>30</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=251 G=176 B=59</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>251</xmpG:red>
+ <xmpG:green>176</xmpG:green>
+ <xmpG:blue>59</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=252 G=238 B=33</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>252</xmpG:red>
+ <xmpG:green>238</xmpG:green>
+ <xmpG:blue>33</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=217 G=224 B=33</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>217</xmpG:red>
+ <xmpG:green>224</xmpG:green>
+ <xmpG:blue>33</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=140 G=198 B=63</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>140</xmpG:red>
+ <xmpG:green>198</xmpG:green>
+ <xmpG:blue>63</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=57 G=181 B=74</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>57</xmpG:red>
+ <xmpG:green>181</xmpG:green>
+ <xmpG:blue>74</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=0 G=146 B=69</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>0</xmpG:red>
+ <xmpG:green>146</xmpG:green>
+ <xmpG:blue>69</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=0 G=104 B=55</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>0</xmpG:red>
+ <xmpG:green>104</xmpG:green>
+ <xmpG:blue>55</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=34 G=181 B=115</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>34</xmpG:red>
+ <xmpG:green>181</xmpG:green>
+ <xmpG:blue>115</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=0 G=169 B=157</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>0</xmpG:red>
+ <xmpG:green>169</xmpG:green>
+ <xmpG:blue>157</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=41 G=171 B=226</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>41</xmpG:red>
+ <xmpG:green>171</xmpG:green>
+ <xmpG:blue>226</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=0 G=113 B=188</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>0</xmpG:red>
+ <xmpG:green>113</xmpG:green>
+ <xmpG:blue>188</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=46 G=49 B=146</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>46</xmpG:red>
+ <xmpG:green>49</xmpG:green>
+ <xmpG:blue>146</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=27 G=20 B=100</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>27</xmpG:red>
+ <xmpG:green>20</xmpG:green>
+ <xmpG:blue>100</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=102 G=45 B=145</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>102</xmpG:red>
+ <xmpG:green>45</xmpG:green>
+ <xmpG:blue>145</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=147 G=39 B=143</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>147</xmpG:red>
+ <xmpG:green>39</xmpG:green>
+ <xmpG:blue>143</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=158 G=0 B=93</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>158</xmpG:red>
+ <xmpG:green>0</xmpG:green>
+ <xmpG:blue>93</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=212 G=20 B=90</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>212</xmpG:red>
+ <xmpG:green>20</xmpG:green>
+ <xmpG:blue>90</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=237 G=30 B=121</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>237</xmpG:red>
+ <xmpG:green>30</xmpG:green>
+ <xmpG:blue>121</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=199 G=178 B=153</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>199</xmpG:red>
+ <xmpG:green>178</xmpG:green>
+ <xmpG:blue>153</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=153 G=134 B=117</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>153</xmpG:red>
+ <xmpG:green>134</xmpG:green>
+ <xmpG:blue>117</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=115 G=99 B=87</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>115</xmpG:red>
+ <xmpG:green>99</xmpG:green>
+ <xmpG:blue>87</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=83 G=71 B=65</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>83</xmpG:red>
+ <xmpG:green>71</xmpG:green>
+ <xmpG:blue>65</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=198 G=156 B=109</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>198</xmpG:red>
+ <xmpG:green>156</xmpG:green>
+ <xmpG:blue>109</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=166 G=124 B=82</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>166</xmpG:red>
+ <xmpG:green>124</xmpG:green>
+ <xmpG:blue>82</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=140 G=98 B=57</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>140</xmpG:red>
+ <xmpG:green>98</xmpG:green>
+ <xmpG:blue>57</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=117 G=76 B=36</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>117</xmpG:red>
+ <xmpG:green>76</xmpG:green>
+ <xmpG:blue>36</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=96 G=56 B=19</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>96</xmpG:red>
+ <xmpG:green>56</xmpG:green>
+ <xmpG:blue>19</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=66 G=33 B=11</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>66</xmpG:red>
+ <xmpG:green>33</xmpG:green>
+ <xmpG:blue>11</xmpG:blue>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpG:Colorants>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:groupName>Grays</xmpG:groupName>
+ <xmpG:groupType>1</xmpG:groupType>
+ <xmpG:Colorants>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=0 G=0 B=0</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>0</xmpG:red>
+ <xmpG:green>0</xmpG:green>
+ <xmpG:blue>0</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=26 G=26 B=26</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>26</xmpG:red>
+ <xmpG:green>26</xmpG:green>
+ <xmpG:blue>26</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=51 G=51 B=51</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>51</xmpG:red>
+ <xmpG:green>51</xmpG:green>
+ <xmpG:blue>51</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=77 G=77 B=77</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>77</xmpG:red>
+ <xmpG:green>77</xmpG:green>
+ <xmpG:blue>77</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=102 G=102 B=102</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>102</xmpG:red>
+ <xmpG:green>102</xmpG:green>
+ <xmpG:blue>102</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=128 G=128 B=128</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>128</xmpG:red>
+ <xmpG:green>128</xmpG:green>
+ <xmpG:blue>128</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=153 G=153 B=153</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>153</xmpG:red>
+ <xmpG:green>153</xmpG:green>
+ <xmpG:blue>153</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=179 G=179 B=179</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>179</xmpG:red>
+ <xmpG:green>179</xmpG:green>
+ <xmpG:blue>179</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=204 G=204 B=204</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>204</xmpG:red>
+ <xmpG:green>204</xmpG:green>
+ <xmpG:blue>204</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=230 G=230 B=230</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>230</xmpG:red>
+ <xmpG:green>230</xmpG:green>
+ <xmpG:blue>230</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=242 G=242 B=242</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>242</xmpG:red>
+ <xmpG:green>242</xmpG:green>
+ <xmpG:blue>242</xmpG:blue>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpG:Colorants>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:groupName>Web Color Group</xmpG:groupName>
+ <xmpG:groupType>1</xmpG:groupType>
+ <xmpG:Colorants>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=63 G=169 B=245</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>63</xmpG:red>
+ <xmpG:green>169</xmpG:green>
+ <xmpG:blue>245</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=122 G=201 B=67</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>122</xmpG:red>
+ <xmpG:green>201</xmpG:green>
+ <xmpG:blue>67</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=255 G=147 B=30</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>255</xmpG:red>
+ <xmpG:green>147</xmpG:green>
+ <xmpG:blue>30</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=255 G=29 B=37</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>255</xmpG:red>
+ <xmpG:green>29</xmpG:green>
+ <xmpG:blue>37</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=255 G=123 B=172</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>255</xmpG:red>
+ <xmpG:green>123</xmpG:green>
+ <xmpG:blue>172</xmpG:blue>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>R=189 G=204 B=212</xmpG:swatchName>
+ <xmpG:mode>RGB</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:red>189</xmpG:red>
+ <xmpG:green>204</xmpG:green>
+ <xmpG:blue>212</xmpG:blue>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpG:Colorants>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpTPg:SwatchGroups>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:pdf="http://ns.adobe.com/pdf/1.3/">
+ <pdf:Producer>Adobe PDF library 9.00</pdf:Producer>
+ </rdf:Description>
+ </rdf:RDF>
+</x:xmpmeta>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<?xpacket end="w"?>
endstream
endobj
3 0 obj
<</Count 1/Kids[7 0 R]/Type/Pages>>
endobj
7 0 obj
<</ArtBox[266.0 325.0 323.0 368.0]/BleedBox[0.0 0.0 800.0 600.0]/Contents 8 0 R/Group 9 0 R/LastModified(D:20091209094115+01'00')/MediaBox[0.0 0.0 800.0 600.0]/Parent 3 0 R/PieceInfo<</Illustrator 10 0 R>>/Resources<</ColorSpace<</CS0 11 0 R/CS1 11 0 R>>/ExtGState<</GS0 12 0 R/GS1 13 0 R/GS2 14 0 R>>/Properties<</MC0 5 0 R>>/Shading<</Sh0 15 0 R>>/XObject<</Fm0 16 0 R>>>>/Thumb 17 0 R/TrimBox[0.0 0.0 800.0 600.0]/Type/Page>>
endobj
8 0 obj
<</Filter/FlateDecode/Length 268>>stream
+H�lQ�n�0����H��c��vr��C�m�"N�z�a�C!H")��xr��+����܍d���oĆF0-��V�
��jF��p�͎,Q�)3jD>Y#
+k�[���Z�j�x�c����y��9)<!!������A˕�=M�×�ݮh��J��L���&� ��@*�]S�ŋ�Vr��檩>�iE�K�u�~�������5fs�2ZI���-'A�j��Hk���o�_�\�^��\�����*��~ׯ 9Z�
endstream
endobj
9 0 obj
<</CS 18 0 R/I false/K false/S/Transparency>>
endobj
17 0 obj
<</BitsPerComponent 8/ColorSpace 19 0 R/Filter[/ASCII85Decode/FlateDecode]/Height 75/Length 67/Width 100>>stream
+8;Z]X0bFC>%)ajf`KT5*3\?";=`TZ+2us!Z(9"D#`MqJ],X$SV!!!#oEs3B\?0@Y?~>
endstream
endobj
19 0 obj
[/Indexed/DeviceRGB 255 20 0 R]
endobj
20 0 obj
<</Filter[/ASCII85Decode/FlateDecode]/Length 428>>stream
+8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0
+b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup`
+E1r!/,*0[*9.aFIR2&b-C#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\.?d>Mn
+6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1
+VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH<
+PO7r\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O(
+l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~>
endstream
endobj
16 0 obj
<</BBox[266.0 368.0 323.0 325.0]/Group 21 0 R/Length 41/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 22 0 R>>/ExtGState<</GS0 23 0 R>>/ProcSet[/PDF/ImageC/ImageI]/XObject<</Im0 24 0 R>>>>/Subtype/Form>>stream
+q
+/GS0 gs
+57 0 0 43 266 325 cm
+/Im0 Do
+Q
+
endstream
endobj
21 0 obj
<</I false/K false/S/Transparency/Type/Group>>
endobj
24 0 obj
<</BitsPerComponent 8/ColorSpace 22 0 R/Decode[0.0 255.0]/Filter/FlateDecode/Height 43/Intent/RelativeColorimetric/Length 118/Name/X/SMask 25 0 R/Subtype/Image/Type/XObject/Width 57>>stream
+H���1�0CQr�Kw�ظj�J��&�7��Ɯ�Zvc
�)�t�,��Ŕr�$�&Y�!�Taí�8Tw �s| [R�r��&��Q+��z�����(`%X`Y��&zr� .|[
endstream
endobj
22 0 obj
[/Indexed 26 0 R 1 27 0 R]
endobj
25 0 obj
<</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 57>>/Filter/FlateDecode/Height 43/Intent/RelativeColorimetric/Length 1000/Name/X/Subtype/Image/Type/XObject/Width 57>>stream
+H�ԕ�Wg�5a��a���%0�\T@���z��������j!mB�ML��Q�bMZZ�[�ў��vA��Cz���9gηwG���:O��9���
+�y(��61`C!�Ht�
T�D�X"���E�R��Ϡǘ�a
+�+&G�DP=M��dN�j
EQ���1���"9#5Z�h2[,f#�ӐJ@�H+Q�C$�0��jw�Y�u_�[Mz���(�6'��)�:#��x��P������tjkEr�q��-�?�O�R���P��i�)B!� M��91��7x11���^�Neƒ�!��1 �6#;��ȕ�q�±/�侺qs�fa~fr, �6 1T��I�2\���|��l~��z�~�����\&
��Qʥ0f�$� �Z��;�z���ݓ���6��,�f��ˢSA���\�����;82=_,?~��������+���p��n�%�:�
���pzv�n���_~������F������e֑ܔ��r�29��+�b���jo߿;z��U]]̍]�c=�
+�i E�59}��S�o7w_}�����Γ{�f���.��e
C��bj2��������m�Տ�k��\�J�f�g������������?�f���aZ��U5Ͱ�C�مRec{�������z���������A������\���Ǜ�;;�Ϫ�ҍk�án� nGڰ��!�j���G���Bq��Z}XY�z!�N�\V=�i�v
+�All �����K++���\v<Q��7�M �m�?IO����s3ә�X��ڌZ�{X��*H�$盛/K�N����X���� ��4q�Y �%����7������BS�ה;��Pi
������}=].���ђ���+��6Ymv��a��
�s�Y��s�.��h���@뵔�b�Y�[�#�*�$I�JE��\܆��! Ǡ�2TH���'X.w� V{yu�s".� ⢪���8��O�z�,y�YW�Ru�����` ���
endstream
endobj
26 0 obj
[/ICCBased 28 0 R]
endobj
27 0 obj
<</Length 6>>stream
+���
endstream
endobj
28 0 obj
<</Filter/FlateDecode/Length 2574/N 3>>stream
+H���yTSw�oɞ����c
[���5la�QIBH�ADED���2�mtFOE�.�c��}���0��8��8G�Ng�����9�w���߽��� �'����0 �֠�J��b�
+ 2y�.-;!��K�Z� ���^�i�"L��0���-��
@8(��r�;q��7�L��y��&�Q��q�4�j���|�9��
+�V��)g�B�0�i�W��8#�8wթ��8_�٥ʨQ����Q�j@�&�A)/��g�>'K�� �t�;\��
ӥ$պF�ZUn����(4T�%)뫔�0C&�����Z��i���8��bx��E���B�;�����P���ӓ̹�A�om?�W=
+�x������- �����[��� 0����}��y)7ta�����>j���T�7���@���tܛ�`q�2��ʀ��&���6�Z�L�Ą?�_��yxg)˔z���çL�U���*�u�Sk�Se�O4?�c����.� � �� R�
߁��-��2�5������ ��S�>ӣV����d�`r��n~��Y�&�+`��;�A4�� ���A9� =�-�t��l�`;��~p���� �Gp| ��[`L��`<� "A�YA�+��Cb(��R�,� *�T�2B-�
+�ꇆ��n���Q�t�}MA�0�al������S�x ��k�&�^���>�0|>_�'��,�G!"F$H:R��!z��F�Qd?r9�\A&�G���rQ��h������E��]�a�4z�Bg�����E#H �*B=��0H�I��p�p�0MxJ$�D1��D, V���ĭ����KĻ�Y�dE�"E��I2���E�B�G��t�4MzN�����r!YK� ���?%_&�#���(��0J:EAi��Q�(�()ӔWT6U@���P+���!�~��m���D�e�Դ�!��h�Ӧh/��']B/����ҏӿ�?a0n�hF!��X���8����܌k�c&5S�����6�l��Ia�2c�K�M�A�!�E�#��ƒ�d�V��(�k��e���l
����}�}�C�q�9
+N'��)�].�u�J�r�
+��w�G� xR^���[�oƜch�g�`>b���$���*~� �:����E���b��~���,m,�-��ݖ,�Y��¬�*�6X�[ݱF�=�3�뭷Y��~dó ���t���i�z�f�6�~`{�v���.�Ng����#{�}�}��������j������c1X6���fm���;'_9 �r�:�8�q�:��˜�O:ϸ8������u��Jq���nv=���M���m���R 4 �
+n�3ܣ�k�Gݯz=��[=��=�<�=G</z�^�^j��^�� ޡ�Z�Q�B�0FX'�+������t���<�u�-���{���_�_�ߘ�-G�,�}���/���Hh8�m�W�2p[���AiA��N�#8$X�?�A�KHI�{!7�<q��W�y(!46�-���a�a���a�W�� ��@�@�`l���YĎ��H,�$����(�(Y�h�7��ъ���b<b*b��<�����~�L&Y&9��%�u�M�s�s��NpJP%�M�IJlN<�DHJIڐtCj'�KwKg�C��%�N��d��|�ꙪO=��%�mL���u�v�x:H��oL��!Ȩ��C&13#s$�/Y����������=�Osbs�rn��sO�1��v�=ˏ��ϟ\�h٢���#��¼����oZ<]T�Ut}�`IÒsK��V-���Y,+>TB(�/�S�,]6*�-���W:#��7�*���e��^YDY�}U�j��AyT�`�#�D=���"�b{ų���+�ʯ:�!kJ4G�m��t�}uC�%���K7YV��fF���Y�.�
��=b��?S��ƕƩ�Ⱥ����y���
چ���k�5%4��m�7�lqlio�Z�lG+�Z�z���mzy��]�����?u�u�w|�"űN���wW&���e֥ﺱ*|����j��5k��yݭ���ǯg��^y�kEk�����l�D_p߶������7Dm����o꿻1m��l�{��Mś�
n�L�l�<9��O �[����$�����h�՛B��������d�Ҟ@��������i�ءG���&����v��V�ǥ8��������n��R�ĩ7�������u��\�ЭD���-������ �u��`�ֲK�³8���%�������y��h��Y�ѹJ�º;���.���!������
+�����z���p���g���_���X���Q���K���F���Aǿ�=ȼ�:ɹ�8ʷ�6˶�5̵�5͵�6ζ�7ϸ�9к�<Ѿ�?���D���I���N���U���\���d���l���v��ۀ�܊�ݖ�ޢ�)߯�6��D���S���c���s����
����2��F���[���p������(��@���X���r������4���P���m��������8���W���w����)���K���m�� ����
endstream
endobj
23 0 obj
<</AIS true/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 29 0 R/Type/ExtGState/ca 1.0/op false>>
endobj
29 0 obj
<</BC 30 0 R/G 31 0 R/S/Luminosity/Type/Mask>>
endobj
30 0 obj
[0.0 0.0 0.0]
endobj
31 0 obj
<</BBox[266.0 368.0 323.0 325.0]/Group 32 0 R/Length 41/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 33 0 R>>/ProcSet[/PDF/ImageB]/XObject<</Im0 34 0 R>>>>/Subtype/Form>>stream
+q
+/GS0 gs
+57 0 0 43 266 325 cm
+/Im0 Do
+Q
+
endstream
endobj
32 0 obj
<</CS 26 0 R/I false/K false/S/Transparency/Type/Group>>
endobj
34 0 obj
<</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 57>>/Filter/FlateDecode/Height 43/Intent/RelativeColorimetric/Length 1000/Name/X/Subtype/Image/Type/XObject/Width 57>>stream
+H�ԕ�Wg�5a��a���%0�\T@���z��������j!mB�ML��Q�bMZZ�[�ў��vA��Cz���9gηwG���:O��9���
+�y(��61`C!�Ht�
T�D�X"���E�R��Ϡǘ�a
+�+&G�DP=M��dN�j
EQ���1���"9#5Z�h2[,f#�ӐJ@�H+Q�C$�0��jw�Y�u_�[Mz���(�6'��)�:#��x��P������tjkEr�q��-�?�O�R���P��i�)B!� M��91��7x11���^�Neƒ�!��1 �6#;��ȕ�q�±/�侺qs�fa~fr, �6 1T��I�2\���|��l~��z�~�����\&
��Qʥ0f�$� �Z��;�z���ݓ���6��,�f��ˢSA���\�����;82=_,?~��������+���p��n�%�:�
���pzv�n���_~������F������e֑ܔ��r�29��+�b���jo߿;z��U]]̍]�c=�
+�i E�59}��S�o7w_}�����Γ{�f���.��e
C��bj2��������m�Տ�k��\�J�f�g������������?�f���aZ��U5Ͱ�C�مRec{�������z���������A������\���Ǜ�;;�Ϫ�ҍk�án� nGڰ��!�j���G���Bq��Z}XY�z!�N�\V=�i�v
+�All �����K++���\v<Q��7�M �m�?IO����s3ә�X��ڌZ�{X��*H�$盛/K�N����X���� ��4q�Y �%����7������BS�ה;��Pi
������}=].���ђ���+��6Ymv��a��
�s�Y��s�.��h���@뵔�b�Y�[�#�*�$I�JE��\܆��! Ǡ�2TH���'X.w� V{yu�s".� ⢪���8��O�z�,y�YW�Ru�����` ���
endstream
endobj
33 0 obj
<</AIS true/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>>
endobj
15 0 obj
<</AntiAlias false/ColorSpace 11 0 R/Coords[0.0 0.0 1.0 0.0]/Domain[0.0 1.0]/Extend[true true]/Function 35 0 R/ShadingType 2>>
endobj
11 0 obj
[/ICCBased 28 0 R]
endobj
35 0 obj
<</Bounds[]/Domain[0.0 1.0]/Encode[0.0 1.0]/FunctionType 3/Functions[36 0 R]>>
endobj
36 0 obj
<</C0[0.992157 0.992157 0.996078]/C1[0.992157 0.992157 0.996078]/Domain[0.0 1.0]/FunctionType
2/N 2.40942>>
endobj
5 0 obj
<</Intent 37 0 R/Name(Layer 1)/Type/OCG/Usage 38 0 R>>
endobj
37 0 obj
[/View/Design]
endobj
38 0 obj
<</CreatorInfo<</Creator(Adobe Illustrator 14.0)/Subtype/Artwork>>>>
endobj
12 0 obj
<</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 39 0 R/Type/ExtGState/ca 1.0/op false>>
endobj
13 0 obj
<</AIS true/BM/Normal/CA 0.179993/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 0.179993/op false>>
endobj
14 0 obj
<</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>>
endobj
39 0 obj
<</G 40 0 R/S/Luminosity/Type/Mask>>
endobj
40 0 obj
<</BBox[-32768.0 32767.0 32767.0 -32767.0]/Group 41 0 R/Length 97/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 14 0 R>>/Shading<</Sh0 42 0 R>>>>/Subtype/Form>>stream
+q
+0 g
+/GS0 gs
+-0.0087891 0.0003662 0.000061 0.0015106 292.6523437 345.6567383 cm
+BX /Sh0 sh EX Q
+
endstream
endobj
41 0 obj
<</CS 43 0 R/I false/K false/S/Transparency/Type/Group>>
endobj
42 0 obj
<</AntiAlias false/ColorSpace 44 0 R/Coords[0.0 0.0 1.0 0.0]/Domain[0.0 1.0]/Extend[true true]/Function 45 0 R/ShadingType 2>>
endobj
44 0 obj
/DeviceGray
endobj
45 0 obj
<</Bounds[]/Domain[0.0 1.0]/Encode[0.0 1.0]/FunctionType 3/Functions[46 0 R]>>
endobj
46 0 obj
<</C0[0.0]/C1[1.0]/Domain[0.0 1.0]/FunctionType 2/N 2.40942>>
endobj
43 0 obj
/DeviceGray
endobj
10 0 obj
<</LastModified(D:20091209094115+01'00')/Private 47 0 R>>
endobj
47 0 obj
<</AIMetaData 48 0 R/AIPrivateData1 49 0 R/AIPrivateData2 50 0 R/AIPrivateData3 51 0 R/ContainerVersion 11/CreatorVersion 14/NumBlock 3/RoundtripStreamType 1/RoundtripVersion 14>>
endobj
48 0 obj
<</Length 927>>stream
+%!PS-Adobe-3.0
%%Creator: Adobe Illustrator(R) 14.0
%%AI8_CreatorVersion: 14.0.0
%%For: (xagnetti) ()
%%Title: (Untitled-1)
%%CreationDate: 09/12/2009 09:41
%%Canvassize: 16383
%%BoundingBox: 266 325 323 368
%%HiResBoundingBox: 266 325 323 368
%%DocumentProcessColors: Cyan Magenta Yellow Black
%AI5_FileFormat 10.0
%AI12_BuildNumber: 367
%AI3_ColorUsage: Color
%AI7_ImageSettings: 0
%%RGBProcessColor: 0 0 0 ([Registration])
%AI3_Cropmarks: 0 0 800 600
%AI3_TemplateBox: 400.5 299.5 400.5 299.5
%AI3_TileBox: -3 20.5 780 579.5
%AI3_DocumentPreview: None
%AI5_ArtSize: 14400 14400
%AI5_RulerUnits: 6
%AI9_ColorModel: 1
%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0
%AI5_TargetResolution: 800
%AI5_NumLayers: 1
%AI9_OpenToView: -187.6333 617 1.61 1835 1010 18 0 0 43 129 0 0 0 1 1 0 1 1 0
%AI5_OpenViewLayers: 7
%%PageOrigin:0 0
%AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9
%AI9_Flatten: 1
%AI12_CMSettings: 00.MS
%%EndComments
endstream
endobj
49 0 obj
<</Length 6497>>stream
+%%BoundingBox: 266 325 323 368
%%HiResBoundingBox: 266 325 323 368
%AI7_Thumbnail: 128 100 8
%%BeginData: 6366 Hex Bytes
%0000330000660000990000CC0033000033330033660033990033CC0033FF
%0066000066330066660066990066CC0066FF009900009933009966009999
%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
%6666006666336666666666996666CC6666FF669900669933669966669999
%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
%9933009933339933669933999933CC9933FF996600996633996666996699
%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
%CC0000C
C0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
%000011111111220000002200000022222222440000004400000044444444
%550000005500000055555555770000007700000077777777880000008800
%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
%524C45FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF
%FDD6FFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FDFC
%FFFDE5FFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FF
%FFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FDDFFFA8FFFFFFA8FFFFFFA8FFFFFF
%A8FFFFFFA8FFFFFFA8FDDDFFA8FFFFFFA8FF
FFFFA8FFFFFFA8FFFFFFA8FF
%FFFFA8FFA8FFA8FFA8FFA8FFA8FFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFF
%A8FFFFFFA8FDD7FFA8FFFFFFA8FFFFFFA8FFA8FFA8FFFFFFA8FFFFFFA8FF
%FFFFA8FFFFFFA8FD6CFFA8A9A8FD62FFA8FFFFFFA8FFFFFFA8FFFFFFA8FF
%FFFFA8FFA8FFA8FFA8FFA8FFA8A87EA8A8FFA8FFA8FFA8FFA8FFA8FFA8FF
%A8FFA8FFA8FFFFFFA8FFFFFFA8FFFFFFA8FD5AFFA8FFA8A8A8A9A8A8A8FD
%6CFFA8FFFFFFA8FFFFFFA8FFA8A87EA8A8A87EA8A8A87EA9A8FFA8FFA8FF
%A8FFA8FFA8FFFFFFA8FFFFFFA8FD60FFFD05A8A9A8A8A8A9A8A87EA9A8FF
%A8FFFFFFA8FD54FFA8FFFFFFA8FFFFFFA8FFFFFFA8FFA8FFA8FFA8FFA8A8
%7EA87EA87EA87EA87EA87EA87EA87EA8A8FFA8FFA8FFA8FFA8FFA8FFA8FF
%A8FFA8FFA8FFFFFFA8FFFFFFA8FFFFFFA8FD4EFFA8A9A8A8A8A9A8A8A8A9
%A8A8A8A9A8A8A8A9A8A8A8FD60FFA8FFFFFFA8FFFFFFA8FFA8A87EA8A8A8
%7EA8A8A87EA8A8A87EA8A8A87EA8A8A87EFFA8FFA8FFA8FFA8FFA8FFA8FF
%FFFFA8FFFFFFA8FD52FFA9A97EFD04A8A9A8A8A8A9A8A8A8A9A8A8A8A9A8
%A8A8A9A8A87EA9A9FFA8FFFFFFA8FD4CFFA8FFFFFFA8FFFFFFA8FFA8FFA8
%FFFFFFA8A87EA87EA87EA87EA87EA87EA87EA87EA87EA87EA87EA87EA87E
%A87EA8A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFFFF
FA8FFFFFFA8FFFFFFA8
%FD46FFA8A9A8A8A8A9A8A8A8A9A8A8A8A9A8A8A8A9A8A8A8A9A8A8A8A9A8
%A8A8A9A8A8A8FD58FFA8FFFFFFA8A87EA87EA8A8A87EA8A8A87EA8A8A87E
%A8A8A87EA8A8A87EA8A8A87EA8A8A87EA8A2A8A2FFA8FFA8FFA8FFA8FFFF
%FFA8FFFFFFA8FD4AFFA8A8A2A9A8A8A8A9A8A8A8A9A8A8A8A9A8A8A8A9A8
%A8A8A9A8A8A8A9A8A8A8A9A8A8A8A9A8A8A8FFFFFFA8FD48FFA8FFFFFFA8
%FFFFFFA8FFA8A97EA87EA87EA87EA87EA87EA87EA87EA87EA87EA87EA87E
%A87EA87EA87EA87EA87EA87EA87EA87EA87EA8A8FFA8FFA8FFA8FFA8FFA8
%FFFFFFA8FFFFFFA8FFFFFFA8FD3CFFCBA9A8A9A8A8A8A9A8A8A8A9A8A8A8
%A9A8A8A8A9A8A8A8A9A8A8A8A9A8A8A8A9A8A8A8A9A8A8A8A9A8A8A8A9A8
%A8A8FD50FFA8A87EA87EA8A8A87EA8A8A87EA8A8A87EA8A8A87EA8A8A87E
%A8A8A87EA8A8A87EA8A8A87EA8A8A87EA8A8A87EA87EA8A8FFFFFFA8FFFF
%FFA8FFFFFFA8FD42FFA8A8A2FD08A8A9A8A8A8A9A8A8A8A9A8A8A8A9A8A8
%A8A9A8A8A8A9A8A8A8A9A8A8A8A9A8A8A8A9A8A8A8A9A8A8A8FD48FFA8FF
%FFA97EA8A8A87EA8A2A87EA87EA87EA87EA87EA87EA87EA87EA87EA87EA8
%7EA87EA87EA87EA87EA87EA87EA87EA87EA87EA87EA87EA87EA9A8FFA8FF
%A8FFA8FFFFFFA8FFFFFFA8FFFFFFA8FD42FFA8FFA8FFA8
FFA8A8A8A9A8A8
%A8A9A8A8A8A9A8A8A8A9A8A8A8A9A8A8A8A9A8A8A8A9A8A8A8A9A8A8A8A9
%A8A9A8FD4CFFA8FFFFFFA8FFFFFFA8FFA8FFFD04A87EA8A8A87EA8A8A87E
%A8A8A87EA8A8A87EFD04A8A9A8A8A8A9A8A8A8A9FD07A8FFFFFFA8FD50FF
%A8FFFFFFA2A9A8A8A8A9A8A8A8A9A8A8A8A9A8A8A8A9A8A8A8A9A8FFA8FF
%CFFFA8FFFFFFA8FFFFFFA8FD44FFA8FFFFFFA8FFFFFFA8FFA8FFA8FFA8FF
%A8FFA8FFA8FFA8A87EA87EA87EA87EA87EA87EA87EA87EA87EA87EA87EFF
%A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFFFFFA8FFFFFF
%A8FD4AFFA8A9A8A8A8A9A8A8A8A9A8A8A8A9A8A8A8A9A8A8A8A9A8FFA8FF
%A8FFA8FFFFFFA8FD50FFA8FFFFFFA8FFFFFFA8FFA8FFA8FFA8A87EA8A8A8
%7EA8A8A87EA8A8A87EA8A8A87EA8A8A87EFFA8FFA8FFA8FFA8FFA8FFA8FF
%A8FFA8FFFFFFA8FFFFFFA8FD4CFFA8FFFFFFA8FFA8A8A8A9A8A8A8A9A8A8
%A8A9A8A8A8A9A8A8A8A9A8A8A8FFA8FFA8FFA8FFA8FFFFFFA8FD48FFA8FF
%FFFFA8FFFFFFA8FFA8FFA8FFA8FFA8FFA8FFA8A87EA87EA87EA87EA87EA8
%7EA87EA87EA87EA87EA8A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FF
%A8FFA8FFFFFFA8FFFFFFA8FFFFFFA8FD48FFA8A8A8A9A8A8A8A9A8A8A8A9
%A8A8A8A9A8A8A8A9A8A9A8FFA8FFA8FFFFFFA8FD54FFA8FFFFF
FA8FFFFFF
%A8FFA8FFFD08A87EA8A2A87EA8A2A87EA87EA87EA8A8FFA8FFA8FFA8FFA8
%FFA8FFA8FFA8FFFFFFA8FFFFFFA8FD50FFA8FFFFFFA8FFFFFFA8FFA8FFA8
%FFA8FFA8FFA8FFA8FFA8A9A8FFA8FFA8FFFFFFA8FFFFFFA8FD48FFA8FFFF
%FFA8FFFFFFA8FFFFFFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8
%FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8
%FFA8FFFFFFA8FFFFFFA8FFFFFFA8FD52FFA8FFFFFFA8FFFFFFA8FFFFFFA8
%FFFFFFA8FD5CFFA8FFFFFFA8FFFFFFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8
%FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFFFFFA8
%FD58FFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FD50
%FFA8FFFFFFA8FFFFFFA8FFFFFFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8
%FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8
%FFA8FFFFFFA8FFFFFFA8FFFFFFA8FDC3FFA8FFFFFFA8FFFFFFA8FFFFFFA8
%FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFFFFFA8FFFF
%FFA8FFFFFFA8FD64FFA8FFFFFFA8FFFFFFA8FD5CFFA8FFFFFFA8FFFFFFA8
%FFFFFFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8
%FFA8FFA8FFA8FFA8FFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FDCF
FFA8
%FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFF
%FFA8FDD1FFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8
%FFA8FFA8FFA8FFA8FFA8FFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFF
%FFA8FDDBFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FDDDFFA8
%FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFF
%FFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FDFCFFFDD9FFA8FFFFFFA8FF
%FFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FDFCFF
%FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFD56FF
%FF
%%EndData
endstream
endobj
50 0 obj
<</Length 65536>>stream
+%AI12_CompressedDatax��ks%�q(��?p?(B�ئo@�؈s�C�v۶B#ٺ�1њi���f�lO�t��~�O$�ٯ#˲Ɋ&�I��DHd&2?��~�ճ÷o��Y�^���������߾��B�~����?�����gW.^�����kn�//����훟��w����߽y�����]��g��W�_���y�}���L^�?}��}������������?��x��?�����v9��aǷ?���՛�o��ϯ|�W���/\�\����W�z���ܾ�����o�����o^������o����?�xs��/��yq��^�~��OW��/���K�q����뗽s�/�_9����}����o����߽��� 8|�(�C����� ._��C���������8Z2:���ۯ^~�
+Y����h߽���Ż��5��z�ו����߿��>�u�NW������-{G�ճp��o��W���{^����?���yI<8�{��F�h�;��W?�~��7o^��e 5b�?������^?���w?H7��N
~���w/��!|����8����3���?���r����_�����:���+W�:�+WC�C��*�'�+盾��w�� ����O~���߽��՛�3���x���1��_U������_�Dn����/�0�}�������?~��xz����{`�0��$x��������w�K���������H��ݫ7�s�'�K�������wo��o~�v�)-�_�{�Mov�Ͽ�/�y��)�o_���������٣�z���?����?}���}M�����/_��ޠUȋ7�^��w��/_�x������W�y�y4p�G }��]*�|�����;�#؇�}�
L�wW�w?��_�}�Z��R�
��F(����_����b��M�`��.�ý��~�
�����x���w�^|��Wߜ{�����o�2��|����_�p?擁��Ż���y��?�����c����>Q�j��{��Wx��K���w��+E���ъ�g�wu|c�?�{��.S�
+r��ۗW��^���E���]����˿-}�_}p
Y}������5�R��k�K�����wϕ๒��_���/��S��U�;U�o;ʾG|}I����®�\�tu9�a��x�c,��Ȏ���|��˫_���x}%�>�g��C����/@�
+j�_����� ]���sX���z��ֻ��7sλ�K�+"����؟w�N�ί�w���O>��o���������B�OWV}WfbH!��5��n�mN��ᢏ!Ƙ���Sb�-�1���x�w��O!ŔR^�O����M�9�Nݖ���@��� O�/�8$�?Y�g�]��+�[��*r�_�1�{���?��٧��wf��~���;������w�?����ԙ����[Ow����ts:��v��rʧt��p�'�1��ߞnooon�������r�o�m����pws�����9�n�M�)7�&�ěp�o��z�;���Ǜ��x8�c=�c>�c<��_�TXw����ps8�v��rȇt��p���}�cuw�݁�b��[б�v�W���I�fĮBg����� ��i��C�o����AC>