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