]> source.dussan.org Git - pf4j.git/commitdiff
Editor config style applied 47/head
authorMário Franco <mario.ffranco@gmail.com>
Fri, 5 Jun 2015 14:21:32 +0000 (15:21 +0100)
committerMário Franco <mario.ffranco@gmail.com>
Fri, 5 Jun 2015 14:21:32 +0000 (15:21 +0100)
47 files changed:
demo/api/pom.xml
demo/api/src/main/java/ro/fortsoft/pf4j/demo/api/Greeting.java
demo/app/src/main/assembly/assembly.xml
demo/app/src/main/java/ro/fortsoft/pf4j/demo/Boot.java
demo/plugins/disabled.txt
demo/plugins/enabled.txt
demo/plugins/plugin1/pom.xml
demo/plugins/plugin1/src/main/assembly/assembly.xml
demo/plugins/plugin1/src/main/java/ro/fortsoft/pf4j/demo/welcome/WelcomePlugin.java
demo/plugins/plugin2/pom.xml
demo/plugins/plugin2/src/main/assembly/assembly.xml
demo/plugins/plugin2/src/main/java/ro/fortsoft/pf4j/demo/hello/HelloPlugin.java
demo/plugins/pom.xml
demo/pom.xml
demo_gradle/api/src/main/java/ro/fortsoft/pf4j/demo/api/Greeting.java
demo_gradle/app/src/main/java/ro/fortsoft/pf4j/demo/Boot.java
demo_gradle/plugins/disabled.txt
demo_gradle/plugins/enabled.txt
demo_gradle/plugins/plugin2/src/main/java/ro/fortsoft/pf4j/demo/hello/HelloPlugin.java
pf4j/src/main/java/ro/fortsoft/pf4j/CompoundPluginRepository.java
pf4j/src/main/java/ro/fortsoft/pf4j/CyclicDependencyException.java
pf4j/src/main/java/ro/fortsoft/pf4j/DefaultPluginDescriptorFinder.java
pf4j/src/main/java/ro/fortsoft/pf4j/DefaultPluginRepository.java
pf4j/src/main/java/ro/fortsoft/pf4j/DefaultPluginStatusProvider.java
pf4j/src/main/java/ro/fortsoft/pf4j/DependencyResolver.java
pf4j/src/main/java/ro/fortsoft/pf4j/DevelopmentPluginClasspath.java
pf4j/src/main/java/ro/fortsoft/pf4j/Extension.java
pf4j/src/main/java/ro/fortsoft/pf4j/ExtensionPoint.java
pf4j/src/main/java/ro/fortsoft/pf4j/ExtensionWrapper.java
pf4j/src/main/java/ro/fortsoft/pf4j/ExtensionsIndexer.java
pf4j/src/main/java/ro/fortsoft/pf4j/Plugin.java
pf4j/src/main/java/ro/fortsoft/pf4j/PluginDescriptorFinder.java
pf4j/src/main/java/ro/fortsoft/pf4j/PluginException.java
pf4j/src/main/java/ro/fortsoft/pf4j/PluginNotFoundException.java
pf4j/src/main/java/ro/fortsoft/pf4j/PluginRepository.java
pf4j/src/main/java/ro/fortsoft/pf4j/PluginStatusProvider.java
pf4j/src/main/java/ro/fortsoft/pf4j/RuntimeMode.java
pf4j/src/main/java/ro/fortsoft/pf4j/util/AndFileFilter.java
pf4j/src/main/java/ro/fortsoft/pf4j/util/DirectedGraph.java
pf4j/src/main/java/ro/fortsoft/pf4j/util/DirectoryFileFilter.java
pf4j/src/main/java/ro/fortsoft/pf4j/util/ExtensionFileFilter.java
pf4j/src/main/java/ro/fortsoft/pf4j/util/HiddenFilter.java
pf4j/src/main/java/ro/fortsoft/pf4j/util/JarFileFilter.java
pf4j/src/main/java/ro/fortsoft/pf4j/util/NotFileFilter.java
pf4j/src/main/java/ro/fortsoft/pf4j/util/StringUtils.java
pf4j/src/main/java/ro/fortsoft/pf4j/util/Unzip.java
pf4j/src/main/java/ro/fortsoft/pf4j/util/ZipFileFilter.java

index 9d748b9c0efa1711a50ce86de21973de0f60cb7e..b379fbeb8db6e5bb9c821f57b8b83348072bca82 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <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/xsd/maven-4.0.0.xsd">
-    
+
     <parent>
         <groupId>ro.fortsoft.pf4j.demo</groupId>
         <artifactId>pf4j-demo-parent</artifactId>
@@ -23,7 +23,7 @@
             </plugin>
         </plugins>
     </build>
-    
+
     <dependencies>
         <dependency>
             <groupId>ro.fortsoft.pf4j</groupId>
@@ -32,5 +32,5 @@
             <scope>provided</scope>
         </dependency>
     </dependencies>
-    
+
 </project>
index 9a700c26452a061d8b1ea85b04a9109becee23a2..ddf3538933bc32f7336ad6471c1b773e38b834eb 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Copyright 2012 Decebal Suiu
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
  * the License. You may obtain a copy of the License in the LICENSE file, or 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.
index ef8515d56ceb4f7e151b33aca5ec65f704f944a5..77c66b428a23e5b9892664ae088216cf4ab606a7 100644 (file)
@@ -1,6 +1,6 @@
 <!--
  Describes the dist
-  
+
  @author Decebal Suiu
  @version 1.0
 -->
