mirror of https://github.com/pf4j/pf4j.git
Decebal Suiu
12 years ago
21 changed files with 390 additions and 166 deletions
@ -0,0 +1,6 @@ |
|||||||
|
######################################## |
||||||
|
# - load all plugins except these |
||||||
|
# - add one plugin id on each line |
||||||
|
# - put this file in plugins folder |
||||||
|
######################################## |
||||||
|
welcome-plugin |
@ -0,0 +1,6 @@ |
|||||||
|
######################################## |
||||||
|
# - load only these plugins |
||||||
|
# - add one plugin id on each line |
||||||
|
# - put this file in plugins folder |
||||||
|
######################################## |
||||||
|
welcome-plugin |
@ -0,0 +1,97 @@ |
|||||||
|
/* |
||||||
|
* 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; |
||||||
|
|
||||||
|
import java.io.File; |
||||||
|
import java.io.FileInputStream; |
||||||
|
import java.io.FileNotFoundException; |
||||||
|
import java.io.IOException; |
||||||
|
import java.io.InputStream; |
||||||
|
import java.util.Properties; |
||||||
|
|
||||||
|
import ro.fortsoft.pf4j.util.StringUtils; |
||||||
|
|
||||||
|
/** |
||||||
|
* Find a plugin descriptor in a properties file (in plugin repository). |
||||||
|
* |
||||||
|
* @author Decebal Suiu |
||||||
|
*/ |
||||||
|
public class PropertiesPluginDescriptorFinder implements PluginDescriptorFinder { |
||||||
|
|
||||||
|
private String propertiesFileName; |
||||||
|
|
||||||
|
public PropertiesPluginDescriptorFinder() { |
||||||
|
this("plugin.properties"); |
||||||
|
} |
||||||
|
|
||||||
|
public PropertiesPluginDescriptorFinder(String propertiesFileName) { |
||||||
|
this.propertiesFileName = propertiesFileName; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public PluginDescriptor find(File pluginRepository) throws PluginException { |
||||||
|
File propertiesFile = new File(pluginRepository, propertiesFileName); |
||||||
|
if (!propertiesFile.exists()) { |
||||||
|
throw new PluginException("Cannot find '" + propertiesFile + "' file"); |
||||||
|
} |
||||||
|
|
||||||
|
InputStream input = null; |
||||||
|
try { |
||||||
|
input = new FileInputStream(propertiesFile); |
||||||
|
} catch (FileNotFoundException e) { |
||||||
|
// not happening
|
||||||
|
} |
||||||
|
|
||||||
|
Properties properties = new Properties(); |
||||||
|
try { |
||||||
|
properties.load(input); |
||||||
|
} catch (IOException e) { |
||||||
|
throw new PluginException(e.getMessage(), e); |
||||||
|
} finally { |
||||||
|
try { |
||||||
|
input.close(); |
||||||
|
} catch (IOException e) { |
||||||
|
throw new PluginException(e.getMessage(), e); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
PluginDescriptor pluginDescriptor = new PluginDescriptor(); |
||||||
|
|
||||||
|
// TODO validate !!!
|
||||||
|
String id = properties.getProperty("plugin.id"); |
||||||
|
if (StringUtils.isEmpty(id)) { |
||||||
|
throw new PluginException("plugin.id cannot be empty"); |
||||||
|
} |
||||||
|
pluginDescriptor.setPluginId(id); |
||||||
|
|
||||||
|
String clazz = properties.getProperty("plugin.class"); |
||||||
|
if (StringUtils.isEmpty(clazz)) { |
||||||
|
throw new PluginException("plugin.class cannot be empty"); |
||||||
|
} |
||||||
|
pluginDescriptor.setPluginClass(clazz); |
||||||
|
|
||||||
|
String version = properties.getProperty("plugin.version"); |
||||||
|
if (StringUtils.isEmpty(version)) { |
||||||
|
throw new PluginException("plugin.version cannot be empty"); |
||||||
|
} |
||||||
|
pluginDescriptor.setPluginVersion(PluginVersion.createVersion(version)); |
||||||
|
|
||||||
|
String provider = properties.getProperty("plugin.provider"); |
||||||
|
pluginDescriptor.setProvider(provider); |
||||||
|
String dependencies = properties.getProperty("plugin.dependencies"); |
||||||
|
pluginDescriptor.setDependencies(dependencies); |
||||||
|
|
||||||
|
return pluginDescriptor; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,53 @@ |
|||||||
|
/* |
||||||
|
* 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.io.BufferedReader; |
||||||
|
import java.io.File; |
||||||
|
import java.io.FileReader; |
||||||
|
import java.io.IOException; |
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.Collections; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Decebal Suiu |
||||||
|
*/ |
||||||
|
public class FileUtils { |
||||||
|
|
||||||
|
public static List<String> readLines(File file, boolean ignoreComments) throws IOException { |
||||||
|
if (!file.exists() || !file.isFile()) { |
||||||
|
return Collections.emptyList(); |
||||||
|
} |
||||||
|
|
||||||
|
List<String> lines = new ArrayList<String>(); |
||||||
|
|
||||||
|
BufferedReader reader = null; |
||||||
|
try { |
||||||
|
reader = new BufferedReader(new FileReader(file)); |
||||||
|
String line; |
||||||
|
while ((line = reader.readLine()) != null) { |
||||||
|
if (ignoreComments && !line.startsWith("#") && !lines.contains(line)) { |
||||||
|
lines.add(line); |
||||||
|
} |
||||||
|
} |
||||||
|
} finally { |
||||||
|
if (reader != null) { |
||||||
|
reader.close(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return lines; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,24 @@ |
|||||||
|
/* |
||||||
|
* 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; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Decebal Suiu |
||||||
|
*/ |
||||||
|
public class StringUtils { |
||||||
|
|
||||||
|
public static boolean isEmpty(String str) { |
||||||
|
return (str == null) || str.isEmpty(); |
||||||
|
} |
||||||
|
|
||||||
|
} |
Loading…
Reference in new issue