index 261953174891a7398834a9de67a001134c5069fe..4ba1422ac278ed27f1cde724c8d0e9f196528a5c 100644 (file)
@@ -1,93 +1,93 @@
-/*\r
- * Copyright 2012 Decebal Suiu\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with\r
- * the License. You may obtain a copy of the License in the LICENSE file, or at:\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on\r
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the\r
- * specific language governing permissions and limitations under the License.\r
- */\r
-package ro.fortsoft.pf4j.demo;\r
-\r
-import java.util.List;\r
-import java.util.Set;\r
-\r
-import org.apache.commons.lang.StringUtils;\r
-\r
-import ro.fortsoft.pf4j.DefaultPluginManager;\r
-import ro.fortsoft.pf4j.PluginManager;\r
-import ro.fortsoft.pf4j.PluginWrapper;\r
-import ro.fortsoft.pf4j.demo.api.Greeting;\r
-\r
-/**\r
- * A boot class that start the demo.\r
- *\r
- * @author Decebal Suiu\r
- */\r
-public class Boot {\r
-\r
-    public static void main(String[] args) {\r
-        // print logo\r
-        printLogo();\r
-\r
-        // create the plugin manager\r
-        final PluginManager pluginManager = new DefaultPluginManager();\r
-\r
-        // load the plugins\r
-        pluginManager.loadPlugins();\r
-\r
-        // enable a disabled plugin\r
-//        pluginManager.enablePlugin("welcome-plugin");\r
-\r
-        // start (active/resolved) the plugins\r
-        pluginManager.startPlugins();\r
-\r
-        // retrieves the extensions for Greeting extension point\r
-        List<Greeting> greetings = pluginManager.getExtensions(Greeting.class);\r
-        System.out.println(String.format("Found %d extensions for extension point '%s'", greetings.size(), Greeting.class.getName()));\r
-        for (Greeting greeting : greetings) {\r
-            System.out.println(">>> " + greeting.getGreeting());\r
-        }\r
-\r
-        // print extensions from classpath (non plugin)\r
-        System.out.println(String.format("Extensions added by classpath:"));\r
-        Set<String> extensionClassNames = pluginManager.getExtensionClassNames(null);\r
-        for (String extension : extensionClassNames) {\r
-            System.out.println("   " + extension);\r
-        }\r
-\r
-        // print extensions for each started plugin\r
-        List<PluginWrapper> startedPlugins = pluginManager.getStartedPlugins();\r
-        for (PluginWrapper plugin : startedPlugins) {\r
-            String pluginId = plugin.getDescriptor().getPluginId();\r
-            System.out.println(String.format("Extensions added by plugin '%s':", pluginId));\r
-            extensionClassNames = pluginManager.getExtensionClassNames(pluginId);\r
-            for (String extension : extensionClassNames) {\r
-                System.out.println("   " + extension);\r
-            }\r
-        }\r
-\r
-        // stop the plugins\r
-        pluginManager.stopPlugins();\r
-        /*\r
-        Runtime.getRuntime().addShutdownHook(new Thread() {\r
-\r
-                       @Override\r
-                       public void run() {\r
-                               pluginManager.stopPlugins();\r
-                       }\r
-\r
-        });\r
-        */\r
-    }\r
-\r
-       private static void printLogo() {\r
-       System.out.println(StringUtils.repeat("#", 40));\r
-       System.out.println(StringUtils.center("PF4J-DEMO", 40));\r
-       System.out.println(StringUtils.repeat("#", 40));\r
-       }\r
-\r
-}\r
+/*
+ * Copyright 2012 Decebal Suiu
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
+ * the License. You may obtain a copy of the License in the LICENSE file, or 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 ro.fortsoft.pf4j.demo;
+
+import java.util.List;
+import java.util.Set;
+
+import org.apache.commons.lang.StringUtils;
+
+import ro.fortsoft.pf4j.DefaultPluginManager;
+import ro.fortsoft.pf4j.PluginManager;
+import ro.fortsoft.pf4j.PluginWrapper;
+import ro.fortsoft.pf4j.demo.api.Greeting;
+
+/**
+ * A boot class that start the demo.
+ *
+ * @author Decebal Suiu
+ */
+public class Boot {
+
+    public static void main(String[] args) {
+        // print logo
+        printLogo();
+
+        // create the plugin manager
+        final PluginManager pluginManager = new DefaultPluginManager();
+
+        // load the plugins
+        pluginManager.loadPlugins();
+
+        // enable a disabled plugin
+//        pluginManager.enablePlugin("welcome-plugin");
+
+        // start (active/resolved) the plugins
+        pluginManager.startPlugins();
+
+        // retrieves the extensions for Greeting extension point
+        List<Greeting> greetings = pluginManager.getExtensions(Greeting.class);
+        System.out.println(String.format("Found %d extensions for extension point '%s'", greetings.size(), Greeting.class.getName()));
+        for (Greeting greeting : greetings) {
+            System.out.println(">>> " + greeting.getGreeting());
+        }
+
+        // print extensions from classpath (non plugin)
+        System.out.println(String.format("Extensions added by classpath:"));
+        Set<String> extensionClassNames = pluginManager.getExtensionClassNames(null);
+        for (String extension : extensionClassNames) {
+            System.out.println("   " + extension);
+        }
+
+        // print extensions for each started plugin
+        List<PluginWrapper> startedPlugins = pluginManager.getStartedPlugins();
+        for (PluginWrapper plugin : startedPlugins) {
+            String pluginId = plugin.getDescriptor().getPluginId();
+            System.out.println(String.format("Extensions added by plugin '%s':", pluginId));
+            extensionClassNames = pluginManager.getExtensionClassNames(pluginId);
+            for (String extension : extensionClassNames) {
+                System.out.println("   " + extension);
+            }
+        }
+
+        // stop the plugins
+        pluginManager.stopPlugins();
+        /*
+        Runtime.getRuntime().addShutdownHook(new Thread() {
+
+                       @Override
+                       public void run() {
+                               pluginManager.stopPlugins();
+                       }
+
+        });
+        */
+    }
+
+       private static void printLogo() {
+       System.out.println(StringUtils.repeat("#", 40));
+       System.out.println(StringUtils.center("PF4J-DEMO", 40));
+       System.out.println(StringUtils.repeat("#", 40));
+       }
+
+}
index fcaef508d04222da55f84e0bc59c7726030bedcb..45f1801f00b4d1133800b5aedce834e9fbdba64c 100644 (file)
@@ -3,4 +3,4 @@
 # - add one plugin id on each line
 # - put this file in plugins folder
 ########################################
-#welcome-plugin
\ No newline at end of file
+#welcome-plugin
index 55940171963700883161cc48802644c85e4c8686..3d76b2f721140bcb356807a1a971c0fcb4a05d54 100644 (file)
@@ -3,4 +3,4 @@
 # - add one plugin id on each line
 # - put this file in plugins folder
 ########################################
-#welcome-plugin
\ No newline at end of file
+#welcome-plugin
index 10e16f7791a06027b1bf14e198d34c52b7d972be..844d217d3a851040fd38c0a7e9cec3b8cab81b32 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <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/xsd/maven-4.0.0.xsd">
-    
+
     <parent>
         <groupId>ro.fortsoft.pf4j.demo</groupId>
         <artifactId>pf4j-demo-plugins</artifactId>
@@ -19,7 +19,7 @@
         <plugin.version>0.0.1</plugin.version>
         <plugin.provider>Decebal Suiu</plugin.provider>
         <plugin.dependencies />
-    </properties>   
+    </properties>
 
     <build>
         <plugins>
@@ -43,7 +43,7 @@
                 </executions>
             </plugin>
             -->
-            
+
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-antrun-plugin</artifactId>
@@ -63,7 +63,7 @@
                     </execution>
                 </executions>
             </plugin>
-            
+
             <plugin>
                 <artifactId>maven-assembly-plugin</artifactId>
                 <version>2.3</version>
                 </configuration>
             </plugin>
         </plugins>
-    </build>        
+    </build>
 
     <dependencies>
                <dependency>
                        <version>2.6</version>
                </dependency>
     </dependencies>
-    
+
 </project>
index 3fdc464a14bb1815c7a378d2a10102f5ba6d6e9f..ce2e92cf950c1dbcea8192984ceab35b7b63c276 100644 (file)
@@ -1,6 +1,6 @@
 <!--
  Describes the plugin archive
-  
+
  @author Decebal Suiu
  @version 1.0
 -->
index 1c3525905255b3aea9c6bed7975fec487ff5e2aa..6021fbf5243b4e0b4d938227eff9152d29f11eec 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Copyright 2012 Decebal Suiu
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
  * the License. You may obtain a copy of the License in the LICENSE file, or 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.
index c2e5413dfc0fa2af2e8e4a9c5ec64acae0e86f14..7852d4f717c273a7a9b05af37223e7d3a582fd89 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <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/xsd/maven-4.0.0.xsd">
-    
+
     <parent>
         <groupId>ro.fortsoft.pf4j.demo</groupId>
         <artifactId>pf4j-demo-plugins</artifactId>
@@ -19,7 +19,7 @@
         <plugin.version>0.0.1</plugin.version>
         <plugin.provider>Decebal Suiu</plugin.provider>
         <plugin.dependencies />
-    </properties>   
+    </properties>
 
     <build>
         <plugins>
@@ -43,7 +43,7 @@
                 </executions>
             </plugin>
             -->
-        
+
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-antrun-plugin</artifactId>
@@ -63,7 +63,7 @@
                     </execution>
                 </executions>
             </plugin>
-        
+
             <plugin>
                 <artifactId>maven-assembly-plugin</artifactId>
                 <version>2.3</version>
                 </configuration>
             </plugin>
         </plugins>
-    </build>        
+    </build>
 
 </project>
index 5cefe0d3a38964e3fb42bfbcde6a87f52e2adf22..4eacbe34849221ddcfa425afe2d9fc671c61acd3 100644 (file)
@@ -1,6 +1,6 @@
 <!--
  Describes the plugin archive
-  
+
  @author Decebal Suiu
  @version 1.0
 -->
index 7072e3dc27cd7954be543ab6e66b7d4ffb8ce6ba..4502126f35b885860822dd269df724766561faeb 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Copyright 2012 Decebal Suiu
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
  * the License. You may obtain a copy of the License in the LICENSE file, or 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.
index 3f717c3ceedd361388e39a50ddd35314c917844d..3044f1d090889ff65a138436edf5383806ec8c4d 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <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/xsd/maven-4.0.0.xsd">
-    
+
     <parent>
         <groupId>ro.fortsoft.pf4j.demo</groupId>
         <artifactId>pf4j-demo-parent</artifactId>
@@ -27,7 +27,7 @@
                 <directory>src/main/resources</directory>
             </resource>
         </resources>
-        
+
         <plugins>
             <plugin>
                 <artifactId>maven-dependency-plugin</artifactId>
@@ -93,7 +93,7 @@
             <artifactId>pf4j</artifactId>
             <version>${project.version}</version>
             <scope>provided</scope>
-        </dependency>    
+        </dependency>
 
         <dependency>
             <groupId>ro.fortsoft.pf4j.demo</groupId>
             <scope>provided</scope>
         </dependency>
     </dependencies>
-    
+
 </project>
index fe55184c7a6a431e4fababee9b225cefa6fc305e..087e22f5c9136787f898e1e1abfcc9f8c636fd07 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <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/xsd/maven-4.0.0.xsd">
-    
+
     <parent>
         <groupId>ro.fortsoft.pf4j</groupId>
         <artifactId>pf4j-parent</artifactId>
index 9a700c26452a061d8b1ea85b04a9109becee23a2..ddf3538933bc32f7336ad6471c1b773e38b834eb 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Copyright 2012 Decebal Suiu
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
  * the License. You may obtain a copy of the License in the LICENSE file, or 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.
index 503e7c0714f8e946e5d87e57df173be91dfdf92b..8c7d8e16cb442dd7d01b1edb716dd1fc0ff35e97 100644 (file)
@@ -1,96 +1,96 @@
-/*\r
- * Copyright 2012 Decebal Suiu\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with\r
- * the License. You may obtain a copy of the License in the LICENSE file, or at:\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on\r
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the\r
- * specific language governing permissions and limitations under the License.\r
- */\r
-package ro.fortsoft.pf4j.demo;\r
-\r
-import java.util.List;\r
-import java.util.Set;\r
-\r
-import org.apache.commons.lang3.StringUtils;\r
-\r
-import ro.fortsoft.pf4j.DefaultPluginManager;\r
-import ro.fortsoft.pf4j.PluginManager;\r
-import ro.fortsoft.pf4j.PluginWrapper;\r
-import ro.fortsoft.pf4j.demo.api.Greeting;\r
-\r
-/**\r
- * A boot class that start the demo.\r
- *\r
- * @author Decebal Suiu\r
- */\r
-public class Boot {\r
-\r
-    public static void main(String[] args) {\r
-        // print logo\r
-        printLogo();\r
-\r
-        // create the plugin manager\r
-        final PluginManager pluginManager = new DefaultPluginManager();\r
-\r
-        // load the plugins\r
-        pluginManager.loadPlugins();\r
-\r
-        // enable a disabled plugin\r
-//        pluginManager.enablePlugin("welcome-plugin");\r
-\r
-        // start (active/resolved) the plugins\r
-        pluginManager.startPlugins();\r
-\r
-        System.out.println("Plugindirectory: ");\r
-        System.out.println("\t" + System.getProperty("pf4j.pluginsDir", "plugins") + "\n");\r
-\r
-        // retrieves the extensions for Greeting extension point\r
-        List<Greeting> greetings = pluginManager.getExtensions(Greeting.class);\r
-        System.out.println(String.format("Found %d extensions for extension point '%s'", greetings.size(), Greeting.class.getName()));\r
-        for (Greeting greeting : greetings) {\r
-            System.out.println(">>> " + greeting.getGreeting());\r
-        }\r
-\r
-        // // print extensions from classpath (non plugin)\r
-        // System.out.println(String.format("Extensions added by classpath:"));\r
-        // Set<String> extensionClassNames = pluginManager.getExtensionClassNames(null);\r
-        // for (String extension : extensionClassNames) {\r
-        //     System.out.println("   " + extension);\r
-        // }\r
-\r
-        // print extensions for each started plugin\r
-        List<PluginWrapper> startedPlugins = pluginManager.getStartedPlugins();\r
-        for (PluginWrapper plugin : startedPlugins) {\r
-            String pluginId = plugin.getDescriptor().getPluginId();\r
-            System.out.println(String.format("Extensions added by plugin '%s':", pluginId));\r
-            // extensionClassNames = pluginManager.getExtensionClassNames(pluginId);\r
-            // for (String extension : extensionClassNames) {\r
-            //     System.out.println("   " + extension);\r
-            // }\r
-        }\r
-\r
-        // stop the plugins\r
-        pluginManager.stopPlugins();\r
-        /*\r
-        Runtime.getRuntime().addShutdownHook(new Thread() {\r
-\r
-                       @Override\r
-                       public void run() {\r
-                               pluginManager.stopPlugins();\r
-                       }\r
-\r
-        });\r
-        */\r
-    }\r
-\r
-       private static void printLogo() {\r
-       System.out.println(StringUtils.repeat("#", 40));\r
-       System.out.println(StringUtils.center("PF4J-DEMO", 40));\r
-       System.out.println(StringUtils.repeat("#", 40));\r
-       }\r
-\r
-}\r
+/*
+ * Copyright 2012 Decebal Suiu
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
+ * the License. You may obtain a copy of the License in the LICENSE file, or 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 ro.fortsoft.pf4j.demo;
+
+import java.util.List;
+import java.util.Set;
+
+import org.apache.commons.lang3.StringUtils;
+
+import ro.fortsoft.pf4j.DefaultPluginManager;
+import ro.fortsoft.pf4j.PluginManager;
+import ro.fortsoft.pf4j.PluginWrapper;
+import ro.fortsoft.pf4j.demo.api.Greeting;
+
+/**
+ * A boot class that start the demo.
+ *
+ * @author Decebal Suiu
+ */
+public class Boot {
+
+    public static void main(String[] args) {
+        // print logo
+        printLogo();
+
+        // create the plugin manager
+        final PluginManager pluginManager = new DefaultPluginManager();
+
+        // load the plugins
+        pluginManager.loadPlugins();
+
+        // enable a disabled plugin
+//        pluginManager.enablePlugin("welcome-plugin");
+
+        // start (active/resolved) the plugins
+        pluginManager.startPlugins();
+
+        System.out.println("Plugindirectory: ");
+        System.out.println("\t" + System.getProperty("pf4j.pluginsDir", "plugins") + "\n");
+
+        // retrieves the extensions for Greeting extension point
+        List<Greeting> greetings = pluginManager.getExtensions(Greeting.class);
+        System.out.println(String.format("Found %d extensions for extension point '%s'", greetings.size(), Greeting.class.getName()));
+        for (Greeting greeting : greetings) {
+            System.out.println(">>> " + greeting.getGreeting());
+        }
+
+        // // print extensions from classpath (non plugin)
+        // System.out.println(String.format("Extensions added by classpath:"));
+        // Set<String> extensionClassNames = pluginManager.getExtensionClassNames(null);
+        // for (String extension : extensionClassNames) {
+        //     System.out.println("   " + extension);
+        // }
+
+        // print extensions for each started plugin
+        List<PluginWrapper> startedPlugins = pluginManager.getStartedPlugins();
+        for (PluginWrapper plugin : startedPlugins) {
+            String pluginId = plugin.getDescriptor().getPluginId();
+            System.out.println(String.format("Extensions added by plugin '%s':", pluginId));
+            // extensionClassNames = pluginManager.getExtensionClassNames(pluginId);
+            // for (String extension : extensionClassNames) {
+            //     System.out.println("   " + extension);
+            // }
+        }
+
+        // stop the plugins
+        pluginManager.stopPlugins();
+        /*
+        Runtime.getRuntime().addShutdownHook(new Thread() {
+
+                       @Override
+                       public void run() {
+                               pluginManager.stopPlugins();
+                       }
+
+        });
+        */
+    }
+
+       private static void printLogo() {
+       System.out.println(StringUtils.repeat("#", 40));
+       System.out.println(StringUtils.center("PF4J-DEMO", 40));
+       System.out.println(StringUtils.repeat("#", 40));
+       }
+
+}
index fcaef508d04222da55f84e0bc59c7726030bedcb..45f1801f00b4d1133800b5aedce834e9fbdba64c 100644 (file)
@@ -3,4 +3,4 @@
 # - add one plugin id on each line
 # - put this file in plugins folder
 ########################################
-#welcome-plugin
\ No newline at end of file
+#welcome-plugin
index 55940171963700883161cc48802644c85e4c8686..3d76b2f721140bcb356807a1a971c0fcb4a05d54 100644 (file)
@@ -3,4 +3,4 @@
 # - add one plugin id on each line
 # - put this file in plugins folder
 ########################################
-#welcome-plugin
\ No newline at end of file
+#welcome-plugin
index 7072e3dc27cd7954be543ab6e66b7d4ffb8ce6ba..4502126f35b885860822dd269df724766561faeb 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Copyright 2012 Decebal Suiu
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
  * the License. You may obtain a copy of the License in the LICENSE file, or 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.
index 28c5d80a5e82bc0b2626ea5f5c5b3af7aa587726..60d6163f91df3bbcb4c7f501572709f4a5ae3cbb 100644 (file)
@@ -18,7 +18,7 @@ import java.util.List;
 
 /**
  * @author Decebal Suiu
- * @author Mário Franco
+ * @author MÃ\83¡rio Franco
  */
 public class CompoundPluginRepository implements PluginRepository {
 
index 483665c3e56bf5d4cd6dfc57ef0e4033bf521efb..17aeddfda3e25bde60573e71bc40a68b9aa57bd3 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Copyright 2012 Decebal Suiu
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
  * the License. You may obtain a copy of the License in the LICENSE file, or 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.
@@ -14,7 +14,7 @@ package ro.fortsoft.pf4j;
 
 /**
  * CyclicDependencyException will be thrown if a cyclic dependency is detected.
- * 
+ *
  * @author Decebal Suiu
  */
 class CyclicDependencyException extends PluginException {
index 144fc6e40d2b373cc01d832e4e7ffa620babb53d..d347d8dbd219ce90848d36d94c483468ac028044 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Copyright 2013 Decebal Suiu
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
  * the License. You may obtain a copy of the License in the LICENSE file, or 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.
@@ -13,9 +13,9 @@
 package ro.fortsoft.pf4j;
 
 /**
- * The default implementation for PluginDescriptorFinder. 
+ * The default implementation for PluginDescriptorFinder.
  * Now, this class it's a "link" to {@link ro.fortsoft.pf4j.ManifestPluginDescriptorFinder}.
- * 
+ *
  * @author Decebal Suiu
  */
 public class DefaultPluginDescriptorFinder extends ManifestPluginDescriptorFinder {
@@ -23,5 +23,5 @@ public class DefaultPluginDescriptorFinder extends ManifestPluginDescriptorFinde
        public DefaultPluginDescriptorFinder(PluginClasspath pluginClasspath) {
                super(pluginClasspath);
        }
-       
+
 }
index 15f6ca3ad184dfb4170d5d4a6801150b869b2897..b8820504f0d887de5a64922446adc93edfbe5bb9 100644 (file)
@@ -22,7 +22,7 @@ import java.util.List;
 
 /**
  * @author Decebal Suiu
- * @author Mário Franco
+ * @author MÃ\83¡rio Franco
  */
 public class DefaultPluginRepository implements PluginRepository {
 
index 84d09cc082685bb3c9d3e5b9d2706ce9036ab8db..7554aaa9d371226bd6a10031c97c57c4d3a7b226 100644 (file)
@@ -24,7 +24,7 @@ import ro.fortsoft.pf4j.util.FileUtils;
  * The default implementation for PluginStatusProvider.
  *
  * @author Decebal Suiu
- * @author Mário Franco
+ * @author MÃ\83¡rio Franco
  */
 public class DefaultPluginStatusProvider implements PluginStatusProvider {
 
index a64aef560893be658a11056b55245f8b375aeacb..885928bdd94e07ab1d4f7a5aabb33370d274f882 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Copyright 2012 Decebal Suiu
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
  * the License. You may obtain a copy of the License in the LICENSE file, or 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.
@@ -26,7 +26,7 @@ import ro.fortsoft.pf4j.util.DirectedGraph;
 class DependencyResolver {
 
        private static final Logger log = LoggerFactory.getLogger(DependencyResolver.class);
-       
+
     private List<PluginWrapper> plugins;
 
        public DependencyResolver(List<PluginWrapper> plugins) {
index e14722cc5c7711dacda2b320db4f2ddfe3ca1701..e4d21a091066b44ca516133bdfb1bc9c2c72af17 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Copyright 2013 Decebal Suiu
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
  * the License. You may obtain a copy of the License in the LICENSE file, or 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.
@@ -14,14 +14,14 @@ package ro.fortsoft.pf4j;
 
 /**
  * Overwrite classes directories to "target/classes" and lib directories to "target/lib".
- *  
+ *
  * @author Decebal Suiu
  */
 public class DevelopmentPluginClasspath extends PluginClasspath {
 
        private static final String DEVELOPMENT_CLASSES_DIRECTORY = "target/classes";
        private static final String DEVELOPMENT_LIB_DIRECTORY = "target/lib";
-       
+
        public DevelopmentPluginClasspath() {
                super();
        }
@@ -32,5 +32,5 @@ public class DevelopmentPluginClasspath extends PluginClasspath {
                libDirectories.add(DEVELOPMENT_LIB_DIRECTORY);
        }
 
-       
+
 }
index f2c01bd81c779fc2667d2e6d539986a1a8df10e5..f30d123cbbefdca7a8d860bd4dbd8b3b74692548 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Copyright 2012 Decebal Suiu
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
  * the License. You may obtain a copy of the License in the LICENSE file, or 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.
@@ -28,5 +28,5 @@ import java.lang.annotation.Target;
 public @interface Extension {
 
         int ordinal() default 0;
-        
+
 }
index 8d948476cc3842237ad922153a6eb56312d89f2a..11be4bdeb1e809f7ab92d58d88c6a5f0019c3f7c 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Copyright 2012 Decebal Suiu
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
  * the License. You may obtain a copy of the License in the LICENSE file, or 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.
index d6ac74db4e8a8c9b00f9fec9aeca3965a0c523ca..747c991e68ed5df4d0da5787f57718e9814e39bc 100644 (file)
@@ -52,4 +52,4 @@ public class ExtensionWrapper<T> implements Comparable<ExtensionWrapper<T>> {
         this.extensionFactory = extensionFactory;
     }
 
-}
\ No newline at end of file
+}
index c4a8f4021472c2a9f911d8dfeb7d8619e6bf6d38..eec6c950668f377e75772376e4a25606be32d3e7 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Copyright 2013 Decebal Suiu
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
  * the License. You may obtain a copy of the License in the LICENSE file, or 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.
@@ -37,9 +37,9 @@ import javax.tools.StandardLocation;
 public class ExtensionsIndexer extends AbstractProcessor {
 
        public static final String EXTENSIONS_RESOURCE = "META-INF/extensions.idx";
-       
+
        private List<TypeElement> extensions = new ArrayList<TypeElement>();
-       
+
        @Override
        public SourceVersion getSupportedSourceVersion() {
                return SourceVersion.latest();
@@ -49,16 +49,16 @@ public class ExtensionsIndexer extends AbstractProcessor {
        public Set<String> getSupportedAnnotationTypes() {
                Set<String> annotationTypes = new HashSet<String>();
         annotationTypes.add(Extension.class.getName());
-        
+
         return annotationTypes;
        }
-       
+
        @Override
        public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
                if (roundEnv.processingOver()) {
             return false;
         }
-               
+
                for (Element element : roundEnv.getElementsAnnotatedWith(Extension.class)) {
                        if (!(element instanceof TypeElement)) {
                                continue;
@@ -69,7 +69,7 @@ public class ExtensionsIndexer extends AbstractProcessor {
                        processingEnv.getMessager().printMessage(Kind.NOTE, message);
                        extensions.add(typeElement);
         }
-               
+
                /*
                if (!roundEnv.processingOver()) {
                        return false;
@@ -77,17 +77,17 @@ public class ExtensionsIndexer extends AbstractProcessor {
                */
 
                write();
-               
+
                return false;
 //             return true; // no further processing of this annotation type
        }
-       
+
        private void write() {
                Set<String> entries = new HashSet<String>();
                for (TypeElement typeElement : extensions) {
                        entries.add(processingEnv.getElementUtils().getBinaryName(typeElement).toString());
                }
-               
+
                read(entries); // read old entries
                write(entries); // write entries
        }
@@ -107,7 +107,7 @@ public class ExtensionsIndexer extends AbstractProcessor {
                        processingEnv.getMessager().printMessage(Kind.ERROR, e.toString());
                }
        }
-       
+
        private void read(Set<String> entries) {
                try {
                        FileObject file = processingEnv.getFiler().getResource(StandardLocation.CLASS_OUTPUT, "", EXTENSIONS_RESOURCE);
@@ -119,17 +119,17 @@ public class ExtensionsIndexer extends AbstractProcessor {
                        // java6 does not support reading old index files
                }
        }
-       
+
        public static void readIndex(Reader reader, Set<String> entries) throws IOException {
                BufferedReader bufferedReader = new BufferedReader(reader);
-               
+
                String line;
                while ((line = bufferedReader.readLine()) != null) {
                        entries.add(line);
                }
-               
+
                reader.close();
        }
-       
+
 }
\ No newline at end of file
+
index 80221ac4cec3e49ed4118dd194e2496fd755134c..8cfdb2d3889b63b8d3e3151cf3938e8c283a242a 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Copyright 2012 Decebal Suiu
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
  * the License. You may obtain a copy of the License in the LICENSE file, or 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.
index 44b0846ffb1722ad68d5bb72a5b3c6020258347a..f6c82d0f8890c64c975f4fa552875b81a5deae77 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Copyright 2012 Decebal Suiu
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
  * the License. You may obtain a copy of the License in the LICENSE file, or 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.
@@ -18,11 +18,11 @@ import java.io.File;
  * Find a plugin descriptor in a directory (plugin repository).
  * You can find in manifest file @see DefaultPluginDescriptorFinder,
  * xml file, properties file, java services (with ServiceLoader), etc.
- * 
+ *
  * @author Decebal Suiu
  */
 public interface PluginDescriptorFinder {
 
        public PluginDescriptor find(File pluginRepository) throws PluginException;
-       
+
 }
index e048c1f8f262d2579dddbfdbdaef7e792c98a1ed..1b4f2a4fb5e1287abffa071c0b5d1766b862d778 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Copyright 2012 Decebal Suiu
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
  * the License. You may obtain a copy of the License in the LICENSE file, or 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.
index 67658f395a7368b89519c6f4eadc905742f30afa..21eff107c28d586165645ed17012b252fa710e57 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Copyright 2012 Decebal Suiu
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
  * the License. You may obtain a copy of the License in the LICENSE file, or 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.
@@ -18,12 +18,12 @@ package ro.fortsoft.pf4j;
 class PluginNotFoundException extends PluginException {
 
        private static final long serialVersionUID = 1L;
-       
+
        private String pluginId;
 
        public PluginNotFoundException(String pluginId) {
                super("Plugin '" + pluginId + "' not found.");
-               
+
                this.pluginId = pluginId;
        }
 
index dcdcc427a36ffa5319b6b3dedb25a4ca0946d83d..797fdd09f61ffbc551ba5bc64d7d2c1a39868765 100644 (file)
@@ -19,7 +19,7 @@ import java.util.List;
  * Directory whose contents are .zip files used as plugins.
  *
  * @author Decebal Suiu
- * @author Mário Franco
+ * @author MÃ\83¡rio Franco
  */
 public interface PluginRepository {
 
index 33c7b6fc7494b62ddb05b66614363ba9f624e097..9c9532805749e2d3b91a60f1be873b807929732c 100644 (file)
@@ -14,7 +14,7 @@ package ro.fortsoft.pf4j;
 
 /**
  * @author Decebal Suiu
- * @author Mário Franco
+ * @author MÃ\83¡rio Franco
  */
 public interface PluginStatusProvider {
 
index 0e7cd3ab00879d3e7d72c15b0998a3ffceda4599..fa57b2a939ec3e81a6f59628b6bb4dcf360ff67e 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Copyright 2013 Decebal Suiu
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
  * the License. You may obtain a copy of the License in the LICENSE file, or 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.
@@ -20,20 +20,20 @@ import java.util.NoSuchElementException;
  * @author Decebal Suiu
  */
 public enum RuntimeMode {
-       
+
        DEVELOPMENT("development"), // development
-    DEPLOYMENT("deployment"); // deployment            
+    DEPLOYMENT("deployment"); // deployment
 
     private final String name;
-    
+
        private static final Map<String, RuntimeMode> map = new HashMap<String, RuntimeMode>();
-       
+
        static {
                for (RuntimeMode mode : RuntimeMode.values()) {
                        map.put(mode.name, mode);
                }
        }
-       
+
        private RuntimeMode(final String name) {
         this.name = name;
     }
@@ -42,14 +42,14 @@ public enum RuntimeMode {
     public String toString() {
         return name;
     }
-       
+
     public static RuntimeMode byName(String name) {
        if (map.containsKey(name)) {
                return map.get(name);
        }
 
-       throw new NoSuchElementException("Cannot found PF4J runtime mode with name '" + name + 
+       throw new NoSuchElementException("Cannot found PF4J runtime mode with name '" + name +
                        "'. Must be 'development' or 'deployment'.");
     }
-    
-}
\ No newline at end of file
+
+}
index b50e8528bb671612ecb5e29dbc4b9af59c92c5f2..b06c1d9b4c9206e1242f35002dac2aaea393bd78 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Copyright 2013 Decebal Suiu
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
  * the License. You may obtain a copy of the License in the LICENSE file, or 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.
index 5c1f446985f2a343c7e41027913989b481b93d2f..06d898610cff4ee3d90aad4533d46cd2b409ccfb 100644 (file)
-/*\r
- * Copyright 2012 Decebal Suiu\r
- * \r
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with\r
- * the License. You may obtain a copy of the License in the LICENSE file, or at:\r
- * \r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- * \r
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on\r
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the\r
- * specific language governing permissions and limitations under the License.\r
- */\r
-package ro.fortsoft.pf4j.util;\r
-\r
-import java.util.ArrayList;\r
-import java.util.Collections;\r
-import java.util.HashMap;\r
-import java.util.List;\r
-import java.util.Map;\r
-import java.util.Stack;\r
-\r
-/**\r
- * @author Decebal Suiu\r
- */\r
-public class DirectedGraph<V> {\r
-\r
-    /**\r
-     * The implementation here is basically an adjacency list, but instead\r
-     * of an array of lists, a Map is used to map each vertex to its list of\r
-     * adjacent vertices.\r
-     */\r
-    private Map<V, List<V>> neighbors = new HashMap<V, List<V>>();\r
-\r
-    /**\r
-     * Add a vertex to the graph. Nothing happens if vertex is already in graph.\r
-     */\r
-    public void addVertex(V vertex) {\r
-        if (neighbors.containsKey(vertex)) {\r
-               return;\r
-        }\r
-        neighbors.put(vertex, new ArrayList<V>());\r
-    }\r
-\r
-    /**\r
-     * True if graph contains vertex.\r
-     */\r
-    public boolean containsVertex(V vertex) {\r
-        return neighbors.containsKey(vertex);\r
-    }\r
-\r
-    /**\r
-     * Add an edge to the graph; if either vertex does not exist, it's added.\r
-     * This implementation allows the creation of multi-edges and self-loops.\r
-     */\r
-    public void addEdge(V from, V to) {\r
-        this.addVertex(from);\r
-        this.addVertex(to);\r
-        neighbors.get(from).add(to);\r
-    }\r
-\r
-    /**\r
-     * Remove an edge from the graph. Nothing happens if no such edge.\r
-     * @throws IllegalArgumentException if either vertex doesn't exist.\r
-     */\r
-    public void remove(V from, V to) {\r
-        if (!(this.containsVertex(from) && this.containsVertex(to))) {\r
-            throw new IllegalArgumentException("Nonexistent vertex");\r
-        }\r
-        neighbors.get(from).remove(to);\r
-    }\r
-\r
-    /**\r
-     * Report (as a Map) the out-degree of each vertex.\r
-     */\r
-    public Map<V, Integer> outDegree() {\r
-        Map<V, Integer> result = new HashMap<V, Integer>();\r
-        for (V vertex : neighbors.keySet()) {\r
-               result.put(vertex, neighbors.get(vertex).size());\r
-        }\r
-\r
-        return result;\r
-    }\r
-\r
-    /**\r
-     * Report (as a Map) the in-degree of each vertex.\r
-     */\r
-    public Map<V,Integer> inDegree() {\r
-        Map<V, Integer> result = new HashMap<V, Integer>();\r
-        for (V vertex : neighbors.keySet()) {\r
-               result.put(vertex, 0); // all in-degrees are 0\r
-        }\r
-        for (V from : neighbors.keySet()) {\r
-            for (V to : neighbors.get(from)) {\r
-                result.put(to, result.get(to) + 1); // increment in-degree\r
-            }\r
-        }\r
-\r
-        return result;\r
-    }\r
-\r
-    /**\r
-     * Report (as a List) the topological sort of the vertices; null for no such sort.\r
-     */\r
-    public List<V> topologicalSort() {\r
-        Map<V, Integer> degree = inDegree();\r
-\r
-        // determine all vertices with zero in-degree\r
-        Stack<V> zeroVertices = new Stack<V>(); // stack as good as any here\r
-        for (V v : degree.keySet()) {\r
-            if (degree.get(v) == 0) {\r
-               zeroVertices.push(v);\r
-            }\r
-        }\r
-\r
-        // determine the topological order\r
-        List<V> result = new ArrayList<V>();\r
-        while (!zeroVertices.isEmpty()) {\r
-            V vertex = zeroVertices.pop(); // choose a vertex with zero in-degree\r
-            result.add(vertex); // vertex 'v' is next in topological order\r
-            // "remove" vertex 'v' by updating its neighbors\r
-            for (V neighbor : neighbors.get(vertex)) {\r
-                degree.put(neighbor, degree.get(neighbor) - 1);\r
-                // remember any vertices that now have zero in-degree\r
-                if (degree.get(neighbor) == 0) {\r
-                       zeroVertices.push(neighbor);\r
-                }\r
-            }\r
-        }\r
-\r
-        // check that we have used the entire graph (if not, there was a cycle)\r
-        if (result.size() != neighbors.size()) {\r
-               return null;\r
-        }\r
-\r
-        return result;\r
-    }\r
-\r
-    /**\r
-     * Report (as a List) the reverse topological sort of the vertices; null for no such sort.\r
-     */\r
-    public List<V> reverseTopologicalSort() {\r
-       List<V> list = topologicalSort();\r
-       if (list == null) {\r
-               return null;\r
-       }\r
-       Collections.reverse(list);\r
-\r
-       return list;\r
-    }\r
-\r
-    /**\r
-     * True if graph is a dag (directed acyclic graph).\r
-     */\r
-    public boolean isDag () {\r
-        return topologicalSort() != null;\r
-    }\r
-\r
-    /**\r
-     * String representation of graph.\r
-     */\r
-    @Override\r
-    public String toString() {\r
-        StringBuffer sb = new StringBuffer();\r
-        for (V vertex : neighbors.keySet()) {\r
-               sb.append("\n   " + vertex + " -> " + neighbors.get(vertex));\r
-        }\r
-\r
-        return sb.toString();\r
-    }\r
-\r
-}\r
+/*
+ * Copyright 2012 Decebal Suiu
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
+ * the License. You may obtain a copy of the License in the LICENSE file, or 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 ro.fortsoft.pf4j.util;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Stack;
+
+/**
+ * @author Decebal Suiu
+ */
+public class DirectedGraph<V> {
+
+    /**
+     * The implementation here is basically an adjacency list, but instead
+     * of an array of lists, a Map is used to map each vertex to its list of
+     * adjacent vertices.
+     */
+    private Map<V, List<V>> neighbors = new HashMap<V, List<V>>();
+
+    /**
+     * Add a vertex to the graph. Nothing happens if vertex is already in graph.
+     */
+    public void addVertex(V vertex) {
+        if (neighbors.containsKey(vertex)) {
+               return;
+        }
+        neighbors.put(vertex, new ArrayList<V>());
+    }
+
+    /**
+     * True if graph contains vertex.
+     */
+    public boolean containsVertex(V vertex) {
+        return neighbors.containsKey(vertex);
+    }
+
+    /**
+     * Add an edge to the graph; if either vertex does not exist, it's added.
+     * This implementation allows the creation of multi-edges and self-loops.
+     */
+    public void addEdge(V from, V to) {
+        this.addVertex(from);
+        this.addVertex(to);
+        neighbors.get(from).add(to);
+    }
+
+    /**
+     * Remove an edge from the graph. Nothing happens if no such edge.
+     * @throws IllegalArgumentException if either vertex doesn't exist.
+     */
+    public void remove(V from, V to) {
+        if (!(this.containsVertex(from) && this.containsVertex(to))) {
+            throw new IllegalArgumentException("Nonexistent vertex");
+        }
+        neighbors.get(from).remove(to);
+    }
+
+    /**
+     * Report (as a Map) the out-degree of each vertex.
+     */
+    public Map<V, Integer> outDegree() {
+        Map<V, Integer> result = new HashMap<V, Integer>();
+        for (V vertex : neighbors.keySet()) {
+               result.put(vertex, neighbors.get(vertex).size());
+        }
+
+        return result;
+    }
+
+    /**
+     * Report (as a Map) the in-degree of each vertex.
+     */
+    public Map<V,Integer> inDegree() {
+        Map<V, Integer> result = new HashMap<V, Integer>();
+        for (V vertex : neighbors.keySet()) {
+               result.put(vertex, 0); // all in-degrees are 0
+        }
+        for (V from : neighbors.keySet()) {
+            for (V to : neighbors.get(from)) {
+                result.put(to, result.get(to) + 1); // increment in-degree
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * Report (as a List) the topological sort of the vertices; null for no such sort.
+     */
+    public List<V> topologicalSort() {
+        Map<V, Integer> degree = inDegree();
+
+        // determine all vertices with zero in-degree
+        Stack<V> zeroVertices = new Stack<V>(); // stack as good as any here
+        for (V v : degree.keySet()) {
+            if (degree.get(v) == 0) {
+               zeroVertices.push(v);
+            }
+        }
+
+        // determine the topological order
+        List<V> result = new ArrayList<V>();
+        while (!zeroVertices.isEmpty()) {
+            V vertex = zeroVertices.pop(); // choose a vertex with zero in-degree
+            result.add(vertex); // vertex 'v' is next in topological order
+            // "remove" vertex 'v' by updating its neighbors
+            for (V neighbor : neighbors.get(vertex)) {
+                degree.put(neighbor, degree.get(neighbor) - 1);
+                // remember any vertices that now have zero in-degree
+                if (degree.get(neighbor) == 0) {
+                       zeroVertices.push(neighbor);
+                }
+            }
+        }
+
+        // check that we have used the entire graph (if not, there was a cycle)
+        if (result.size() != neighbors.size()) {
+               return null;
+        }
+
+        return result;
+    }
+
+    /**
+     * Report (as a List) the reverse topological sort of the vertices; null for no such sort.
+     */
+    public List<V> reverseTopologicalSort() {
+       List<V> list = topologicalSort();
+       if (list == null) {
+               return null;
+       }
+       Collections.reverse(list);
+
+       return list;
+    }
+
+    /**
+     * True if graph is a dag (directed acyclic graph).
+     */
+    public boolean isDag () {
+        return topologicalSort() != null;
+    }
+
+    /**
+     * String representation of graph.
+     */
+    @Override
+    public String toString() {
+        StringBuffer sb = new StringBuffer();
+        for (V vertex : neighbors.keySet()) {
+               sb.append("\n   " + vertex + " -> " + neighbors.get(vertex));
+        }
+
+        return sb.toString();
+    }
+
+}
index 38772229f042e089d2eeb3545d09901719844517..e73fd3b6174c97a8666ac49d0795741c60e11049 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Copyright 2012 Decebal Suiu
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
  * the License. You may obtain a copy of the License in the LICENSE file, or 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.
@@ -17,7 +17,7 @@ import java.io.FileFilter;
 
 /**
  * Filter accepts files that are directories.
- * 
+ *
  * @author Decebal Suiu
  */
 public class DirectoryFileFilter implements FileFilter {
index 03ed0b7fd86e671c4e31d5b9fef7c6e46fabfa04..d1e17bcb237ffffbd587d2ccd08c43c54cbf140b 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Copyright 2012 Decebal Suiu
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
  * the License. You may obtain a copy of the License in the LICENSE file, or 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.
@@ -17,7 +17,7 @@ import java.io.FileFilter;
 
 /**
  * Filter accepts any file ending in extension. The case of the filename is ignored.
- * 
+ *
  * @author Decebal Suiu
  */
 public class ExtensionFileFilter implements FileFilter {
index eed53f178d049fe9b11233cfe8a0e0940b306d46..cfd23557f95d44684877c06eaac0fce679044641 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Copyright 2013 Decebal Suiu
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
  * the License. You may obtain a copy of the License in the LICENSE file, or 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.
@@ -17,7 +17,7 @@ import java.io.FileFilter;
 
 /**
  * Filter that only accepts hidden files.
- * 
+ *
  * @author decebal.suiu
  */
 public class HiddenFilter implements FileFilter {
index 5c1f0ca90354bc7a9d74c61d08471286e0adfbda..24fc12e606a534773487c5b3fb2307d13afefc70 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Copyright 2012 Decebal Suiu
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
  * the License. You may obtain a copy of the License in the LICENSE file, or 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.
index 68ff3e0ecbd9a49be770e7012b44a70d520211e0..83f8dd02111a428e97539fbd5d5e514ae6f89eb3 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Copyright 2013 Decebal Suiu
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
  * the License. You may obtain a copy of the License in the LICENSE file, or 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.
index 1938c2769f4999ddc9b2ddc71b8c0f464f554df1..94cd640af1ede138f81247398973b6f05456f900 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Copyright 2012 Decebal Suiu
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
  * the License. You may obtain a copy of the License in the LICENSE file, or 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.
index 74d60d507ab86652e692dcf2b68095b738c1acb6..d00d3ac4b36b4c7928aa7e9bb13640c8458d93af 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Copyright 2012 Decebal Suiu
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
  * the License. You may obtain a copy of the License in the LICENSE file, or 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.
index 9743fb63cebd04bc707bb3104f947e8a1fa9a5f5..bae9265b0c522bc412e5b37099f69ead0e280494 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Copyright 2012 Decebal Suiu
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
  * the License. You may obtain a copy of the License in the LICENSE file, or 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.