From: <her...@us...> - 2009-02-04 20:01:14
|
Revision: 1581 http://aperture.svn.sourceforge.net/aperture/?rev=1581&view=rev Author: herko_ter_horst Date: 2009-02-04 20:01:12 +0000 (Wed, 04 Feb 2009) Log Message: ----------- Created a first two poms. Added Paths: ----------- aperture/trunk/core/ aperture/trunk/core/pom.xml aperture/trunk/pom.xml Added: aperture/trunk/core/pom.xml =================================================================== --- aperture/trunk/core/pom.xml (rev 0) +++ aperture/trunk/core/pom.xml 2009-02-04 20:01:12 UTC (rev 1581) @@ -0,0 +1,31 @@ +<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> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture</artifactId> + <version>1.3.0-SNAPSHOT</version> + </parent> + + <artifactId>aperture-core</artifactId> + <packaging>pom</packaging> + + <name>Aperture Core</name> + <description>Core functionality</description> + + <modules> +<!-- + <module>accessor</module> + <module>crawler</module> + <module>datasource</module> + <module>rdf</module> + <module>test</module> + <module>util</module> + <module>vocabulary</module> +--> + </modules> +</project> Added: aperture/trunk/pom.xml =================================================================== --- aperture/trunk/pom.xml (rev 0) +++ aperture/trunk/pom.xml 2009-02-04 20:01:12 UTC (rev 1581) @@ -0,0 +1,157 @@ +<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> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-root-pom</artifactId> + <version>1</version> + </parent> + + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture</artifactId> + <packaging>pom</packaging> + <version>1.3.0-SNAPSHOT</version> + + <name>Aperture</name> + <description>Aperture content and metadata extraction framework</description> + + <licenses> + <license> + <name>BSD-style license</name> + <distribution>repo</distribution> + </license> + </licenses> + + <modules> + <module>core</module> + </modules> + + <properties> + <aperture.version>1.3.0-SNAPSHOT</aperture.version> + <aperture.tools.version>1.0.0-SNAPSHOT</aperture.tools.version> + <rdf2go.version>4.7.0</rdf2go.version> + <openrdf.sesame.version>2.3.0-SNAPSHOT</openrdf.sesame.version> + </properties> + + <dependencyManagement> + <dependencies> + <!-- Aperture Tools --> + <dependency> + <groupId>org.semanticdesktop.nepomuk</groupId> + <artifactId>aperture-tools-unionsail</artifactId> + <version>${aperture.tools.version}</version> + </dependency> + <dependency> + <groupId>org.semanticdesktop.nepomuk</groupId> + <artifactId>aperture-tools-infsail</artifactId> + <version>${aperture.tools.version}</version> + </dependency> + + <!-- OpenRDF Sesame --> + <dependency> + <groupId>org.openrdf.sesame</groupId> + <artifactId>sesame</artifactId> + <version>${openrdf.sesame.version}</version> + <type>pom</type> + <scope>import</scope> + </dependency> + + <!-- RDF2Go --> + <dependency> + <groupId>org.semweb4j</groupId> + <artifactId>rdf2go.api</artifactId> + <version>${rdf2go.version}</version> + </dependency> + <dependency> + <groupId>org.semweb4j</groupId> + <artifactId>rdf2go.impl.sesame22</artifactId> + <version>${rdf2go.version}</version> + </dependency> + + <!-- Testing --> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.5</version> + <scope>test</scope> + </dependency> + </dependencies> + </dependencyManagement> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <source>1.5</source> + <target>1.5</target> + </configuration> + </plugin> + </plugins> + <pluginManagement> + <plugins> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <configuration> + <remoteOBR>repository.xml</remoteOBR> + </configuration> + <executions> + <execution> + <id>bundle-manifest</id> + <phase>process-classes</phase> + <goals> + <goal>manifest</goal> + </goals> + </execution> + <execution> + <id>bundle-package</id> + <phase>package</phase> + <goals> + <goal>bundle</goal> + </goals> + </execution> + <execution> + <id>bundle-install</id> + <phase>install</phase> + <goals> + <goal>install</goal> + </goals> + </execution> + <execution> + <id>bundle-deploy</id> + <phase>deploy</phase> + <goals> + <goal>deploy</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </pluginManagement> + </build> + + <repositories> + <repository> + <releases> + <enabled>true</enabled> + </releases> + <snapshots> + <enabled>false</enabled> + </snapshots> + <id>aduna-opensource.releases</id> + <name>Aduna Open Source - Maven releases</name> + <url>http://repo.aduna-software.org/maven2/releases</url> + </repository> + </repositories> + + <scm> + <connection>scm:svn:http://aperture.svn.sourceforge.net/svnroot/aperture/aperture/trunk</connection> + <developerConnection>scm:svn:https://aperture.svn.sourceforge.net/svnroot/aperture/aperture/trunk</developerConnection> + <url>http://aperture.svn.sourceforge.net/viewvc/aperture/aperture/trunk/</url> + </scm> + +</project> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <her...@us...> - 2009-02-06 17:31:21
|
Revision: 1595 http://aperture.svn.sourceforge.net/aperture/?rev=1595&view=rev Author: herko_ter_horst Date: 2009-02-06 17:31:18 +0000 (Fri, 06 Feb 2009) Log Message: ----------- Added OSGi manifest generation. Modified Paths: -------------- aperture/trunk/core/rdf/core/pom.xml aperture/trunk/core/rdf/util/pom.xml aperture/trunk/core/util/pom.xml aperture/trunk/core/vocabulary/core/pom.xml aperture/trunk/pom.xml Modified: aperture/trunk/core/rdf/core/pom.xml =================================================================== --- aperture/trunk/core/rdf/core/pom.xml 2009-02-06 17:20:25 UTC (rev 1594) +++ aperture/trunk/core/rdf/core/pom.xml 2009-02-06 17:31:18 UTC (rev 1595) @@ -25,5 +25,29 @@ <groupId>org.semweb4j</groupId> <artifactId>rdf2go.api</artifactId> </dependency> - </dependencies> + </dependencies> + + <build> + <plugins> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Export-Package>org.semanticdesktop.aperture.rdf,org.semanticdesktop.aperture.rdf.impl</Export-Package> + </instructions> + </configuration> + </plugin> + </plugins> + </build> + </project> Modified: aperture/trunk/core/rdf/util/pom.xml =================================================================== --- aperture/trunk/core/rdf/util/pom.xml 2009-02-06 17:20:25 UTC (rev 1594) +++ aperture/trunk/core/rdf/util/pom.xml 2009-02-06 17:31:18 UTC (rev 1595) @@ -40,4 +40,27 @@ <artifactId>aduna-commons-xml</artifactId> </dependency> </dependencies> + + <build> + <plugins> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Export-Package>org.semanticdesktop.aperture.rdf.util</Export-Package> + </instructions> + </configuration> + </plugin> + </plugins> + </build> </project> Modified: aperture/trunk/core/util/pom.xml =================================================================== --- aperture/trunk/core/util/pom.xml 2009-02-06 17:20:25 UTC (rev 1594) +++ aperture/trunk/core/util/pom.xml 2009-02-06 17:31:18 UTC (rev 1595) @@ -15,5 +15,27 @@ <name>Aperture Core: Util</name> <description>Utilities</description> - + + <build> + <plugins> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Export-Package>org.semanticdesktop.aperture.util</Export-Package> + </instructions> + </configuration> + </plugin> + </plugins> + </build> </project> Modified: aperture/trunk/core/vocabulary/core/pom.xml =================================================================== --- aperture/trunk/core/vocabulary/core/pom.xml 2009-02-06 17:20:25 UTC (rev 1594) +++ aperture/trunk/core/vocabulary/core/pom.xml 2009-02-06 17:31:18 UTC (rev 1595) @@ -121,6 +121,24 @@ </vocabularies> </configuration> </plugin> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Export-Package>org.semanticdesktop.aperture.vocabulary</Export-Package> + </instructions> + </configuration> + </plugin> </plugins> </build> </project> Modified: aperture/trunk/pom.xml =================================================================== --- aperture/trunk/pom.xml 2009-02-06 17:20:25 UTC (rev 1594) +++ aperture/trunk/pom.xml 2009-02-06 17:31:18 UTC (rev 1595) @@ -151,8 +151,10 @@ <artifactId>aperture-vocabulary-maven-plugin</artifactId> <executions> <execution> - <goals><goal>generate</goal></goals> <phase>generate-sources</phase> + <goals> + <goal>generate</goal> + </goals> </execution> </executions> </plugin> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <her...@us...> - 2009-02-06 17:09:09
|
Revision: 1593 http://aperture.svn.sourceforge.net/aperture/?rev=1593&view=rev Author: herko_ter_horst Date: 2009-02-06 17:09:05 +0000 (Fri, 06 Feb 2009) Log Message: ----------- Imported some code from monolithic trunk, made the base modules compile. Created Maven plugin to generated vocabularies using VocabularyWriter. Modified Paths: -------------- aperture/trunk/core/datasource/maven-plugin/pom.xml aperture/trunk/core/pom.xml aperture/trunk/core/rdf/core/pom.xml aperture/trunk/core/rdf/core/src/main/java/org/semanticdesktop/aperture/rdf/RDFContainerFactory.java aperture/trunk/core/rdf/core/src/main/java/org/semanticdesktop/aperture/rdf/impl/RDFContainerFactoryImpl.java aperture/trunk/core/rdf/util/pom.xml aperture/trunk/core/util/src/main/java/org/semanticdesktop/aperture/util/IOUtil.java aperture/trunk/core/util/src/main/java/org/semanticdesktop/aperture/util/UriUtil.java aperture/trunk/core/vocabulary/core/pom.xml aperture/trunk/core/vocabulary/maven-plugin/pom.xml aperture/trunk/core/vocabulary/maven-plugin/src/main/java/org/semanticdesktop/aperture/vocabulary/VocabularyWriterMojo.java aperture/trunk/pom.xml Added Paths: ----------- aperture/trunk/core/datasource/core/ aperture/trunk/core/datasource/maven-plugin/src/main/java/org/semanticdesktop/aperture/datasource/ aperture/trunk/core/datasource/maven-plugin/src/main/java/org/semanticdesktop/aperture/datasource/DataSourceClassGenerator.java aperture/trunk/core/datasource/maven-plugin/src/main/java/org/semanticdesktop/aperture/datasource/DataSourceClassGeneratorMojo.java aperture/trunk/core/rdf/util/src/main/java/org/semanticdesktop/aperture/rdf/util/InferenceUtil.java aperture/trunk/core/rdf/util/src/main/java/org/semanticdesktop/aperture/rdf/util/ModelUtil.java aperture/trunk/core/rdf/util/src/main/java/org/semanticdesktop/aperture/rdf/util/OntologyUtil.java aperture/trunk/core/rdf/util/src/main/java/org/semanticdesktop/aperture/rdf/util/XmlSafetyUtils.java aperture/trunk/core/vocabulary/core/src/main/resources/ aperture/trunk/core/vocabulary/core/src/main/resources/org/ aperture/trunk/core/vocabulary/core/src/main/resources/org/semanticdesktop/ aperture/trunk/core/vocabulary/core/src/main/resources/org/semanticdesktop/aperture/ aperture/trunk/core/vocabulary/core/src/main/resources/org/semanticdesktop/aperture/vocabulary/ aperture/trunk/core/vocabulary/core/src/main/resources/org/semanticdesktop/aperture/vocabulary/README.txt aperture/trunk/core/vocabulary/core/src/main/resources/org/semanticdesktop/aperture/vocabulary/fresnel.owl aperture/trunk/core/vocabulary/core/src/main/resources/org/semanticdesktop/aperture/vocabulary/geo.rdfs aperture/trunk/core/vocabulary/core/src/main/resources/org/semanticdesktop/aperture/vocabulary/nao.rdfs aperture/trunk/core/vocabulary/core/src/main/resources/org/semanticdesktop/aperture/vocabulary/ncal.rdfs aperture/trunk/core/vocabulary/core/src/main/resources/org/semanticdesktop/aperture/vocabulary/nco.rdfs aperture/trunk/core/vocabulary/core/src/main/resources/org/semanticdesktop/aperture/vocabulary/nexif.rdfs aperture/trunk/core/vocabulary/core/src/main/resources/org/semanticdesktop/aperture/vocabulary/nfo.rdfs aperture/trunk/core/vocabulary/core/src/main/resources/org/semanticdesktop/aperture/vocabulary/nid3.rdfs aperture/trunk/core/vocabulary/core/src/main/resources/org/semanticdesktop/aperture/vocabulary/nie.rdfs aperture/trunk/core/vocabulary/core/src/main/resources/org/semanticdesktop/aperture/vocabulary/nmo.rdfs aperture/trunk/core/vocabulary/core/src/main/resources/org/semanticdesktop/aperture/vocabulary/source2.rdfs aperture/trunk/core/vocabulary/core/src/main/resources/org/semanticdesktop/aperture/vocabulary/sourceformat.rdfs aperture/trunk/core/vocabulary/core/src/main/resources/org/semanticdesktop/aperture/vocabulary/tagging.rdfs aperture/trunk/core/vocabulary/maven-plugin/src/main/java/org/semanticdesktop/aperture/vocabulary/Vocabulary.java aperture/trunk/core/vocabulary/maven-plugin/src/main/java/org/semanticdesktop/aperture/vocabulary/VocabularyWriter.java Removed Paths: ------------- aperture/trunk/core/util/src/main/java/org/semanticdesktop/aperture/util/DataSourceClassGenerator.java aperture/trunk/core/util/src/main/java/org/semanticdesktop/aperture/util/InferenceUtil.java aperture/trunk/core/util/src/main/java/org/semanticdesktop/aperture/util/ModelUtil.java aperture/trunk/core/util/src/main/java/org/semanticdesktop/aperture/util/VocabularyWriter.java aperture/trunk/core/util/src/main/java/org/semanticdesktop/aperture/util/XmlSafetyUtils.java aperture/trunk/core/util/src/main/java/org/semanticdesktop/aperture/util/ontology/ Property Changed: ---------------- aperture/trunk/core/datasource/maven-plugin/ aperture/trunk/core/vocabulary/core/ aperture/trunk/core/vocabulary/core/src/main/java/org/semanticdesktop/aperture/vocabulary/ Property changes on: aperture/trunk/core/datasource/maven-plugin ___________________________________________________________________ Added: svn:ignore + .classpath .project target Modified: aperture/trunk/core/datasource/maven-plugin/pom.xml =================================================================== --- aperture/trunk/core/datasource/maven-plugin/pom.xml 2009-02-06 17:04:50 UTC (rev 1592) +++ aperture/trunk/core/datasource/maven-plugin/pom.xml 2009-02-06 17:09:05 UTC (rev 1593) @@ -19,15 +19,19 @@ <dependencies> <dependency> - <!-- Used by the classes this plugin generates --> <groupId>org.semanticdesktop.aperture</groupId> - <artifactId>aperture-util</artifactId> - <scope>provided</scope> + <artifactId>aperture-rdf-util</artifactId> </dependency> <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-vocabulary-core</artifactId> + </dependency> + + <dependency> <groupId>org.semweb4j</groupId> <artifactId>rdf2go.api</artifactId> </dependency> + <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-plugin-api</artifactId> Copied: aperture/trunk/core/datasource/maven-plugin/src/main/java/org/semanticdesktop/aperture/datasource/DataSourceClassGenerator.java (from rev 1589, aperture/trunk/core/util/src/main/java/org/semanticdesktop/aperture/util/DataSourceClassGenerator.java) =================================================================== --- aperture/trunk/core/datasource/maven-plugin/src/main/java/org/semanticdesktop/aperture/datasource/DataSourceClassGenerator.java (rev 0) +++ aperture/trunk/core/datasource/maven-plugin/src/main/java/org/semanticdesktop/aperture/datasource/DataSourceClassGenerator.java 2009-02-06 17:09:05 UTC (rev 1593) @@ -0,0 +1,801 @@ +/* + * Copyright (c) 2006 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.datasource; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.PrintStream; +import java.io.Reader; +import java.util.Collections; +import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.TreeMap; +import java.util.Map.Entry; + +import org.ontoware.aifbcommons.collection.ClosableIterator; +import org.ontoware.rdf2go.RDF2Go; +import org.ontoware.rdf2go.model.Model; +import org.ontoware.rdf2go.model.QueryResultTable; +import org.ontoware.rdf2go.model.QueryRow; +import org.ontoware.rdf2go.model.Syntax; +import org.ontoware.rdf2go.model.node.Node; +import org.ontoware.rdf2go.model.node.Resource; +import org.ontoware.rdf2go.model.node.URI; +import org.ontoware.rdf2go.model.node.impl.URIImpl; +import org.ontoware.rdf2go.vocabulary.RDF; +import org.ontoware.rdf2go.vocabulary.RDFS; +import org.ontoware.rdf2go.vocabulary.XSD; +import org.semanticdesktop.aperture.rdf.util.ModelUtil; +import org.semanticdesktop.aperture.vocabulary.DATASOURCE; +import org.semanticdesktop.aperture.vocabulary.FRESNEL; +import org.semanticdesktop.aperture.vocabulary.SOURCEFORMAT; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** A simple generator for the DataSource convenience classes */ +public class DataSourceClassGenerator { + + private static Logger log = LoggerFactory.getLogger(DataSourceClassGenerator.class); + + /** Array of java reserved words */ + public static final String[] JAVA_RESERVED_WORDS = { "abstract", "continue", "for", "new", "switch", + "assert", "default", "goto", "package", "synchronized", "boolean", "do", "if", "private", "this", + "break", "double", "implements", "protected", "throw", "byte", "else", "import", "public", + "throws", "case", "enum", "instanceof", "return", "transient", "catch", "extends", "int", + "short", "try", "char", "final", "interface", "static", "void", "class", "finally", "long", + "strictfp", "volatile", "const", "float", "native", "super", "while" }; + + /** Set of java reserved words */ + public static final Set<String> JAVA_RESERVED_WORDS_SET = prepareJavaKeywordSet(); + + String inputRdfFilePath = null; + + String outputDirectoryPath = null; + + String outputFileName = null; + + String classUri = null; + + String packageName = null; + + String vocabularyClassName = null; + + Model myModel = null; + + // output stream + PrintStream outputStream; + + // transform variables + private File inputRdfFile; + + private File outputDirFile; + + private File outputFile; + + private Syntax inputFileSyntax; + + private boolean domainBoundableDataSource = false; + + // avoid duplicates + HashMap<String, String> uriToLocalName = new HashMap<String, String>(); + + // flag that forces the source generation even if the generated class file + // is newer than the ontology file + private boolean forceGeneration; + + /** constructor */ + public DataSourceClassGenerator() { + super(); + forceGeneration = false; + } + + private static Set<String> prepareJavaKeywordSet() { + Set<String> result = new HashSet<String>(100); + for (String keyword : JAVA_RESERVED_WORDS) { + result.add(keyword); + } + return Collections.unmodifiableSet(result); + } + + /** + * Does the job. + * + * @param args command line arguments + * @throws Exception if something goes wrong + */ + public void go(String[] args) throws Exception { + getOpt(args); + + if (ontologyUpToDate()) { + return; + } + loadOnt(); + writeDataSourceClass(); + } + + private boolean ontologyUpToDate() { + if (outputFile.canRead() && !forceGeneration) { + long input = inputRdfFile.lastModified(); + long output = outputFile.lastModified(); + return output >= input; + } + else { + return false; + } + } + + private void loadOnt() throws Exception { + // read + myModel = RDF2Go.getModelFactory().createModel(); + myModel.open(); + inputFileSyntax = getSyntax(inputRdfFilePath); + // System.out + // .println("reading from " + inputRdfFile.getAbsolutePath() + " in format " + inputFileSyntax); + Reader reader = new BufferedReader(new FileReader(inputRdfFile)); + myModel.readFrom(reader, inputFileSyntax); + DATASOURCE.getDATASOURCEOntology(myModel); + SOURCEFORMAT.getSOURCEFORMATOntology(myModel); + reader.close(); + } + + private Syntax getSyntax(String fileName) { + int lastDot = fileName.lastIndexOf('.'); + if (lastDot == -1) { + return Syntax.RdfXml; + } + else { + String extension = fileName.substring(lastDot + 1); + if ("rdf".equals(extension) || "rdfs".equals(extension)) { + return Syntax.RdfXml; + } + else if ("ttl".equals(extension) || "nt".equals(extension) || "n3".equals(extension)) { + return Syntax.Turtle; + } + else if ("trix".equals(extension)) { + return Syntax.Trix; + } + else if ("trig".equals(extension)) { + return Syntax.Trig; + } + } + return null; + } + + private void writeDataSourceClass() throws Exception { + + // prepare output + outputStream = new PrintStream(outputFile); + try { + + // first prepare the options list + URI fresnelLensURI = getFresnelLensURI(myModel, classUri); + List<URI> optionsList = getConfigurationOptionsList(fresnelLensURI); + + // preamble + outputStream.println("/*"); + outputStream.println(" * Copyright (c) 2006 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH."); + outputStream.println(" * All rights reserved."); + outputStream.println(" * "); + outputStream.println(" * Licensed under the Aperture BSD-style license."); + outputStream.println(" */"); + outputStream.println("package " + packageName + ";"); + outputStream.println("import " + URI.class.getName() + ";"); + outputStream.println("import " + Node.class.getName() + ";"); + outputStream.println("import " + ModelUtil.class.getName() + ";"); + outputStream.println("import org.semanticdesktop.aperture.datasource.DataSource;"); + outputStream.println("import org.semanticdesktop.aperture.datasource.base.DataSourceBase;"); + //outputStream.println("import org.semanticdesktop.aperture.datasource.config.DomainBoundaries;"); + outputStream.println("import org.semanticdesktop.aperture.datasource.config.ConfigurationUtil;"); + if (domainBoundableDataSource) { + outputStream.println("import org.semanticdesktop.aperture.datasource.config.DomainBoundableDataSource;"); + } + outputStream.println("import org.semanticdesktop.aperture.util.ModelUtil;"); + outputStream.println("import java.util.Collection;"); + outputStream.println("import java.util.List;"); + outputStream.println("import java.util.LinkedList;"); + outputStream.println(); + outputStream.println("/**"); + outputStream.println(" * Data source class file. Created by " + DataSourceClassGenerator.class.getName() + " on " + new Date()); + outputStream.println(" * input file: " + inputRdfFilePath); + outputStream.println(" * class uri: " + classUri); + outputStream.println(" */"); + outputStream.println("public class " + outputFileName + " extends " + + ((domainBoundableDataSource) ? "DomainBoundableDataSource" : "DataSourceBase") + + " {"); + outputStream.println(); + generateGetTypeMethod(); + + for (URI uri : optionsList) { + generateElement(uri); + } + + // end + outputStream.println("}"); + } + finally { + outputStream.close(); + } + // System.out.println("successfully wrote file to " + outputFile); + } + + private void generateGetTypeMethod() { + outputStream.println(" /**"); + outputStream.println(" * @see DataSource#getType()"); + outputStream.println(" */"); + outputStream.println(" public URI getType() {"); + outputStream.println(" return " + vocabularyClassName + "." + outputFileName + ";"); + outputStream.println(" }"); + } + + private void generateElement(URI uri) throws Exception { + + Node commentNode = ModelUtil.getPropertyValue(myModel, uri, RDFS.comment); + String comment = ((commentNode != null) ? commentNode.toString() : ""); + String localName = asLegalJavaID(getLocalName(uri.toString()), false); + String capitalizedLocalName = asLegalJavaID(getLocalName(uri.toString()), true); + Node rangeNode = ModelUtil.getPropertyValue(myModel, uri, RDFS.range); + URI range = ((rangeNode != null) ? rangeNode.asURI() : null); + String javaRangeType = getJavaRangeType(range); + String currentVocabularyClassName = getVocabularyClassName(uri); + + URI widgetType = getWidgetType(uri); + + + if (javaRangeType.equals("DomainBoundaries")) { + // we may remove this, because of the common abstract class DomainBoundableDataSource + // introduced by Herko ter Horst on 10.12.2007 + // we cover this case by changing the name of the superclass + //addDomainBoundaries(); + return; + } + + if (widgetType.equals(SOURCEFORMAT.MultipleTextFieldWidget)) { + generateMultiValuedProperty(localName, capitalizedLocalName, comment, javaRangeType, + currentVocabularyClassName); + } + else if (widgetType.equals(SOURCEFORMAT.ComboBoxWidget)) { + generateEnumProperty(localName, capitalizedLocalName, comment, currentVocabularyClassName, uri); + } + else { + generateSingleValuedProperty(localName, capitalizedLocalName, comment, javaRangeType, + currentVocabularyClassName); + } + + uriToLocalName.put(uri.toString(), localName); + + } + + private void generateSingleValuedProperty(String localName, String capitalizedLocalName, String comment, + String javaRangeType, String currentVocabularyClassName) { + outputStream.println(); + outputStream.println(" /**"); + outputStream.println(" * Returns the " + comment); + outputStream.println(" * "); + outputStream.println(" * @return the " + comment + " or null if no value has been set"); + outputStream.println(" * @throws NullPointerException if no configuration has been set, use"); + outputStream.println(" * {@link #setConfiguration(RDFContainer)} before calling this method"); + outputStream.println(" */"); + outputStream.println(" public " + javaRangeType + " get" + capitalizedLocalName + "() {"); + outputStream.println(" return getConfiguration().get" + javaRangeType + "(" + currentVocabularyClassName + "." + localName + ");"); + outputStream.println(" }"); + + outputStream.println(); + outputStream.println(" /**"); + outputStream.println(" * Sets the " + comment); + outputStream.println(" * "); + outputStream.println(" * @param " + localName + " " + comment + ", can be null in which case any previous setting will be removed"); + outputStream.println(" * @throws NullPointerException if no configuration has been set, use"); + outputStream.println(" * {@link #setConfiguration(RDFContainer)} before calling this method"); + outputStream.println(" */"); + outputStream.println(" public void set" + capitalizedLocalName + "(" + javaRangeType + " " + localName + ") {"); + outputStream.println(" if ( " + localName + " == null) {"); + outputStream.println(" getConfiguration().remove(" + currentVocabularyClassName + "." + localName + ");"); + outputStream.println(" } else {"); + outputStream.println(" getConfiguration().put(" + currentVocabularyClassName + "." + localName + "," + localName + ");"); + outputStream.println(" }"); + outputStream.println(" }"); + + } + + private void generateMultiValuedProperty(String localName, String capitalizedLocalName, String comment, + String javaRangeType, String currentVocabularyClassName) { + outputStream.println(); + outputStream.println(" /**"); + outputStream.println(" * Returns a collection of all values of " + comment); + outputStream.println(" * "); + outputStream.println(" * @return a collection of all values of " + comment + " the collection may be empty if no values have been set"); + outputStream.println(" * @throws NullPointerException if no configuration has been set, use"); + outputStream.println(" * {@link #setConfiguration(RDFContainer)} before calling this method"); + outputStream.println(" */"); + outputStream.println(" public Collection<" + javaRangeType + "> getAll" + capitalizedLocalName + "s() {"); + outputStream.println(" Collection<Node> collection = (Collection<Node>)getConfiguration().getAll(" + currentVocabularyClassName + "." + localName + ");"); + outputStream.println(" List<" + javaRangeType + "> result = new LinkedList<" + javaRangeType + ">();"); + outputStream.println(" for (Node node : collection) {"); + outputStream.println(" " + javaRangeType + " object = (" + javaRangeType + ")ModelUtil.convertNode(node," + javaRangeType + ".class);"); + outputStream.println(" if (object != null) {"); + outputStream.println(" result.add(object);"); + outputStream.println(" }"); + outputStream.println(" }"); + outputStream.println(" return result;"); + outputStream.println(" }"); + + outputStream.println(); + outputStream.println(" /**"); + outputStream.println(" * Sets the " + comment); + outputStream.println(" * "); + outputStream.println(" * @param " + localName + " " + comment + ", can be null in which case any previous setting will be removed"); + outputStream.println(" * @throws NullPointerException if no configuration has been set, use"); + outputStream.println(" * {@link #setConfiguration(RDFContainer)} before calling this method"); + outputStream.println(" * @throws MultipleValuesException if this property had more that one value before this method was called"); + outputStream.println(" */"); + outputStream.println(" public void set" + capitalizedLocalName + "(" + javaRangeType + " " + localName + ") {"); + outputStream.println(" if ( " + localName + " == null) {"); + outputStream.println(" getConfiguration().remove(" + currentVocabularyClassName + "." + localName + ");"); + outputStream.println(" } else {"); + outputStream.println(" getConfiguration().put(" + currentVocabularyClassName + "." + localName + "," + localName + ");"); + outputStream.println(" }"); + outputStream.println(" }"); + + outputStream.println(); + outputStream.println(" /**"); + outputStream.println(" * Sets all " + comment + "s at once"); + outputStream.println(" * "); + outputStream.println(" * @param " + localName + " " + comment + ", can be null in which case any previous setting will be removed"); + outputStream.println(" * @throws NullPointerException if no configuration has been set, use"); + outputStream.println(" * {@link #setConfiguration(RDFContainer)} before calling this method"); + outputStream.println(" */"); + outputStream.println(" public void setAll" + capitalizedLocalName + "s(List<" + javaRangeType + "> " + localName + ") {"); + outputStream.println(" if ( " + localName + " == null) {"); + outputStream.println(" ModelUtil.removeAllPropertyValues(getConfiguration().getModel(),getConfiguration().getDescribedUri()," + currentVocabularyClassName + "." + localName + ");"); + outputStream.println(" } else {"); + outputStream.println(" ModelUtil.removeAllPropertyValues(getConfiguration().getModel(),getConfiguration().getDescribedUri()," + currentVocabularyClassName + "." + localName + ");"); + outputStream.println(" for(" + javaRangeType + " value : " + localName + ") {"); + outputStream.println(" getConfiguration().add(" + currentVocabularyClassName + "." + localName + ",value);"); + outputStream.println(" }"); + outputStream.println(" }"); + outputStream.println(" }"); + } + + private void generateEnumProperty(String propertyLocalName, String capitalizedLocalName, String comment, + String currentVocabularyClassName, URI propertyUri) { + + Node rangeNode = ModelUtil.getPropertyValue(myModel, propertyUri, RDFS.range); + URI range = ((rangeNode != null) ? rangeNode.asURI() : null); + + String rangeLocalName = getLocalName(range.toString()); + + Map<String, String> valuesMap = getValuesMap(propertyUri, myModel); + outputStream.println(); + outputStream.println(" /**"); + outputStream.println(" * Enum of possible values of the " + propertyLocalName + " property"); + outputStream.println(" */"); + outputStream.println(" public static enum " + rangeLocalName + " {"); + + Set<Entry<String, String>> entrySet = valuesMap.entrySet(); + + Iterator<Map.Entry<String, String>> iterator = entrySet.iterator(); + while (iterator.hasNext()) { + Map.Entry<String, String> entry = iterator.next(); + String uriLocalName = getLocalName(entry.getKey()); + outputStream.println(" /** Constant representing " + entry.getKey() + "*/"); + outputStream.println(" " + uriLocalName + ((iterator.hasNext()) ? "," : ";")); + } + outputStream.println(); + outputStream.println(" public static " + rangeLocalName + " fromUri(URI uri) {"); + + iterator = entrySet.iterator(); + + if (iterator.hasNext()) { + Map.Entry<String, String> entry = iterator.next(); + String comboBoxEntryLocalName = getLocalName(entry.getKey()); + System.out.println("A ku ku "); + outputStream.println(" if (uri == null) {"); + outputStream.println(" return null;"); + outputStream.println(" }"); + outputStream.println(" else if (uri.equals(" + currentVocabularyClassName + "." + comboBoxEntryLocalName + ")) {"); + outputStream.println(" return " + comboBoxEntryLocalName + ";"); + outputStream.println(" }"); + while (iterator.hasNext()) { + entry = iterator.next(); + comboBoxEntryLocalName = getLocalName(entry.getKey()); + outputStream.println(" else if (uri.equals(" + currentVocabularyClassName + "." + comboBoxEntryLocalName + ")) {"); + outputStream.println(" return " + comboBoxEntryLocalName + ";"); + outputStream.println(" }"); + } + outputStream.println(" else {"); + outputStream.println(" return null;"); + outputStream.println(" }"); + } + + outputStream.println(" }"); + + outputStream.println(" public URI toUri() {"); + + iterator = entrySet.iterator(); + + if (iterator.hasNext()) { + Map.Entry<String, String> entry = iterator.next(); + String comboBoxEntryLocalName = getLocalName(entry.getKey()); + outputStream.println(" if (this.equals(" + comboBoxEntryLocalName + ")) {"); + outputStream.println(" return " + currentVocabularyClassName + "." + comboBoxEntryLocalName + ";"); + outputStream.println(" }"); + while (iterator.hasNext()) { + entry = iterator.next(); + comboBoxEntryLocalName = getLocalName(entry.getKey()); + outputStream.println(" else if (this.equals(" + comboBoxEntryLocalName + ")) {"); + outputStream.println(" return " + currentVocabularyClassName + "." + comboBoxEntryLocalName + ";"); + outputStream.println(" }"); + } + outputStream.println(" else {"); + outputStream.println(" return null;"); + outputStream.println(" }"); + } + + outputStream.println(" }"); + + outputStream.println(" }"); + + outputStream.println(); + outputStream.println(" /**"); + outputStream.println(" * Returns the " + comment); + outputStream.println(" * "); + outputStream.println(" * @return the " + comment + " or null if no value has been set"); + outputStream.println(" * @throws NullPointerException if no configuration has been set, use"); + outputStream.println(" * {@link #setConfiguration(RDFContainer)} before calling this method"); + outputStream.println(" */"); + outputStream.println(" public " + rangeLocalName + " get" + capitalizedLocalName + "() {"); + outputStream.println(" return " + rangeLocalName + ".fromUri(getConfiguration().getURI(" + currentVocabularyClassName + "." + propertyLocalName + "));"); + outputStream.println(" }"); + outputStream.println(); + outputStream.println(); + outputStream.println(" /**"); + outputStream.println(" * Sets the " + comment); + outputStream.println(" * "); + outputStream.println(" * @param " + propertyLocalName + " " + comment + ", can be null in which case any previous setting will be removed"); + outputStream.println(" * @throws NullPointerException if no configuration has been set, use"); + outputStream.println(" * {@link #setConfiguration(RDFContainer)} before calling this method"); + outputStream.println(" */"); + outputStream.println(" public void set" + capitalizedLocalName + "(" + rangeLocalName + " "+ propertyLocalName + ") {"); + outputStream.println(" if ( " + propertyLocalName + " == null) {"); + outputStream.println(" getConfiguration().remove(" + currentVocabularyClassName + "." + propertyLocalName + ");"); + outputStream.println(" } else {"); + outputStream.println(" getConfiguration().put(" + currentVocabularyClassName + "." + propertyLocalName + "," + propertyLocalName + ".toUri());"); + outputStream.println(" }"); + outputStream.println(" }"); + + } + + private URI getWidgetType(URI uri) { + String query = "" + + "PREFIX fresnel: " + FRESNEL.NS_FRESNEL.toSPARQL() + "\n " + + "PREFIX sourceformat: " + SOURCEFORMAT.NS_SOURCEFORMAT.toSPARQL() + "\n " + + "PREFIX rdf: <" + RDF.RDF_NS + ">\n " + + "SELECT ?x " + + "WHERE { ?y fresnel:propertyFormatDomain " + uri.toSPARQL() + " . " + + " ?y sourceformat:valueWidget ?z . " + + " ?z rdf:type ?x . }"; + + ClosableIterator<QueryRow> iterator = null; + try { + QueryResultTable table = myModel.sparqlSelect(query); + iterator = table.iterator(); + if (iterator.hasNext()) { + QueryRow row = iterator.next(); + URI result = (URI) row.getValue("x"); + if (result != null) { + return result; + } + else { + log.error("The widget for " + uri + " has a type that is not an uri"); + } + } + else { + log.warn("No widget found for " + uri); + } + } + finally { + iterator.close(); + } + return null; + } + + private String getVocabularyClassName(URI range) { + if (range.toString().startsWith(DATASOURCE.NS_DATASOURCE.toString())) { + return DATASOURCE.class.getName(); + } + else { + return vocabularyClassName; + } + } +/* + This method has been rendered obsolete after the introduction of hte + DomainBoundableDataSource class +*/ +// private void addDomainBoundaries() { +// if (!domainBoundariesGenerated) { +// outputStream.println(); +// outputStream.println(" /**"); +// outputStream.println(" * Returns the domain boundaries for this data source"); +// outputStream.println(" * "); +// outputStream.println(" * @return the domain boundaries for this data source"); +// outputStream.println(" * @throws NullPointerException if no configuration has been set, use"); +// outputStream +// .println(" * {@link #setConfiguration(RDFContainer)} before calling this method"); +// outputStream.println(" */"); +// outputStream.println(" public DomainBoundaries getDomainBoundaries() {"); +// outputStream +// .println(" return ConfigurationUtil.getDomainBoundaries(getConfiguration());"); +// outputStream.println(" }"); +// +// outputStream.println(); +// outputStream.println(" /**"); +// outputStream.println(" * Sets the domain boundaries for this data source"); +// outputStream.println(" * "); +// outputStream +// .println(" * @param domainBoundaries the domain boundaries, can be null in which case any previous setting will be removed"); +// outputStream.println(" * @throws NullPointerException if no configuration has been set, use"); +// outputStream +// .println(" * {@link #setConfiguration(RDFContainer)} before calling this method"); +// outputStream.println(" */"); +// outputStream.println(" public void setDomainBoundaries(DomainBoundaries domainBoundaries) {"); +// outputStream.println(" if (domainBoundaries == null) {"); +// outputStream.println(" DomainBoundaries emptyBoundaries = new DomainBoundaries();"); +// outputStream +// .println(" ConfigurationUtil.setDomainBoundaries(emptyBoundaries,getConfiguration());"); +// outputStream.println(" } else {"); +// outputStream +// .println(" ConfigurationUtil.setDomainBoundaries(domainBoundaries,getConfiguration());"); +// outputStream.println(" }"); +// outputStream.println(" }"); +// domainBoundariesGenerated = true; +// } +// } + + private String getJavaRangeType(URI range) { + if (range == null || range.equals(RDFS.Literal) || range.equals(XSD._string)) { + return "String"; + } + else if (range.equals(XSD._int) || range.equals(XSD._integer)) { + return "Integer"; + } + else if (range.equals(XSD._long)) { + return "Long"; + } + else if (range.equals(XSD._boolean)) { + return "Boolean"; + } + else if (range.equals(DATASOURCE.Pattern)) { + return "DomainBoundaries"; + } + else { + return "URI"; + } + } + + /** + * The RDF2Go interface doesn't support getting a local name from the URI. I 'borrowed' this snippet from + * the Sesame LiteralImpl. + */ + private String getLocalName(String vx) { + String fullUri = vx.toString(); + int splitIdx = fullUri.indexOf('#'); + + if (splitIdx < 0) { + splitIdx = fullUri.lastIndexOf('/'); + } + + if (splitIdx < 0) { + splitIdx = fullUri.lastIndexOf(':'); + } + + if (splitIdx < 0) { + throw new RuntimeException("Not a legal (absolute) URI: " + fullUri); + } + return fullUri.substring(splitIdx + 1); + } + + private void getOpt(String[] args) { + int i = 0; + if (args.length == 0) { + usage("no arguments given"); + } + // args + while ((i < args.length) && args[i].startsWith("-")) { + if (args[i].equals("-i")) { + i++; + inputRdfFilePath = args[i]; + } + else if (args[i].equals("-o")) { + i++; + outputDirectoryPath = args[i]; + } + else if (args[i].equals("-c")) { + i++; + classUri = args[i]; + } + else if (args[i].equals("-n")) { + i++; + vocabularyClassName = args[i]; + } + else if (args[i].equals("--package")) { + i++; + packageName = args[i]; + } + else if (args[i].equals("-f")) { + forceGeneration = true; + } + else + usage("unknown argument " + args[i]); + i++; + } + + outputFileName = getLocalName(classUri); + + if (inputRdfFilePath == null) + usage("no input file given"); + if (outputDirectoryPath == null) + usage("no output dir given"); + if (classUri == null) + usage("no class uri given"); + if (packageName == null) + usage("no package name given"); + + // transform variables + inputRdfFile = new File(inputRdfFilePath); + // System.out.println("input file: " + inputRdfFilePath); + if (!inputRdfFile.canRead()) { + usage("cannot read the input file: " + inputRdfFilePath); + } + + outputDirFile = new File(outputDirectoryPath); + if (!outputDirFile.canWrite()) { + usage("cannot write to the output directory: " + outputDirectoryPath); + } + + outputFile = new File(outputDirectoryPath, outputFileName + ".java"); + } + + private void usage(String msg) { + System.err.println(msg); + System.err.println(); + System.err.println("Syntax: java DataSourceClassGenerator -i <inputfile> -o <outputdir>"); + System.err.println(" -c <classuri> -n <vocabularyClassName> --package <package> [-f]"); + System.err.println(); + System.err.println(" -i the path to the input file (i.e. the .ttl file with the"); + System.err.println(" data source description in RDF serialized with Turtle)"); + System.err.println(" -o the path to the directory where the output artifacts are placed"); + System.err.println(" -c the uri of the data source class"); + System.err.println(" -n the name of the vocabulary class, generated with the "); + System.err.println(" VocabularyWriter tool, placed in the output folder"); + System.err.println(" --package the dot-separated fully qualified name of the java package"); + System.err.println(" where the output classes will be, the program can't deduce it"); + System.err.println(" from the output path (note: package is dot-separated, whereas"); + System.err.println(" the path is usually slash-separated)"); + System.err.println(" -f force generation, even if the input file is older than the"); + System.err.println(" output file. By default the output files are not overwritten"); + System.err.println(" if they already exist and are newer than the input."); + System.exit(-1); + } + + /** + * documentation see class, above. + * + * @param args command line arguments + * @throws Exception if something goes wrong + */ + public static void main(String[] args) throws Exception { + new DataSourceClassGenerator().go(args); + } + + /** + * Convert s to a legal Java identifier; capitalise first char if cap is true this method is copied from + * jena code. + */ + protected String asLegalJavaID(String s, boolean cap) { + StringBuilder buf = new StringBuilder(); + int i = 0; + + // treat the first character specially - must be able to start a Java ID, may have to upcase + try { + for (; !Character.isJavaIdentifierStart(s.charAt(i)); i++) { + // do nothing + } + } + catch (StringIndexOutOfBoundsException e) { + System.err.println("Could not identify legal Java identifier start character in '" + s + + "', replacing with __"); + return "__"; + } + buf.append(cap ? Character.toUpperCase(s.charAt(i)) : s.charAt(i)); + + // copy the remaining characters - replace non-legal chars with '_' + for (++i; i < s.length(); i++) { + char c = s.charAt(i); + buf.append(Character.isJavaIdentifierPart(c) ? c : '_'); + } + + // check standard name + String result = buf.toString(); + if (JAVA_RESERVED_WORDS_SET.contains(result)) { + result = result + "_"; + } + + return result; + } + + private URI getFresnelLensURI(Model model, String typeString) { + URI typeUri = new URIImpl(typeString); + try { + Resource resource = ModelUtil.getSingleSubjectWithProperty(model, FRESNEL.classLensDomain, + typeUri); + if (resource != null) { + return resource.asURI(); + } + else { + return null; + } + } + catch (ClassCastException me) { + log.warn("Couldn't fetch the fresnel lens uri", me); + } + return null; + } + + private List<URI> getConfigurationOptionsList(URI fresnelLensURI) { + List<URI> resultList = new LinkedList<URI>(); + try { + Resource listNode = ModelUtil.getPropertyValue(myModel, fresnelLensURI, FRESNEL.showProperties) + .asResource(); + while (true) { + if (listNode.equals(RDF.nil)) { + break; + } + URI firstUri = ModelUtil.getPropertyValue(myModel, listNode, RDF.first).asURI(); + resultList.add(firstUri); + if (firstUri.equals(DATASOURCE.includePattern) || firstUri.equals(DATASOURCE.excludePattern)) { + domainBoundableDataSource = true; + } + listNode = ModelUtil.getPropertyValue(myModel, listNode, RDF.rest).asResource(); + } + return resultList; + } + catch (ClassCastException me) { + log.warn("Couldn't fetch the list of the configuration " + "options", me); + } + return null; + } + + private Map<String, String> getValuesMap(URI propertyUri, Model model) { + Map<String, String> resultMap = new TreeMap<String, String>(); + URI propertyFormatUri = ModelUtil.getSingleSubjectWithProperty(myModel, FRESNEL.propertyFormatDomain, + propertyUri).asURI(); + try { + Resource widgetBlankNode = ModelUtil.getPropertyValue(model, propertyFormatUri, + SOURCEFORMAT.valueWidget).asResource(); + List<Node> entriesList = ModelUtil.getAllPropertyValues(model, widgetBlankNode, + SOURCEFORMAT.hasEntry); + for (Node node : entriesList) { + Resource resource = node.asResource(); + Node comboBoxLabelNode = ModelUtil.getPropertyValue(model, resource, SOURCEFORMAT.label); + Node comboBoxValueNode = ModelUtil.getPropertyValue(model, resource, SOURCEFORMAT.value); + resultMap.put(comboBoxValueNode.toString(), comboBoxLabelNode.toString()); + } + } + catch (ClassCastException me) { + log.warn("Couldn't get the values map", me); + } + return resultMap; + } + +} Added: aperture/trunk/core/datasource/maven-plugin/src/main/java/org/semanticdesktop/aperture/datasource/DataSourceClassGeneratorMojo.java =================================================================== --- aperture/trunk/core/datasource/maven-plugin/src/main/java/org/semanticdesktop/aperture/datasource/DataSourceClassGeneratorMojo.java (rev 0) +++ aperture/trunk/core/datasource/maven-plugin/src/main/java/org/semanticdesktop/aperture/datasource/DataSourceClassGeneratorMojo.java 2009-02-06 17:09:05 UTC (rev 1593) @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2006 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.datasource; + +import java.util.List; + +import org.apache.maven.plugin.AbstractMojo; +import org.apache.maven.plugin.MojoExecutionException; + +/** + * @goal generate + * @phase generate-sources + * + * @author Herko ter Horst + */ +public class DataSourceClassGeneratorMojo extends AbstractMojo { + + /** + * @parameter + */ + private List datasources; + + public void execute() throws MojoExecutionException { + throw new MojoExecutionException("Not yet implemented"); + } +} Modified: aperture/trunk/core/pom.xml =================================================================== --- aperture/trunk/core/pom.xml 2009-02-06 17:04:50 UTC (rev 1592) +++ aperture/trunk/core/pom.xml 2009-02-06 17:09:05 UTC (rev 1593) @@ -18,14 +18,14 @@ <description>Core functionality</description> <modules> + <module>datasource</module> <module>rdf</module> <module>util</module> + <module>vocabulary</module> <!-- <module>accessor</module> <module>crawler</module> - <module>datasource</module> <module>test</module> - <module>vocabulary</module> --> </modules> </project> Modified: aperture/trunk/core/rdf/core/pom.xml =================================================================== --- aperture/trunk/core/rdf/core/pom.xml 2009-02-06 17:04:50 UTC (rev 1592) +++ aperture/trunk/core/rdf/core/pom.xml 2009-02-06 17:09:05 UTC (rev 1593) @@ -15,5 +15,15 @@ <name>Aperture Core: RDF - Core</name> <description>RDF Core functionality</description> - + + <dependencies> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-util</artifactId> + </dependency> + <dependency> + <groupId>org.semweb4j</groupId> + <artifactId>rdf2go.api</artifactId> + </dependency> + </dependencies> </project> Modified: aperture/trunk/core/rdf/core/src/main/java/org/semanticdesktop/aperture/rdf/RDFContainerFactory.java =================================================================== --- aperture/trunk/core/rdf/core/src/main/java/org/semanticdesktop/aperture/rdf/RDFContainerFactory.java 2009-02-06 17:04:50 UTC (rev 1592) +++ aperture/trunk/core/rdf/core/src/main/java/org/semanticdesktop/aperture/rdf/RDFContainerFactory.java 2009-02-06 17:09:05 UTC (rev 1593) @@ -28,4 +28,11 @@ * @return A new empty RDFContainer that will describe the specified ID. */ public RDFContainer newInstance(URI id); + + /** + * Returns a RDFContainer instance. This may be either a shared instance or a new instance. + * + * @return a RDFContainer instance. + */ + public RDFContainer getRDFContainer(URI uri); } Modified: aperture/trunk/core/rdf/core/src/main/java/org/semanticdesktop/aperture/rdf/impl/RDFContainerFactoryImpl.java =================================================================== --- aperture/trunk/core/rdf/core/src/main/java/org/semanticdesktop/aperture/rdf/impl/RDFContainerFactoryImpl.java 2009-02-06 17:04:50 UTC (rev 1592) +++ aperture/trunk/core/rdf/core/src/main/java/org/semanticdesktop/aperture/rdf/impl/RDFContainerFactoryImpl.java 2009-02-06 17:09:05 UTC (rev 1593) @@ -17,8 +17,7 @@ * Creates RDFContainerImpl instances. The Model wrapped in these RDFContainerImpls are created by the * ModelFactory returned by RDF2Go.getModelFactory. */ -public class RDFContainerFactoryImpl implements RDFContainerFactory, - org.semanticdesktop.aperture.accessor.RDFContainerFactory { +public class RDFContainerFactoryImpl implements RDFContainerFactory { private ModelFactory factory; Modified: aperture/trunk/core/rdf/util/pom.xml =================================================================== --- aperture/trunk/core/rdf/util/pom.xml 2009-02-06 17:04:50 UTC (rev 1592) +++ aperture/trunk/core/rdf/util/pom.xml 2009-02-06 17:09:05 UTC (rev 1593) @@ -15,5 +15,29 @@ <name>Aperture Core: RDF - Util</name> <description>RDF Utilities</description> + + <dependencies> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-rdf-core</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-util</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-vocabulary-core</artifactId> + </dependency> + <dependency> + <groupId>org.semweb4j</groupId> + <artifactId>rdf2go.api</artifactId> + </dependency> + + <dependency> + <groupId>info.aduna.commons</groupId> + <artifactId>aduna-commons-xml</artifactId> + </dependency> + </dependencies> </project> Copied: aperture/trunk/core/rdf/util/src/main/java/org/semanticdesktop/aperture/rdf/util/InferenceUtil.java (from rev 1586, aperture/trunk/core/util/src/main/java/org/semanticdesktop/aperture/util/InferenceUtil.java) =================================================================== --- aperture/trunk/core/rdf/util/src/main/java/org/semanticdesktop/aperture/rdf/util/InferenceUtil.java (rev 0) +++ aperture/trunk/core/rdf/util/src/main/java/org/semanticdesktop/aperture/rdf/util/InferenceUtil.java 2009-02-06 17:09:05 UTC (rev 1593) @@ -0,0 +1,222 @@ +/* + * Copyright (c) 2006 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.rdf.util; + +import java.util.LinkedList; +import java.util.List; +import java.util.Map.Entry; + +import org.ontoware.aifbcommons.collection.ClosableIterator; +import org.ontoware.rdf2go.RDF2Go; +import org.ontoware.rdf2go.model.Model; +import org.ontoware.rdf2go.model.Statement; +import org.ontoware.rdf2go.model.node.URI; +import org.ontoware.rdf2go.model.node.Variable; +import org.ontoware.rdf2go.vocabulary.RDF; +import org.ontoware.rdf2go.vocabulary.RDFS; +import org.semanticdesktop.aperture.rdf.RDFContainer; +import org.semanticdesktop.aperture.util.ListMap; +import org.semanticdesktop.aperture.vocabulary.DATASOURCE; +import org.semanticdesktop.aperture.vocabulary.FRESNEL; +import org.semanticdesktop.aperture.vocabulary.GEO; +import org.semanticdesktop.aperture.vocabulary.NAO; +import org.semanticdesktop.aperture.vocabulary.NCAL; +import org.semanticdesktop.aperture.vocabulary.NCO; +import org.semanticdesktop.aperture.vocabulary.NEXIF; +import org.semanticdesktop.aperture.vocabulary.NFO; +import org.semanticdesktop.aperture.vocabulary.NID3; +import org.semanticdesktop.aperture.vocabulary.NIE; +import org.semanticdesktop.aperture.vocabulary.NMO; +import org.semanticdesktop.aperture.vocabulary.SOURCEFORMAT; + + +/** + * Utility class to infer additional statements in RDF containers. + */ +public class InferenceUtil { + + /** + * mapping from a property to a super-property + */ + final private ListMap<URI, URI> superProperties = new ListMap<URI, URI>(); + + /** + * mapping from a class to a super-class + */ + final private ListMap<URI, URI> superClasses = new ListMap<URI, URI>(); + + /** + * Create an uninitialized version of the Inference Util + * + */ + public InferenceUtil() { + // + } + + /** + * Read the subclass/supproperty rules from the passed ontology and remember them. + * No reference to the model will be kept. + * The passed model is assumed to be open. + * @param model the ontology to parse + */ + public void readOntology(Model model) { + for (ClosableIterator<? extends Statement> i = model.findStatements(Variable.ANY, RDFS.subPropertyOf, Variable.ANY); + i.hasNext(); ) + { + Statement s = i.next(); + learnInferenceFor(s, superProperties); + } + for (ClosableIterator<? extends Statement> i = model.findStatements(Variable.ANY, RDFS.subClassOf, Variable.ANY); + i.hasNext(); ) + { + Statement s = i.next(); + learnInferenceFor(s, superClasses); + } + } + + /** + * Look into the passed rdfcontainer and extend existing triples with inferred triples. + * For example, if information is written as "x - nmo:messageSubject - y", + * this method will add "x - nie:subject - y", because messageSubject is a sub-property + * of subject. + * @param container the container to extend + */ + public void extendContent(RDFContainer container) { + extendContent(container.getModel()); + } + + /** + * Look into the passed model and extend existing triples with inferred triples. + * For example, if information is written as "x - nmo:messageSubject - y", + * this method will add "x - nie:subject - y", because messageSubject is a sub-property + * of subject. + * @param model the model to extend, data will be read and written to it + */ + public void extendContent(Model model) { + + // the statements to add afterwards + LinkedList<Statement> toadd = new LinkedList<Statement>(); + // iterate through the container + for (Statement s : model) { + // sub-property inference + URI p = s.getPredicate(); + List<URI> sprops = superProperties.get(p); + if (sprops != null) + { + for (URI sprop : sprops) { + // This line has been commented out by Antoni Mylka + // the statement impl class introduces a dependency between + // aperture core bundle and rdf2go model.impl.base bundle + // this is to be avoided + //toadd.add(new StatementImpl(s.getContext(), s.getSubject(), sprop, s.getObject())); + // the line below is equivalent to the line above because + // model.iterator() used implicitly in the foreach loop + // returns only statements from the context of that model + // whereas the model.createStatement automatically adds the + // appropriate context, so the context is preserved even though + // it doesn't appear here + toadd.add(model.createStatement(s.getSubject(), sprop, s.getObject())); + } + } + // type inference + if ((RDF.type.equals(s.getPredicate()))&&(s.getObject() instanceof URI)) { + List<URI> sclasses = superClasses.get((URI)s.getObject()); + if (sclasses != null) + { + for (URI sclass : sclasses) { + // This line has been commented out by Antoni Mylka + // the statement impl class introduces a dependency between + // aperture core bundle and rdf2go model.impl.base bundle + // this is to be avoided + // toadd.add(new StatementImpl(s.getContext(), s.getSubject(), RDF.type, sclass)); + // the line below is equivalent to the line above because + // model.iterator() used implicitly in the foreach loop + // returns only statements from the context of that model + // whereas the model.createStatement automatically adds the + // appropriate context, so the context is preserved even though + // it doesn't appear here + toadd.add(model.createStatement(s.getSubject(), RDF.type, sclass)); + } + } + } + } + // add inferred triples + model.addAll(toadd.iterator()); + } + + /** + * Add inference for the passed statement. + * The predicate of the sta + * @param s + */ + private void learnInferenceFor(Statement s, ListMap<URI, URI> list) { + if (!(s.getSubject() instanceof URI)) + return; + if (!(s.getObject() instanceof URI)) + return; + URI sub = (URI)s.getSubject(); + URI obj = (URI)s.getObject(); + list.put(sub, obj); + + //add all super properies + { + List<URI> sp = list.get(obj); + if (sp!= null) + { + for (URI u : sp) + { + list.put(sub, u); + } + } + } + // inverse: see if the subject is already object of others + for (Entry<URI, URI> entry : list.entrySet()) { + if (entry.getValue().equals(sub)) { + //add all super properies + List<URI> sp = list.get(sub); + if (sp!= null) + { + for (URI u : sp) + { + list.put(entry.getKey(), u); + } + } + } + } + + } + + /** + * Create a new inference utility, loading the core ontologies + * (the ones from the vocabulary package) + * @return a newly created and loaded inference utility, that knows + * how to inference based on the subclass/subproperty relations defined + * in the vocabulary package + */ + public static InferenceUtil createForCoreOntologies() { + Model m = RDF2Go.getModelFactory().createModel(); + m.open(); + DATASOURCE.getDATASOURCEOntology(m); + FRESNEL.getFRESNELOntology(m); + GEO.getGEOOntology(m); + NAO.getNAOOntology(m); + NCAL.getNCALOntology(m); + NCO.getNCOOntology(m); + NEXIF.getNEXIFOntology(m); + NFO.getNFOOntology(m); + NID3.getNID3Ontology(m); + NIE.getNIEOntology(m); + NMO.getNMOOntology(m); + SOURCEFORMAT.getSOURCEFORMATOntology(m); + + InferenceUtil util = new InferenceUtil(); + util.readOntology(m); + m.close(); + return util; + } +} + Copied: aperture/trunk/core/rdf/util/src/main/java/org/semanticdesktop/aperture/rdf/util/ModelUtil.java (from rev 1586, aperture/trunk/core/util/src/main/java/org/semanticdesktop/aperture/util/ModelUtil.java) =================================================================== --- aperture/trunk/core/rdf/util/src/main/java/org/semanticdesktop/aperture/rdf/util/ModelUtil.java (rev 0) +++ aperture/trunk/core/rdf/util/src/main/java/org/semanticdesktop/aperture/rdf/util/ModelUtil.java 2009-02-06 17:09:05 UTC (rev 1593) @@ -0,0 +1,441 @@ +/* + * Copyright (c) 2006 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.rdf.util; + +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.util.Collection; +import java.util.LinkedList; +import j... [truncated message content] |
From: <her...@us...> - 2009-02-09 15:22:25
|
Revision: 1607 http://aperture.svn.sourceforge.net/aperture/?rev=1607&view=rev Author: herko_ter_horst Date: 2009-02-09 15:22:22 +0000 (Mon, 09 Feb 2009) Log Message: ----------- Added DataSource core module. Modified Paths: -------------- aperture/trunk/core/datasource/core/pom.xml aperture/trunk/core/datasource/core/src/main/java/org/semanticdesktop/aperture/datasource/config/ConfigurationUtil.java aperture/trunk/core/datasource/core/src/main/java/org/semanticdesktop/aperture/datasource/config/RegExpPattern.java aperture/trunk/core/datasource/core/src/main/java/org/semanticdesktop/aperture/datasource/config/SubstringPattern.java aperture/trunk/core/datasource/core/src/main/java/org/semanticdesktop/aperture/datasource/impl/DataSourceRegistryImpl.java aperture/trunk/core/datasource/pom.xml aperture/trunk/core/rdf/core/pom.xml aperture/trunk/core/rdf/util/pom.xml aperture/trunk/pom.xml Added Paths: ----------- aperture/trunk/core/datasource/core/.settings/ aperture/trunk/core/datasource/core/.settings/org.eclipse.jdt.core.prefs aperture/trunk/core/datasource/core/.settings/org.eclipse.jdt.ui.prefs aperture/trunk/core/datasource/core/src/main/java/org/semanticdesktop/aperture/datasource/impl/DataSourceServiceActivator.java Property Changed: ---------------- aperture/trunk/ aperture/trunk/core/datasource/core/ Property changes on: aperture/trunk ___________________________________________________________________ Added: svn:ignore + target Property changes on: aperture/trunk/core/datasource/core ___________________________________________________________________ Added: svn:ignore + target .classpath .project Added: aperture/trunk/core/datasource/core/.settings/org.eclipse.jdt.core.prefs =================================================================== --- aperture/trunk/core/datasource/core/.settings/org.eclipse.jdt.core.prefs (rev 0) +++ aperture/trunk/core/datasource/core/.settings/org.eclipse.jdt.core.prefs 2009-02-09 15:22:22 UTC (rev 1607) @@ -0,0 +1,279 @@ +#Fri Jul 11 15:20:21 CEST 2008 +eclipse.preferences.version=1 +org.eclipse.jdt.core.codeComplete.argumentPrefixes= +org.eclipse.jdt.core.codeComplete.argumentSuffixes= +org.eclipse.jdt.core.codeComplete.fieldPrefixes=_ +org.eclipse.jdt.core.codeComplete.fieldSuffixes= +org.eclipse.jdt.core.codeComplete.localPrefixes= +org.eclipse.jdt.core.codeComplete.localSuffixes= +org.eclipse.jdt.core.codeComplete.staticFieldPrefixes= +org.eclipse.jdt.core.codeComplete.staticFieldSuffixes= +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.5 +org.eclipse.jdt.core.formatter.align_type_members_on_columns=false +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_assignment=0 +org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_compact_if=32 +org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 +org.eclipse.jdt.core.formatter.alignment_for_enum_constants=49 +org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=48 +org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=0 +org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=21 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=21 +org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_after_package=1 +org.eclipse.jdt.core.formatter.blank_lines_before_field=1 +org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=1 +org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 +org.eclipse.jdt.core.formatter.blank_lines_before_method=1 +org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 +org.eclipse.jdt.core.formatter.blank_lines_before_package=0 +org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 +org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 +org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=next_line_on_wrap +org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_block=next_line_on_wrap +org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=next_line_on_wrap +org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line_on_wrap +org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line_on_wrap +org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line_on_wrap +org.eclipse.jdt.core.formatter.comment.clear_blank_lines=true +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true +org.eclipse.jdt.core.formatter.comment.format_block_comments=false +org.eclipse.jdt.core.formatter.comment.format_comments=true +org.eclipse.jdt.core.formatter.comment.format_header=false +org.eclipse.jdt.core.formatter.comment.format_html=true +org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true +org.eclipse.jdt.core.formatter.comment.format_line_comments=true +org.eclipse.jdt.core.formatter.comment.format_source_code=true +org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false +org.eclipse.jdt.core.formatter.comment.indent_root_tags=true +org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert +org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert +org.eclipse.jdt.core.formatter.comment.line_length=80 +org.eclipse.jdt.core.formatter.compact_else_if=true +org.eclipse.jdt.core.formatter.continuation_indentation=2 +org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 +org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true +org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_empty_lines=false +org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true +org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true +org.eclipse.jdt.core.formatter.indentation.size=4 +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert +org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false +org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false +org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false +org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false +org.eclipse.jdt.core.formatter.lineSplit=110 +org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false +org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false +org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 +org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 +org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true +org.eclipse.jdt.core.formatter.tabulation.char=tab +org.eclipse.jdt.core.formatter.tabulation.size=3 +org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false +org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true Added: aperture/trunk/core/datasource/core/.settings/org.eclipse.jdt.ui.prefs =================================================================== --- aperture/trunk/core/datasource/core/.settings/org.eclipse.jdt.ui.prefs (rev 0) +++ aperture/trunk/core/datasource/core/.settings/org.eclipse.jdt.ui.prefs 2009-02-09 15:22:22 UTC (rev 1607) @@ -0,0 +1,15 @@ +#Fri Jul 11 15:20:26 CEST 2008 +eclipse.preferences.version=1 +formatter_profile=_openRDF +formatter_settings_version=11 +internal.default.compliance=default +org.eclipse.jdt.ui.exception.name=e +org.eclipse.jdt.ui.gettersetter.use.is=true +org.eclipse.jdt.ui.ignorelowercasenames=true +org.eclipse.jdt.ui.importorder=java;javax;com;net;org;info;org.openrdf; +org.eclipse.jdt.ui.javadoc=true +org.eclipse.jdt.ui.keywordthis=false +org.eclipse.jdt.ui.ondemandthreshold=999 +org.eclipse.jdt.ui.overrideannotation=true +org.eclipse.jdt.ui.staticondemandthreshold=99 +org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return Returns the ${bare_field_name}.\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} The ${bare_field_name} to set.\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*\r\n * Copyright Aduna (http\://www.aduna-software.com/) (c) 2008.\r\n *\r\n * Licensed under the Aduna BSD-style license.\r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n *\r\n * @author ${user}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template></templates> Modified: aperture/trunk/core/datasource/core/pom.xml =================================================================== --- aperture/trunk/core/datasource/core/pom.xml 2009-02-09 14:35:31 UTC (rev 1606) +++ aperture/trunk/core/datasource/core/pom.xml 2009-02-09 15:22:22 UTC (rev 1607) @@ -15,5 +15,64 @@ <name>Aperture Core: DataSource - Core</name> <description>Core DataSource API</description> - + + <dependencies> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-rdf-core</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-rdf-util</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-util</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-vocabulary-core</artifactId> + </dependency> + + <dependency> + <groupId>org.semweb4j</groupId> + <artifactId>rdf2go.api</artifactId> + </dependency> + + <dependency> + <groupId>org.osgi</groupId> + <artifactId>osgi_R4_core</artifactId> + </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Export-Package>org.semanticdesktop.aperture.datasource,org.semanticdesktop.aperture.datasource.base,org.semanticdesktop.aperture.datasource.config</Export-Package> + <Private-Package>org.semanticdesktop.aperture.datasource.impl</Private-Package> + <Bundle-Activator>org.semanticdesktop.aperture.datasource.impl.DataSourceServiceActivator</Bundle-Activator> + </instructions> + </configuration> + </plugin> + </plugins> + </build> + </project> Modified: aperture/trunk/core/datasource/core/src/main/java/org/semanticdesktop/aperture/datasource/config/ConfigurationUtil.java =================================================================== --- aperture/trunk/core/datasource/core/src/main/java/org/semanticdesktop/aperture/datasource/config/ConfigurationUtil.java 2009-02-09 14:35:31 UTC (rev 1606) +++ aperture/trunk/core/datasource/core/src/main/java/org/semanticdesktop/aperture/datasource/config/ConfigurationUtil.java 2009-02-09 15:22:22 UTC (rev 1607) @@ -26,7 +26,7 @@ import org.ontoware.rdf2go.vocabulary.RDF; import org.semanticdesktop.aperture.datasource.DataSource; import org.semanticdesktop.aperture.rdf.RDFContainer; -import org.semanticdesktop.aperture.util.ModelUtil; +import org.semanticdesktop.aperture.rdf.util.ModelUtil; import org.semanticdesktop.aperture.vocabulary.DATASOURCE; /** Modified: aperture/trunk/core/datasource/core/src/main/java/org/semanticdesktop/aperture/datasource/config/RegExpPattern.java =================================================================== --- aperture/trunk/core/datasource/core/src/main/java/org/semanticdesktop/aperture/datasource/config/RegExpPattern.java 2009-02-09 14:35:31 UTC (rev 1606) +++ aperture/trunk/core/datasource/core/src/main/java/org/semanticdesktop/aperture/datasource/config/RegExpPattern.java 2009-02-09 15:22:22 UTC (rev 1607) @@ -16,7 +16,7 @@ import org.ontoware.rdf2go.model.node.Resource; import org.ontoware.rdf2go.vocabulary.RDF; import org.ontoware.rdf2go.vocabulary.XSD; -import org.semanticdesktop.aperture.util.ModelUtil; +import org.semanticdesktop.aperture.rdf.util.ModelUtil; import org.semanticdesktop.aperture.vocabulary.DATASOURCE; /** Modified: aperture/trunk/core/datasource/core/src/main/java/org/semanticdesktop/aperture/datasource/config/SubstringPattern.java =================================================================== --- aperture/trunk/core/datasource/core/src/main/java/org/semanticdesktop/aperture/datasource/config/SubstringPattern.java 2009-02-09 14:35:31 UTC (rev 1606) +++ aperture/trunk/core/datasource/core/src/main/java/org/semanticdesktop/aperture/datasource/config/SubstringPattern.java 2009-02-09 15:22:22 UTC (rev 1607) @@ -15,7 +15,7 @@ import org.ontoware.rdf2go.model.node.Resource; import org.ontoware.rdf2go.vocabulary.RDF; import org.ontoware.rdf2go.vocabulary.XSD; -import org.semanticdesktop.aperture.util.ModelUtil; +import org.semanticdesktop.aperture.rdf.util.ModelUtil; import org.semanticdesktop.aperture.vocabulary.DATASOURCE; /** Modified: aperture/trunk/core/datasource/core/src/main/java/org/semanticdesktop/aperture/datasource/impl/DataSourceRegistryImpl.java =================================================================== --- aperture/trunk/core/datasource/core/src/main/java/org/semanticdesktop/aperture/datasource/impl/DataSourceRegistryImpl.java 2009-02-09 14:35:31 UTC (rev 1606) +++ aperture/trunk/core/datasource/core/src/main/java/org/semanticdesktop/aperture/datasource/impl/DataSourceRegistryImpl.java 2009-02-09 15:22:22 UTC (rev 1607) @@ -16,7 +16,8 @@ import org.ontoware.rdf2go.model.node.URI; import org.semanticdesktop.aperture.datasource.DataSourceFactory; import org.semanticdesktop.aperture.datasource.DataSourceRegistry; -import org.semanticdesktop.aperture.util.ontology.OntologyUtil; +import org.semanticdesktop.aperture.vocabulary.DATASOURCE; +import org.semanticdesktop.aperture.vocabulary.SOURCEFORMAT; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -86,8 +87,8 @@ public void getDataSourceOntologyAndDescriptions(Model model) { try { - OntologyUtil.getSourceFormatOntology(model); - OntologyUtil.getSourceOntology(model); + SOURCEFORMAT.getSOURCEFORMATOntology(model); + DATASOURCE.getDATASOURCEOntology(model); Iterator iterator = factories.values().iterator(); while (iterator.hasNext()) { Set set = (Set)iterator.next(); Added: aperture/trunk/core/datasource/core/src/main/java/org/semanticdesktop/aperture/datasource/impl/DataSourceServiceActivator.java =================================================================== --- aperture/trunk/core/datasource/core/src/main/java/org/semanticdesktop/aperture/datasource/impl/DataSourceServiceActivator.java (rev 0) +++ aperture/trunk/core/datasource/core/src/main/java/org/semanticdesktop/aperture/datasource/impl/DataSourceServiceActivator.java 2009-02-09 15:22:22 UTC (rev 1607) @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2006 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.datasource.impl; + +import java.util.Hashtable; + +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceEvent; +import org.osgi.framework.ServiceListener; +import org.osgi.framework.ServiceReference; +import org.osgi.framework.ServiceRegistration; +import org.semanticdesktop.aperture.datasource.DataSourceFactory; +import org.semanticdesktop.aperture.datasource.DataSourceRegistry; + +public class DataSourceServiceActivator implements BundleActivator, ServiceListener { + + public BundleContext bc = null; + + private ServiceRegistration registration; + + private DataSourceRegistry registry; + + public void start(BundleContext context) throws Exception { + + bc = context; + registry = new DataSourceRegistryImpl(); + registration = bc.registerService(DataSourceRegistry.class.getName(), registry, + new Hashtable()); + + String filter = "(objectclass=" + DataSourceFactory.class.getName() + ")"; + bc.addServiceListener(this, filter); + + ServiceReference references[] = bc.getServiceReferences(null, filter); + + for (int i = 0; references != null && i < references.length; i++) { + this.serviceChanged(new ServiceEvent(ServiceEvent.REGISTERED, references[i])); + } + + + } + + public void stop(BundleContext context) throws Exception { + registration.unregister(); + bc = null; + } + + public void serviceChanged(ServiceEvent event) { + DataSourceFactory factory; + switch (event.getType()) { + case ServiceEvent.REGISTERED: + factory = (DataSourceFactory) bc.getService(event + .getServiceReference()); + registry.add(factory); + break; + case ServiceEvent.MODIFIED: + factory = (DataSourceFactory) bc.getService(event + .getServiceReference()); + registry.remove(factory); + registry.add(factory); + break; + case ServiceEvent.UNREGISTERING: + factory = (DataSourceFactory) bc.getService(event + .getServiceReference()); + registry.remove(factory); + break; + } + } + + +} Modified: aperture/trunk/core/datasource/pom.xml =================================================================== --- aperture/trunk/core/datasource/pom.xml 2009-02-09 14:35:31 UTC (rev 1606) +++ aperture/trunk/core/datasource/pom.xml 2009-02-09 15:22:22 UTC (rev 1607) @@ -18,6 +18,7 @@ <description>Definition of various data sources</description> <modules> + <module>core</module> <module>maven-plugin</module> </modules> </project> \ No newline at end of file Modified: aperture/trunk/core/rdf/core/pom.xml =================================================================== --- aperture/trunk/core/rdf/core/pom.xml 2009-02-09 14:35:31 UTC (rev 1606) +++ aperture/trunk/core/rdf/core/pom.xml 2009-02-09 15:22:22 UTC (rev 1607) @@ -21,10 +21,16 @@ <groupId>org.semanticdesktop.aperture</groupId> <artifactId>aperture-util</artifactId> </dependency> + <dependency> <groupId>org.semweb4j</groupId> <artifactId>rdf2go.api</artifactId> </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> </dependencies> <build> Modified: aperture/trunk/core/rdf/util/pom.xml =================================================================== --- aperture/trunk/core/rdf/util/pom.xml 2009-02-09 14:35:31 UTC (rev 1606) +++ aperture/trunk/core/rdf/util/pom.xml 2009-02-09 15:22:22 UTC (rev 1607) @@ -39,6 +39,11 @@ <groupId>info.aduna.commons</groupId> <artifactId>aduna-commons-xml</artifactId> </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> </dependencies> <build> Modified: aperture/trunk/pom.xml =================================================================== --- aperture/trunk/pom.xml 2009-02-09 14:35:31 UTC (rev 1606) +++ aperture/trunk/pom.xml 2009-02-09 15:22:22 UTC (rev 1607) @@ -115,6 +115,14 @@ </exclusion> </exclusions> </dependency> + + <!-- OSGi --> + <dependency> + <groupId>org.osgi</groupId> + <artifactId>osgi_R4_core</artifactId> + <version>1.0</version> + <scope>provided</scope> + </dependency> <!-- Testing --> <dependency> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <her...@us...> - 2009-02-10 09:40:23
|
Revision: 1611 http://aperture.svn.sourceforge.net/aperture/?rev=1611&view=rev Author: herko_ter_horst Date: 2009-02-10 09:40:13 +0000 (Tue, 10 Feb 2009) Log Message: ----------- Integrated rdf-core and rdf-util. Removed Eclipse settings. Modified Paths: -------------- aperture/trunk/core/datasource/core/pom.xml aperture/trunk/core/datasource/filesystem/pom.xml aperture/trunk/core/datasource/maven-plugin/pom.xml aperture/trunk/core/datasource/pom.xml aperture/trunk/core/rdf/core/pom.xml aperture/trunk/core/rdf/pom.xml aperture/trunk/pom.xml Added Paths: ----------- aperture/trunk/core/rdf/core/src/main/java/org/semanticdesktop/aperture/rdf/util/ Removed Paths: ------------- aperture/trunk/core/datasource/core/.settings/ aperture/trunk/core/rdf/core/.settings/ aperture/trunk/core/rdf/util/ aperture/trunk/core/util/.settings/ aperture/trunk/core/vocabulary/core/.settings/ aperture/trunk/core/vocabulary/maven-plugin/.settings/ Property Changed: ---------------- aperture/trunk/core/datasource/filesystem/ Modified: aperture/trunk/core/datasource/core/pom.xml =================================================================== --- aperture/trunk/core/datasource/core/pom.xml 2009-02-09 15:58:07 UTC (rev 1610) +++ aperture/trunk/core/datasource/core/pom.xml 2009-02-10 09:40:13 UTC (rev 1611) @@ -23,10 +23,6 @@ </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> - <artifactId>aperture-rdf-util</artifactId> - </dependency> - <dependency> - <groupId>org.semanticdesktop.aperture</groupId> <artifactId>aperture-util</artifactId> </dependency> <dependency> Property changes on: aperture/trunk/core/datasource/filesystem ___________________________________________________________________ Added: svn:ignore + .settings target .classpath .project Modified: aperture/trunk/core/datasource/filesystem/pom.xml =================================================================== --- aperture/trunk/core/datasource/filesystem/pom.xml 2009-02-09 15:58:07 UTC (rev 1610) +++ aperture/trunk/core/datasource/filesystem/pom.xml 2009-02-10 09:40:13 UTC (rev 1611) @@ -16,8 +16,10 @@ <name>Aperture Core: DataSource - File System</name> <description>File System DataSource</description> - <dependency> - <groupId>org.semanticdesktop.aperture</groupId> - <artifactId>aperture-datasource-core</groupId> - </dependency> + <dependencies> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-datasource-core</artifactId> + </dependency> + </dependencies> </project> Modified: aperture/trunk/core/datasource/maven-plugin/pom.xml =================================================================== --- aperture/trunk/core/datasource/maven-plugin/pom.xml 2009-02-09 15:58:07 UTC (rev 1610) +++ aperture/trunk/core/datasource/maven-plugin/pom.xml 2009-02-10 09:40:13 UTC (rev 1611) @@ -20,7 +20,7 @@ <dependencies> <dependency> <groupId>org.semanticdesktop.aperture</groupId> - <artifactId>aperture-rdf-util</artifactId> + <artifactId>aperture-rdf-core</artifactId> </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> Modified: aperture/trunk/core/datasource/pom.xml =================================================================== --- aperture/trunk/core/datasource/pom.xml 2009-02-09 15:58:07 UTC (rev 1610) +++ aperture/trunk/core/datasource/pom.xml 2009-02-10 09:40:13 UTC (rev 1611) @@ -19,6 +19,7 @@ <modules> <module>core</module> + <module>filesystem</module> <module>maven-plugin</module> </modules> </project> \ No newline at end of file Modified: aperture/trunk/core/rdf/core/pom.xml =================================================================== --- aperture/trunk/core/rdf/core/pom.xml 2009-02-09 15:58:07 UTC (rev 1610) +++ aperture/trunk/core/rdf/core/pom.xml 2009-02-10 09:40:13 UTC (rev 1611) @@ -21,11 +21,20 @@ <groupId>org.semanticdesktop.aperture</groupId> <artifactId>aperture-util</artifactId> </dependency> - <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-vocabulary-core</artifactId> + </dependency> + + <dependency> <groupId>org.semweb4j</groupId> <artifactId>rdf2go.api</artifactId> </dependency> + + <dependency> + <groupId>info.aduna.commons</groupId> + <artifactId>aduna-commons-xml</artifactId> + </dependency> <dependency> <groupId>org.slf4j</groupId> @@ -49,7 +58,7 @@ <extensions>true</extensions> <configuration> <instructions> - <Export-Package>org.semanticdesktop.aperture.rdf,org.semanticdesktop.aperture.rdf.impl</Export-Package> + <Export-Package>org.semanticdesktop.aperture.rdf,org.semanticdesktop.aperture.rdf.impl,org.semanticdesktop.aperture.rdf.impl</Export-Package> </instructions> </configuration> </plugin> Modified: aperture/trunk/core/rdf/pom.xml =================================================================== --- aperture/trunk/core/rdf/pom.xml 2009-02-09 15:58:07 UTC (rev 1610) +++ aperture/trunk/core/rdf/pom.xml 2009-02-10 09:40:13 UTC (rev 1611) @@ -19,6 +19,5 @@ <modules> <module>core</module> - <module>util</module> </modules> </project> Modified: aperture/trunk/pom.xml =================================================================== --- aperture/trunk/pom.xml 2009-02-09 15:58:07 UTC (rev 1610) +++ aperture/trunk/pom.xml 2009-02-10 09:40:13 UTC (rev 1611) @@ -40,6 +40,11 @@ <!-- Aperture --> <dependency> <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-datasource-core</artifactId> + <version>${aperture.version}</version> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> <artifactId>aperture-rdf-core</artifactId> <version>${aperture.version}</version> </dependency> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <her...@us...> - 2009-02-10 09:47:26
|
Revision: 1613 http://aperture.svn.sourceforge.net/aperture/?rev=1613&view=rev Author: herko_ter_horst Date: 2009-02-10 09:47:24 +0000 (Tue, 10 Feb 2009) Log Message: ----------- Made aperture-rdf a single module. Modified Paths: -------------- aperture/trunk/core/datasource/core/pom.xml aperture/trunk/core/datasource/maven-plugin/pom.xml aperture/trunk/core/rdf/pom.xml aperture/trunk/pom.xml Removed Paths: ------------- aperture/trunk/core/rdf/core/ Property Changed: ---------------- aperture/trunk/core/datasource/core/ aperture/trunk/core/rdf/ aperture/trunk/core/util/ aperture/trunk/core/vocabulary/core/ aperture/trunk/core/vocabulary/maven-plugin/ Property changes on: aperture/trunk/core/datasource/core ___________________________________________________________________ Modified: svn:ignore - target .classpath .project + target .classpath .project .settings Modified: aperture/trunk/core/datasource/core/pom.xml =================================================================== --- aperture/trunk/core/datasource/core/pom.xml 2009-02-10 09:41:03 UTC (rev 1612) +++ aperture/trunk/core/datasource/core/pom.xml 2009-02-10 09:47:24 UTC (rev 1613) @@ -19,7 +19,7 @@ <dependencies> <dependency> <groupId>org.semanticdesktop.aperture</groupId> - <artifactId>aperture-rdf-core</artifactId> + <artifactId>aperture-rdf</artifactId> </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> Modified: aperture/trunk/core/datasource/maven-plugin/pom.xml =================================================================== --- aperture/trunk/core/datasource/maven-plugin/pom.xml 2009-02-10 09:41:03 UTC (rev 1612) +++ aperture/trunk/core/datasource/maven-plugin/pom.xml 2009-02-10 09:47:24 UTC (rev 1613) @@ -20,7 +20,7 @@ <dependencies> <dependency> <groupId>org.semanticdesktop.aperture</groupId> - <artifactId>aperture-rdf-core</artifactId> + <artifactId>aperture-rdf</artifactId> </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> Property changes on: aperture/trunk/core/rdf ___________________________________________________________________ Added: svn:ignore + .classpath .project .settings target Modified: aperture/trunk/core/rdf/pom.xml =================================================================== --- aperture/trunk/core/rdf/pom.xml 2009-02-10 09:41:03 UTC (rev 1612) +++ aperture/trunk/core/rdf/pom.xml 2009-02-10 09:47:24 UTC (rev 1613) @@ -12,12 +12,57 @@ </parent> <artifactId>aperture-rdf</artifactId> - <packaging>pom</packaging> <name>Aperture Core: RDF</name> - <description>RDF functionality and support</description> + <description>RDF model and utilities</description> + + <dependencies> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-util</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-vocabulary-core</artifactId> + </dependency> + + <dependency> + <groupId>org.semweb4j</groupId> + <artifactId>rdf2go.api</artifactId> + </dependency> + + <dependency> + <groupId>info.aduna.commons</groupId> + <artifactId>aduna-commons-xml</artifactId> + </dependency> - <modules> - <module>core</module> - </modules> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Export-Package>org.semanticdesktop.aperture.rdf,org.semanticdesktop.aperture.rdf.impl,org.semanticdesktop.aperture.rdf.impl</Export-Package> + </instructions> + </configuration> + </plugin> + </plugins> + </build> + </project> Property changes on: aperture/trunk/core/util ___________________________________________________________________ Modified: svn:ignore - .classpath .project target + .classpath .project target .settings Property changes on: aperture/trunk/core/vocabulary/core ___________________________________________________________________ Modified: svn:ignore - .classpath .project target + .classpath .project target .settings Property changes on: aperture/trunk/core/vocabulary/maven-plugin ___________________________________________________________________ Modified: svn:ignore - target .classpath .project + target .classpath .project .settings Modified: aperture/trunk/pom.xml =================================================================== --- aperture/trunk/pom.xml 2009-02-10 09:41:03 UTC (rev 1612) +++ aperture/trunk/pom.xml 2009-02-10 09:47:24 UTC (rev 1613) @@ -45,16 +45,11 @@ </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> - <artifactId>aperture-rdf-core</artifactId> + <artifactId>aperture-rdf</artifactId> <version>${aperture.version}</version> </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> - <artifactId>aperture-rdf-util</artifactId> - <version>${aperture.version}</version> - </dependency> - <dependency> - <groupId>org.semanticdesktop.aperture</groupId> <artifactId>aperture-util</artifactId> <version>${aperture.version}</version> </dependency> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <her...@us...> - 2009-02-10 13:49:19
|
Revision: 1614 http://aperture.svn.sourceforge.net/aperture/?rev=1614&view=rev Author: herko_ter_horst Date: 2009-02-10 13:49:15 +0000 (Tue, 10 Feb 2009) Log Message: ----------- Implemented DataSourceClassGenerator as a Maven plugin. Modified Paths: -------------- aperture/trunk/core/datasource/filesystem/pom.xml aperture/trunk/core/datasource/maven-plugin/pom.xml aperture/trunk/core/datasource/maven-plugin/src/main/java/org/semanticdesktop/aperture/datasource/DataSourceClassGenerator.java aperture/trunk/core/datasource/maven-plugin/src/main/java/org/semanticdesktop/aperture/datasource/DataSourceClassGeneratorMojo.java aperture/trunk/core/rdf/pom.xml aperture/trunk/core/rdf/src/main/java/org/semanticdesktop/aperture/rdf/util/ModelUtil.java aperture/trunk/core/vocabulary/maven-plugin/src/main/java/org/semanticdesktop/aperture/vocabulary/VocabularyWriter.java aperture/trunk/pom.xml Added Paths: ----------- aperture/trunk/core/datasource/filesystem/src/main/resources/ aperture/trunk/core/datasource/filesystem/src/main/resources/org/ aperture/trunk/core/datasource/filesystem/src/main/resources/org/semanticdesktop/ aperture/trunk/core/datasource/filesystem/src/main/resources/org/semanticdesktop/aperture/ aperture/trunk/core/datasource/filesystem/src/main/resources/org/semanticdesktop/aperture/datasource/ aperture/trunk/core/datasource/filesystem/src/main/resources/org/semanticdesktop/aperture/datasource/filesystem/ aperture/trunk/core/datasource/filesystem/src/main/resources/org/semanticdesktop/aperture/datasource/filesystem/filesystemDataSource.ttl aperture/trunk/core/datasource/maven-plugin/src/main/java/org/semanticdesktop/aperture/datasource/DataSource.java Removed Paths: ------------- aperture/trunk/core/datasource/filesystem/src/main/java/org/semanticdesktop/aperture/datasource/filesystem/FILESYSTEMDS.java aperture/trunk/core/datasource/filesystem/src/main/java/org/semanticdesktop/aperture/datasource/filesystem/FileSystemDataSource.java aperture/trunk/core/datasource/filesystem/src/main/java/org/semanticdesktop/aperture/datasource/filesystem/filesystemDataSource.ttl Modified: aperture/trunk/core/datasource/filesystem/pom.xml =================================================================== --- aperture/trunk/core/datasource/filesystem/pom.xml 2009-02-10 09:47:24 UTC (rev 1613) +++ aperture/trunk/core/datasource/filesystem/pom.xml 2009-02-10 13:49:15 UTC (rev 1614) @@ -16,10 +16,56 @@ <name>Aperture Core: DataSource - File System</name> <description>File System DataSource</description> + <properties> + <ontology.input>src/main/resources/org/semanticdesktop/aperture/datasource/filesystem/filesystemDataSource.ttl</ontology.input> + <ontology.namespace>http://aperture.semanticdesktop.org/ontology/2007/08/12/filesystemds#</ontology.namespace> + <ontology.class>FILESYSTEMDS</ontology.class> + <generator.output.package>org.semanticdesktop.aperture.datasource.filesystem</generator.output.package> + <generator.output.dir>src/main/java</generator.output.dir> + </properties> + <dependencies> <dependency> <groupId>org.semanticdesktop.aperture</groupId> <artifactId>aperture-datasource-core</artifactId> </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-rdf</artifactId> + </dependency> </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-vocabulary-maven-plugin</artifactId> + <configuration> + <vocabularies> + <vocabulary> + <ontology>${ontology.input}</ontology> + <namespace>${ontology.namespace}</namespace> + <javaClass>${generator.output.package}.${ontology.class}</javaClass> + <outputDir>${generator.output.dir}</outputDir> + </vocabulary> + </vocabularies> + </configuration> + </plugin> + <plugin> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-datasource-maven-plugin</artifactId> + <configuration> + <dataSources> + <dataSource> + <ontology>${ontology.input}</ontology> + <namespace>${ontology.namespace}</namespace> + <ontologyClass>${ontology.class}</ontologyClass> + <javaClass>${generator.output.package}.FileSystemDataSource</javaClass> + <outputDir>${generator.output.dir}</outputDir> + </dataSource> + </dataSources> + </configuration> + </plugin> + </plugins> + </build> </project> Deleted: aperture/trunk/core/datasource/filesystem/src/main/java/org/semanticdesktop/aperture/datasource/filesystem/FILESYSTEMDS.java =================================================================== --- aperture/trunk/core/datasource/filesystem/src/main/java/org/semanticdesktop/aperture/datasource/filesystem/FILESYSTEMDS.java 2009-02-10 09:47:24 UTC (rev 1613) +++ aperture/trunk/core/datasource/filesystem/src/main/java/org/semanticdesktop/aperture/datasource/filesystem/FILESYSTEMDS.java 2009-02-10 13:49:15 UTC (rev 1614) @@ -1,99 +0,0 @@ -/* - * Copyright (c) 2006 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. - * All rights reserved. - * - * Licensed under the Aperture BSD-style license. - */ -package org.semanticdesktop.aperture.datasource.filesystem; -import java.io.FileNotFoundException; -import java.io.InputStream; - -import org.ontoware.rdf2go.model.Model; -import org.ontoware.rdf2go.model.Syntax; -import org.ontoware.rdf2go.model.node.URI; -import org.ontoware.rdf2go.model.node.impl.URIImpl; -import org.semanticdesktop.aperture.util.ResourceUtil; -/** - * Vocabulary File. Created by org.semanticdesktop.aperture.util.VocabularyWriter on Tue Jul 15 22:55:05 CEST 2008 - * input file: D:\workspace\aperture/src/java/org/semanticdesktop/aperture/datasource/filesystem/filesystemDataSource.ttl - * namespace: http://aperture.semanticdesktop.org/ontology/2007/08/12/filesystemds# - */ -public class FILESYSTEMDS { - - /** Path to the ontology resource */ - public static final String FILESYSTEMDS_RESOURCE_PATH = - "org/semanticdesktop/aperture/datasource/filesystem/filesystemDataSource.ttl"; - - /** - * Puts the FILESYSTEMDS ontology into the given model. - * @param model The model for the source ontology to be put into. - * @throws Exception if something goes wrong. - */ - public static void getFILESYSTEMDSOntology(Model model) { - try { - InputStream stream = ResourceUtil.getInputStream(FILESYSTEMDS_RESOURCE_PATH, FILESYSTEMDS.class); - if (stream == null) { - throw new FileNotFoundException("couldn't find resource " + FILESYSTEMDS_RESOURCE_PATH); - } - model.readFrom(stream, Syntax.Turtle); - } catch(Exception e) { - throw new RuntimeException(e); - } - } - - /** The namespace for FILESYSTEMDS */ - public static final URI NS_FILESYSTEMDS = new URIImpl("http://aperture.semanticdesktop.org/ontology/2007/08/12/filesystemds#"); - /** - * Type: Class <br/> - * Label: Filesystem Data Source <br/> - * Comment: A data source describing a folder or a filesystem containing files <br/> - */ - public static final URI FileSystemDataSource = new URIImpl("http://aperture.semanticdesktop.org/ontology/2007/08/12/filesystemds#FileSystemDataSource"); - /** - * Type: Property <br/> - * Label: Root Folder <br/> - * Comment: Path to the root of the folder tree to be crawled <br/> - * Domain: http://aperture.semanticdesktop.org/ontology/2007/08/12/filesystemds#FileSystemDataSource <br/> - * Range: http://www.w3.org/2001/XMLSchema#string <br/> - */ - public static final URI rootFolder = new URIImpl("http://aperture.semanticdesktop.org/ontology/2007/08/12/filesystemds#rootFolder"); - /** - * Type: Property <br/> - * Label: Maximum Depth <br/> - * Comment: How many levels below the root folder should the crawled descend. <br/> - * Domain: http://aperture.semanticdesktop.org/ontology/2007/08/12/filesystemds#FileSystemDataSource <br/> - * Range: http://www.w3.org/2001/XMLSchema#integer <br/> - */ - public static final URI maximumDepth = new URIImpl("http://aperture.semanticdesktop.org/ontology/2007/08/12/filesystemds#maximumDepth"); - /** - * Type: Property <br/> - * Label: Maximum Size <br/> - * Comment: Maximum size (in bytes) of files reported by the crawler <br/> - * Domain: http://aperture.semanticdesktop.org/ontology/2007/08/12/filesystemds#FileSystemDataSource <br/> - * Range: http://www.w3.org/2001/XMLSchema#long <br/> - */ - public static final URI maximumSize = new URIImpl("http://aperture.semanticdesktop.org/ontology/2007/08/12/filesystemds#maximumSize"); - /** - * Type: Property <br/> - * Label: Include hidden resources <br/> - * Comment: Should the hidden files and folders be included in crawl results? <br/> - * Domain: http://aperture.semanticdesktop.org/ontology/2007/08/12/filesystemds#FileSystemDataSource <br/> - * Range: http://www.w3.org/2001/XMLSchema#boolean <br/> - */ - public static final URI includeHiddenResources = new URIImpl("http://aperture.semanticdesktop.org/ontology/2007/08/12/filesystemds#includeHiddenResources"); - /** - * Type: Property <br/> - * Label: Follow symbolic links <br/> - * Comment: Should the crawler follow symbolic links? <br/> - * Domain: http://aperture.semanticdesktop.org/ontology/2007/08/12/filesystemds#FileSystemDataSource <br/> - * Range: http://www.w3.org/2001/XMLSchema#boolean <br/> - */ - public static final URI followSymbolicLinks = new URIImpl("http://aperture.semanticdesktop.org/ontology/2007/08/12/filesystemds#followSymbolicLinks"); - /** - * Type: Property <br/> - * Label: Supress the addition of parent->child nie:hasPart triples to the folder metadata <br/> - * Domain: http://aperture.semanticdesktop.org/ontology/2007/08/12/filesystemds#FileSystemDataSource <br/> - * Range: http://www.w3.org/2001/XMLSchema#boolean <br/> - */ - public static final URI suppressParentChildLinks = new URIImpl("http://aperture.semanticdesktop.org/ontology/2007/08/12/filesystemds#suppressParentChildLinks"); -} Deleted: aperture/trunk/core/datasource/filesystem/src/main/java/org/semanticdesktop/aperture/datasource/filesystem/FileSystemDataSource.java =================================================================== --- aperture/trunk/core/datasource/filesystem/src/main/java/org/semanticdesktop/aperture/datasource/filesystem/FileSystemDataSource.java 2009-02-10 09:47:24 UTC (rev 1613) +++ aperture/trunk/core/datasource/filesystem/src/main/java/org/semanticdesktop/aperture/datasource/filesystem/FileSystemDataSource.java 2009-02-10 13:49:15 UTC (rev 1614) @@ -1,182 +0,0 @@ -/* - * Copyright (c) 2006 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. - * All rights reserved. - * - * Licensed under the Aperture BSD-style license. - */ -package org.semanticdesktop.aperture.datasource.filesystem; -import org.ontoware.rdf2go.model.node.URI; -import org.semanticdesktop.aperture.datasource.DataSource; -import org.semanticdesktop.aperture.datasource.config.DomainBoundableDataSource; -import org.semanticdesktop.aperture.rdf.RDFContainer; - -/** - * Data source class file. Created by org.semanticdesktop.aperture.util.DataSourceClassGenerator on Tue Jul 15 22:55:09 CEST 2008 - * input file: D:\workspace\aperture/src/java/org/semanticdesktop/aperture/datasource/filesystem/filesystemDataSource.ttl - * class uri: http://aperture.semanticdesktop.org/ontology/2007/08/12/filesystemds#FileSystemDataSource - */ -public class FileSystemDataSource extends DomainBoundableDataSource { - - /** - * @see DataSource#getType() - */ - public URI getType() { - return FILESYSTEMDS.FileSystemDataSource; - } - - /** - * Returns the Path to the root of the folder tree to be crawled - * - * @return the Path to the root of the folder tree to be crawled or null if no value has been set - * @throws NullPointerException if no configuration has been set, use - * {@link #setConfiguration(RDFContainer)} before calling this method - */ - public String getRootFolder() { - return getConfiguration().getString(FILESYSTEMDS.rootFolder); - } - - /** - * Sets the Path to the root of the folder tree to be crawled - * - * @param rootFolder Path to the root of the folder tree to be crawled, can be null in which case any previous setting will be removed - * @throws NullPointerException if no configuration has been set, use - * {@link #setConfiguration(RDFContainer)} before calling this method - */ - public void setRootFolder(String rootFolder) { - if ( rootFolder == null) { - getConfiguration().remove(FILESYSTEMDS.rootFolder); - } else { - getConfiguration().put(FILESYSTEMDS.rootFolder,rootFolder); - } - } - - /** - * Returns the How many levels below the root folder should the crawled descend. - * - * @return the How many levels below the root folder should the crawled descend. or null if no value has been set - * @throws NullPointerException if no configuration has been set, use - * {@link #setConfiguration(RDFContainer)} before calling this method - */ - public Integer getMaximumDepth() { - return getConfiguration().getInteger(FILESYSTEMDS.maximumDepth); - } - - /** - * Sets the How many levels below the root folder should the crawled descend. - * - * @param maximumDepth How many levels below the root folder should the crawled descend., can be null in which case any previous setting will be removed - * @throws NullPointerException if no configuration has been set, use - * {@link #setConfiguration(RDFContainer)} before calling this method - */ - public void setMaximumDepth(Integer maximumDepth) { - if ( maximumDepth == null) { - getConfiguration().remove(FILESYSTEMDS.maximumDepth); - } else { - getConfiguration().put(FILESYSTEMDS.maximumDepth,maximumDepth); - } - } - - /** - * Returns the Maximum size (in bytes) of files reported by the crawler - * - * @return the Maximum size (in bytes) of files reported by the crawler or null if no value has been set - * @throws NullPointerException if no configuration has been set, use - * {@link #setConfiguration(RDFContainer)} before calling this method - */ - public Long getMaximumSize() { - return getConfiguration().getLong(FILESYSTEMDS.maximumSize); - } - - /** - * Sets the Maximum size (in bytes) of files reported by the crawler - * - * @param maximumSize Maximum size (in bytes) of files reported by the crawler, can be null in which case any previous setting will be removed - * @throws NullPointerException if no configuration has been set, use - * {@link #setConfiguration(RDFContainer)} before calling this method - */ - public void setMaximumSize(Long maximumSize) { - if ( maximumSize == null) { - getConfiguration().remove(FILESYSTEMDS.maximumSize); - } else { - getConfiguration().put(FILESYSTEMDS.maximumSize,maximumSize); - } - } - - /** - * Returns the Should the hidden files and folders be included in crawl results? - * - * @return the Should the hidden files and folders be included in crawl results? or null if no value has been set - * @throws NullPointerException if no configuration has been set, use - * {@link #setConfiguration(RDFContainer)} before calling this method - */ - public Boolean getIncludeHiddenResources() { - return getConfiguration().getBoolean(FILESYSTEMDS.includeHiddenResources); - } - - /** - * Sets the Should the hidden files and folders be included in crawl results? - * - * @param includeHiddenResources Should the hidden files and folders be included in crawl results?, can be null in which case any previous setting will be removed - * @throws NullPointerException if no configuration has been set, use - * {@link #setConfiguration(RDFContainer)} before calling this method - */ - public void setIncludeHiddenResources(Boolean includeHiddenResources) { - if ( includeHiddenResources == null) { - getConfiguration().remove(FILESYSTEMDS.includeHiddenResources); - } else { - getConfiguration().put(FILESYSTEMDS.includeHiddenResources,includeHiddenResources); - } - } - - /** - * Returns the Should the crawler follow symbolic links? - * - * @return the Should the crawler follow symbolic links? or null if no value has been set - * @throws NullPointerException if no configuration has been set, use - * {@link #setConfiguration(RDFContainer)} before calling this method - */ - public Boolean getFollowSymbolicLinks() { - return getConfiguration().getBoolean(FILESYSTEMDS.followSymbolicLinks); - } - - /** - * Sets the Should the crawler follow symbolic links? - * - * @param followSymbolicLinks Should the crawler follow symbolic links?, can be null in which case any previous setting will be removed - * @throws NullPointerException if no configuration has been set, use - * {@link #setConfiguration(RDFContainer)} before calling this method - */ - public void setFollowSymbolicLinks(Boolean followSymbolicLinks) { - if ( followSymbolicLinks == null) { - getConfiguration().remove(FILESYSTEMDS.followSymbolicLinks); - } else { - getConfiguration().put(FILESYSTEMDS.followSymbolicLinks,followSymbolicLinks); - } - } - - /** - * Returns the - * - * @return the or null if no value has been set - * @throws NullPointerException if no configuration has been set, use - * {@link #setConfiguration(RDFContainer)} before calling this method - */ - public Boolean getSuppressParentChildLinks() { - return getConfiguration().getBoolean(FILESYSTEMDS.suppressParentChildLinks); - } - - /** - * Sets the - * - * @param suppressParentChildLinks , can be null in which case any previous setting will be removed - * @throws NullPointerException if no configuration has been set, use - * {@link #setConfiguration(RDFContainer)} before calling this method - */ - public void setSuppressParentChildLinks(Boolean suppressParentChildLinks) { - if ( suppressParentChildLinks == null) { - getConfiguration().remove(FILESYSTEMDS.suppressParentChildLinks); - } else { - getConfiguration().put(FILESYSTEMDS.suppressParentChildLinks,suppressParentChildLinks); - } - } -} Deleted: aperture/trunk/core/datasource/filesystem/src/main/java/org/semanticdesktop/aperture/datasource/filesystem/filesystemDataSource.ttl =================================================================== --- aperture/trunk/core/datasource/filesystem/src/main/java/org/semanticdesktop/aperture/datasource/filesystem/filesystemDataSource.ttl 2009-02-10 09:47:24 UTC (rev 1613) +++ aperture/trunk/core/datasource/filesystem/src/main/java/org/semanticdesktop/aperture/datasource/filesystem/filesystemDataSource.ttl 2009-02-10 13:49:15 UTC (rev 1614) @@ -1,97 +0,0 @@ -@prefix fresnel: <http://www.w3.org/2004/09/fresnel#> . -@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . -@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . -@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . -@prefix sourceformat: <http://aperture.semanticdesktop.org/ontology/sourceformat#> . -@prefix source: <http://aperture.semanticdesktop.org/ontology/2007/08/12/source#> . -@prefix nie: <http://www.semanticdesktop.org/ontologies/2007/01/19/nie#> . -@prefix : <http://aperture.semanticdesktop.org/ontology/2007/08/12/filesystemds#> . - -:FileSystemDataSource a rdfs:Class ; - rdfs:subClassOf nie:DataSource ; - rdfs:label "Filesystem Data Source" ; - rdfs:comment "A data source describing a folder or a filesystem containing files" . - -:FileSystemDataSourceLens rdf:type fresnel:Lens ; - fresnel:purpose fresnel:defaultLens ; - fresnel:classLensDomain :FileSystemDataSource ; - fresnel:showProperties ( :rootFolder - :maximumDepth - :maximumSize - :includeHiddenResources - :followSymbolicLinks - :suppressParentChildLinks - source:includePattern - source:excludePattern ) . - -:rootFolder a rdf:Property ; - rdfs:label "Root Folder" ; - rdfs:comment "Path to the root of the folder tree to be crawled" ; - rdfs:domain :FileSystemDataSource ; - rdfs:range xsd:string . - -:rootFolderFormat a fresnel:Format ; - sourceformat:valueWidget [ - a sourceformat:TextFieldWidget - ] ; - fresnel:propertyFormatDomain :rootFolder . - - -:maximumDepth a rdf:Property ; - rdfs:label "Maximum Depth" ; - rdfs:comment "How many levels below the root folder should the crawled descend." ; - rdfs:domain :FileSystemDataSource ; - rdfs:range xsd:integer . - -:maximumDepthFormat a fresnel:Format ; - sourceformat:valueWidget [ - a sourceformat:IntegerFieldWidget - ] ; - fresnel:propertyFormatDomain :maximumDepth . - -:maximumSize a rdf:Property ; - rdfs:label "Maximum Size" ; - rdfs:comment "Maximum size (in bytes) of files reported by the crawler" ; - rdfs:domain :FileSystemDataSource ; - rdfs:range xsd:long . - -:maximumSizeFormat a fresnel:Format ; - sourceformat:valueWidget [ - a sourceformat:IntegerFieldWidget - ] ; - fresnel:propertyFormatDomain :maximumSize . - -:includeHiddenResources a rdf:Property ; - rdfs:label "Include hidden resources" ; - rdfs:comment "Should the hidden files and folders be included in crawl results?" ; - rdfs:domain :FileSystemDataSource ; - rdfs:range xsd:boolean . - -:includeHiddenResourcesFormat a fresnel:Format ; - sourceformat:valueWidget [ - a sourceformat:CheckBoxWidget - ] ; - fresnel:propertyFormatDomain :includeHiddenResources . - -:followSymbolicLinks a rdf:Property ; - rdfs:label "Follow symbolic links" ; - rdfs:comment "Should the crawler follow symbolic links?" ; - rdfs:domain :FileSystemDataSource ; - rdfs:range xsd:boolean . - -:followSymbolicLinksFormat a fresnel:Format ; - sourceformat:valueWidget [ - a sourceformat:CheckBoxWidget - ] ; - fresnel:propertyFormatDomain :followSymbolicLinks . - -:suppressParentChildLinks a rdf:Property ; - rdfs:label "Supress the addition of parent->child nie:hasPart triples to the folder metadata" ; - rdfs:domain :FileSystemDataSource ; - rdfs:range xsd:boolean . - -:suppressParentChildLinksFormat a fresnel:Format ; - sourceformat:valueWidget [ - a sourceformat:CheckBoxWidget - ] ; - fresnel:propertyFormatDomain :suppressParentChildLinks . Copied: aperture/trunk/core/datasource/filesystem/src/main/resources/org/semanticdesktop/aperture/datasource/filesystem/filesystemDataSource.ttl (from rev 1613, aperture/trunk/core/datasource/filesystem/src/main/java/org/semanticdesktop/aperture/datasource/filesystem/filesystemDataSource.ttl) =================================================================== --- aperture/trunk/core/datasource/filesystem/src/main/resources/org/semanticdesktop/aperture/datasource/filesystem/filesystemDataSource.ttl (rev 0) +++ aperture/trunk/core/datasource/filesystem/src/main/resources/org/semanticdesktop/aperture/datasource/filesystem/filesystemDataSource.ttl 2009-02-10 13:49:15 UTC (rev 1614) @@ -0,0 +1,97 @@ +@prefix fresnel: <http://www.w3.org/2004/09/fresnel#> . +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . +@prefix sourceformat: <http://aperture.semanticdesktop.org/ontology/sourceformat#> . +@prefix source: <http://aperture.semanticdesktop.org/ontology/2007/08/12/source#> . +@prefix nie: <http://www.semanticdesktop.org/ontologies/2007/01/19/nie#> . +@prefix : <http://aperture.semanticdesktop.org/ontology/2007/08/12/filesystemds#> . + +:FileSystemDataSource a rdfs:Class ; + rdfs:subClassOf nie:DataSource ; + rdfs:label "Filesystem Data Source" ; + rdfs:comment "A data source describing a folder or a filesystem containing files" . + +:FileSystemDataSourceLens rdf:type fresnel:Lens ; + fresnel:purpose fresnel:defaultLens ; + fresnel:classLensDomain :FileSystemDataSource ; + fresnel:showProperties ( :rootFolder + :maximumDepth + :maximumSize + :includeHiddenResources + :followSymbolicLinks + :suppressParentChildLinks + source:includePattern + source:excludePattern ) . + +:rootFolder a rdf:Property ; + rdfs:label "Root Folder" ; + rdfs:comment "Path to the root of the folder tree to be crawled" ; + rdfs:domain :FileSystemDataSource ; + rdfs:range xsd:string . + +:rootFolderFormat a fresnel:Format ; + sourceformat:valueWidget [ + a sourceformat:TextFieldWidget + ] ; + fresnel:propertyFormatDomain :rootFolder . + + +:maximumDepth a rdf:Property ; + rdfs:label "Maximum Depth" ; + rdfs:comment "How many levels below the root folder should the crawled descend." ; + rdfs:domain :FileSystemDataSource ; + rdfs:range xsd:integer . + +:maximumDepthFormat a fresnel:Format ; + sourceformat:valueWidget [ + a sourceformat:IntegerFieldWidget + ] ; + fresnel:propertyFormatDomain :maximumDepth . + +:maximumSize a rdf:Property ; + rdfs:label "Maximum Size" ; + rdfs:comment "Maximum size (in bytes) of files reported by the crawler" ; + rdfs:domain :FileSystemDataSource ; + rdfs:range xsd:long . + +:maximumSizeFormat a fresnel:Format ; + sourceformat:valueWidget [ + a sourceformat:IntegerFieldWidget + ] ; + fresnel:propertyFormatDomain :maximumSize . + +:includeHiddenResources a rdf:Property ; + rdfs:label "Include hidden resources" ; + rdfs:comment "Should the hidden files and folders be included in crawl results?" ; + rdfs:domain :FileSystemDataSource ; + rdfs:range xsd:boolean . + +:includeHiddenResourcesFormat a fresnel:Format ; + sourceformat:valueWidget [ + a sourceformat:CheckBoxWidget + ] ; + fresnel:propertyFormatDomain :includeHiddenResources . + +:followSymbolicLinks a rdf:Property ; + rdfs:label "Follow symbolic links" ; + rdfs:comment "Should the crawler follow symbolic links?" ; + rdfs:domain :FileSystemDataSource ; + rdfs:range xsd:boolean . + +:followSymbolicLinksFormat a fresnel:Format ; + sourceformat:valueWidget [ + a sourceformat:CheckBoxWidget + ] ; + fresnel:propertyFormatDomain :followSymbolicLinks . + +:suppressParentChildLinks a rdf:Property ; + rdfs:label "Supress the addition of parent->child nie:hasPart triples to the folder metadata" ; + rdfs:domain :FileSystemDataSource ; + rdfs:range xsd:boolean . + +:suppressParentChildLinksFormat a fresnel:Format ; + sourceformat:valueWidget [ + a sourceformat:CheckBoxWidget + ] ; + fresnel:propertyFormatDomain :suppressParentChildLinks . Modified: aperture/trunk/core/datasource/maven-plugin/pom.xml =================================================================== --- aperture/trunk/core/datasource/maven-plugin/pom.xml 2009-02-10 09:47:24 UTC (rev 1613) +++ aperture/trunk/core/datasource/maven-plugin/pom.xml 2009-02-10 13:49:15 UTC (rev 1614) @@ -31,10 +31,27 @@ <groupId>org.semweb4j</groupId> <artifactId>rdf2go.api</artifactId> </dependency> + <dependency> + <groupId>org.semweb4j</groupId> + <artifactId>rdf2go.impl.sesame22</artifactId> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>org.openrdf.sesame</groupId> + <artifactId>sesame-runtime</artifactId> + <scope>runtime</scope> + </dependency> <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-plugin-api</artifactId> </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-simple</artifactId> + <scope>runtime</scope> + </dependency> </dependencies> </project> \ No newline at end of file Added: aperture/trunk/core/datasource/maven-plugin/src/main/java/org/semanticdesktop/aperture/datasource/DataSource.java =================================================================== --- aperture/trunk/core/datasource/maven-plugin/src/main/java/org/semanticdesktop/aperture/datasource/DataSource.java (rev 0) +++ aperture/trunk/core/datasource/maven-plugin/src/main/java/org/semanticdesktop/aperture/datasource/DataSource.java 2009-02-10 13:49:15 UTC (rev 1614) @@ -0,0 +1,93 @@ +/* + * Copyright (c) 2006 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.datasource; + +import java.io.File; + +/** + * @author Herko ter Horst + */ +public class DataSource { + + private String javaClass = null; + + private File ontology; + + private String namespace = null; + + private String ontologyClass = null; + + private File outputDir; + + private File outputJavaFile; + + private boolean forceGeneration; + + public DataSource() { + // empty constructor for use with Maven mojo + } + + public DataSource(String inputOntologyFilename, String namespace, String ontologyClass, String outputDir, String javaClass, + boolean forceGeneration) + { + this.ontology = new File(inputOntologyFilename); + this.namespace = namespace; + this.ontologyClass = ontologyClass; + this.outputDir = new File(outputDir); + this.javaClass = javaClass; + this.forceGeneration = forceGeneration; + } + + public String getNamespace() { + return namespace; + } + + public String getOntologyClass() { + return ontologyClass; + } + + public String getDataSourceClass() { + return getNamespace() + getClassName(); + } + + public String getPackageName() { + String result = javaClass; + + int lastIndexOfDot = result.lastIndexOf('.'); + result = result.substring(0, lastIndexOfDot); + + return result; + } + + public String getClassName() { + String result = javaClass; + + int lastIndexOfDot = result.lastIndexOf('.'); + result = result.substring(lastIndexOfDot + 1); + + return result; + } + + public File getInputOntologyFile() { + return ontology; + } + + public File getOutputDir() { + return outputDir; + } + + public File getOutputJavaFile() { + if (outputJavaFile == null) { + outputJavaFile = new File(getOutputDir(), javaClass.replace('.', File.separatorChar) + ".java"); + } + return outputJavaFile; + } + + public boolean isForceGeneration() { + return forceGeneration; + } +} Modified: aperture/trunk/core/datasource/maven-plugin/src/main/java/org/semanticdesktop/aperture/datasource/DataSourceClassGenerator.java =================================================================== --- aperture/trunk/core/datasource/maven-plugin/src/main/java/org/semanticdesktop/aperture/datasource/DataSourceClassGenerator.java 2009-02-10 09:47:24 UTC (rev 1613) +++ aperture/trunk/core/datasource/maven-plugin/src/main/java/org/semanticdesktop/aperture/datasource/DataSourceClassGenerator.java 2009-02-10 13:49:15 UTC (rev 1614) @@ -46,756 +46,848 @@ /** A simple generator for the DataSource convenience classes */ public class DataSourceClassGenerator { - private static Logger log = LoggerFactory.getLogger(DataSourceClassGenerator.class); + private static Logger log = LoggerFactory.getLogger(DataSourceClassGenerator.class); - /** Array of java reserved words */ - public static final String[] JAVA_RESERVED_WORDS = { "abstract", "continue", "for", "new", "switch", - "assert", "default", "goto", "package", "synchronized", "boolean", "do", "if", "private", "this", - "break", "double", "implements", "protected", "throw", "byte", "else", "import", "public", - "throws", "case", "enum", "instanceof", "return", "transient", "catch", "extends", "int", - "short", "try", "char", "final", "interface", "static", "void", "class", "finally", "long", - "strictfp", "volatile", "const", "float", "native", "super", "while" }; + /** Array of java reserved words */ + public static final String[] JAVA_RESERVED_WORDS = { + "abstract", + "continue", + "for", + "new", + "switch", + "assert", + "default", + "goto", + "package", + "synchronized", + "boolean", + "do", + "if", + "private", + "this", + "break", + "double", + "implements", + "protected", + "throw", + "byte", + "else", + "import", + "public", + "throws", + "case", + "enum", + "instanceof", + "return", + "transient", + "catch", + "extends", + "int", + "short", + "try", + "char", + "final", + "interface", + "static", + "void", + "class", + "finally", + "long", + "strictfp", + "volatile", + "const", + "float", + "native", + "super", + "while" }; - /** Set of java reserved words */ - public static final Set<String> JAVA_RESERVED_WORDS_SET = prepareJavaKeywordSet(); + /** Set of java reserved words */ + public static final Set<String> JAVA_RESERVED_WORDS_SET = prepareJavaKeywordSet(); - String inputRdfFilePath = null; + private DataSource dataSource; - String outputDirectoryPath = null; + private boolean domainBoundableDataSource = false; - String outputFileName = null; + private Model myModel = null; - String classUri = null; + private Syntax inputFileSyntax; - String packageName = null; + // output stream + private PrintStream outputStream; - String vocabularyClassName = null; + // avoid duplicates + private HashMap<String, String> uriToLocalName = new HashMap<String, String>(); - Model myModel = null; + /** constructor */ + public DataSourceClassGenerator() { + super(); + } - // output stream - PrintStream outputStream; + private static Set<String> prepareJavaKeywordSet() { + Set<String> result = new HashSet<String>(100); + for (String keyword : JAVA_RESERVED_WORDS) { + result.add(keyword); + } + return Collections.unmodifiableSet(result); + } - // transform variables - private File inputRdfFile; + /** + * Does the job. + * + * @param args + * command line arguments + * @throws Exception + * if something goes wrong + */ + public void go(DataSource dataSource) + throws Exception + { + this.dataSource = dataSource; - private File outputDirFile; + if (ontologyUpToDate()) { + return; + } + dataSource.getOutputJavaFile().getParentFile().mkdirs(); - private File outputFile; + try { + loadOnt(); + writeDataSourceClass(); + } + finally { + if (myModel != null) { + myModel.close(); + } + } + } - private Syntax inputFileSyntax; + private boolean ontologyUpToDate() { + if (dataSource.getOutputJavaFile().canRead() && !dataSource.isForceGeneration()) { + long input = dataSource.getInputOntologyFile().lastModified(); + long output = dataSource.getOutputJavaFile().lastModified(); + return output >= input; + } + else { + return false; + } + } - private boolean domainBoundableDataSource = false; + private void loadOnt() + throws Exception + { + // read + myModel = RDF2Go.getModelFactory().createModel(); + myModel.open(); + inputFileSyntax = getSyntax(dataSource.getInputOntologyFile()); + // System.out + // .println("reading from " + inputRdfFile.getAbsolutePath() + " in format + // " + inputFileSyntax); + Reader reader = new BufferedReader(new FileReader(dataSource.getInputOntologyFile())); + myModel.readFrom(reader, inputFileSyntax); + DATASOURCE.getDATASOURCEOntology(myModel); + SOURCEFORMAT.getSOURCEFORMATOntology(myModel); + reader.close(); + } - // avoid duplicates - HashMap<String, String> uriToLocalName = new HashMap<String, String>(); + private Syntax getSyntax(File file) { + String fileName = file.getName(); + int lastDot = fileName.lastIndexOf('.'); + if (lastDot == -1) { + return Syntax.RdfXml; + } + else { + String extension = fileName.substring(lastDot + 1); + if ("rdf".equals(extension) || "rdfs".equals(extension)) { + return Syntax.RdfXml; + } + else if ("ttl".equals(extension) || "nt".equals(extension) || "n3".equals(extension)) { + return Syntax.Turtle; + } + else if ("trix".equals(extension)) { + return Syntax.Trix; + } + else if ("trig".equals(extension)) { + return Syntax.Trig; + } + } + return null; + } - // flag that forces the source generation even if the generated class file - // is newer than the ontology file - private boolean forceGeneration; + private void writeDataSourceClass() + throws Exception + { - /** constructor */ - public DataSourceClassGenerator() { - super(); - forceGeneration = false; - } + // prepare output + outputStream = new PrintStream(dataSource.getOutputJavaFile()); + try { - private static Set<String> prepareJavaKeywordSet() { - Set<String> result = new HashSet<String>(100); - for (String keyword : JAVA_RESERVED_WORDS) { - result.add(keyword); - } - return Collections.unmodifiableSet(result); - } + // first prepare the options list + URI fresnelLensURI = getFresnelLensURI(myModel, dataSource.getDataSourceClass()); + List<URI> optionsList = getConfigurationOptionsList(fresnelLensURI); - /** - * Does the job. - * - * @param args command line arguments - * @throws Exception if something goes wrong - */ - public void go(String[] args) throws Exception { - getOpt(args); + // preamble + outputStream.println("/*"); + outputStream.println(" * Copyright (c) 2006 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH."); + outputStream.println(" * All rights reserved."); + outputStream.println(" * "); + outputStream.println(" * Licensed under the Aperture BSD-style license."); + outputStream.println(" */"); + outputStream.println("package " + dataSource.getPackageName() + ";"); + outputStream.println("import " + URI.class.getName() + ";"); + outputStream.println("import " + Node.class.getName() + ";"); + outputStream.println("import " + ModelUtil.class.getName() + ";"); + outputStream.println("import org.semanticdesktop.aperture.datasource.DataSource;"); + outputStream.println("import org.semanticdesktop.aperture.datasource.base.DataSourceBase;"); + // outputStream.println("import + // org.semanticdesktop.aperture.datasource.config.DomainBoundaries;"); + outputStream.println("import org.semanticdesktop.aperture.datasource.config.ConfigurationUtil;"); + if (domainBoundableDataSource) { + outputStream.println("import org.semanticdesktop.aperture.datasource.config.DomainBoundableDataSource;"); + } + outputStream.println("import org.semanticdesktop.aperture.rdf.util.ModelUtil;"); + outputStream.println("import java.util.Collection;"); + outputStream.println("import java.util.List;"); + outputStream.println("import java.util.LinkedList;"); + outputStream.println(); + outputStream.println("/**"); + outputStream.println(" * Data source class file. Created by " + + DataSourceClassGenerator.class.getName() + " on " + new Date()); + outputStream.println(" * input file: " + dataSource.getInputOntologyFile()); + outputStream.println(" * class uri: " + dataSource.getDataSourceClass()); + outputStream.println(" */"); + outputStream.println("public class " + dataSource.getClassName() + " extends " + + ((domainBoundableDataSource) ? "DomainBoundableDataSource" : "DataSourceBase") + " {"); + outputStream.println(); + generateGetTypeMethod(); - if (ontologyUpToDate()) { - return; - } - loadOnt(); - writeDataSourceClass(); - } + for (URI uri : optionsList) { + generateElement(uri); + } - private boolean ontologyUpToDate() { - if (outputFile.canRead() && !forceGeneration) { - long input = inputRdfFile.lastModified(); - long output = outputFile.lastModified(); - return output >= input; - } - else { - return false; - } - } + // end + outputStream.println("}"); + } + finally { + outputStream.close(); + } + // System.out.println("successfully wrote file to " + outputFile); + } - private void loadOnt() throws Exception { - // read - myModel = RDF2Go.getModelFactory().createModel(); - myModel.open(); - inputFileSyntax = getSyntax(inputRdfFilePath); - // System.out - // .println("reading from " + inputRdfFile.getAbsolutePath() + " in format " + inputFileSyntax); - Reader reader = new BufferedReader(new FileReader(inputRdfFile)); - myModel.readFrom(reader, inputFileSyntax); - DATASOURCE.getDATASOURCEOntology(myModel); - SOURCEFORMAT.getSOURCEFORMATOntology(myModel); - reader.close(); - } + private void generateGetTypeMethod() { + outputStream.println(" /**"); + outputStream.println(" * @see DataSource#getType()"); + outputStream.println(" */"); + outputStream.println(" public URI getType() {"); + outputStream.println(" return " + dataSource.getOntologyClass() + "." + + dataSource.getClassName() + ";"); + outputStream.println(" }"); + } - private Syntax getSyntax(String fileName) { - int lastDot = fileName.lastIndexOf('.'); - if (lastDot == -1) { - return Syntax.RdfXml; - } - else { - String extension = fileName.substring(lastDot + 1); - if ("rdf".equals(extension) || "rdfs".equals(extension)) { - return Syntax.RdfXml; - } - else if ("ttl".equals(extension) || "nt".equals(extension) || "n3".equals(extension)) { - return Syntax.Turtle; - } - else if ("trix".equals(extension)) { - return Syntax.Trix; - } - else if ("trig".equals(extension)) { - return Syntax.Trig; - } - } - return null; - } + private void generateElement(URI uri) + throws Exception + { - private void writeDataSourceClass() throws Exception { + Node commentNode = ModelUtil.getPropertyValue(myModel, uri, RDFS.comment); + String comment = ((commentNode != null) ? commentNode.toString() : ""); + String localName = asLegalJavaID(getLocalName(uri.toString()), false); + String capitalizedLocalName = asLegalJavaID(getLocalName(uri.toString()), true); + Node rangeNode = ModelUtil.getPropertyValue(myModel, uri, RDFS.range); + URI range = ((rangeNode != null) ? rangeNode.asURI() : null); + String javaRangeType = getJavaRangeType(range); + String currentVocabularyClassName = getVocabularyClassName(uri); - // prepare output - outputStream = new PrintStream(outputFile); - try { - - // first prepare the options list - URI fresnelLensURI = getFresnelLensURI(myModel, classUri); - List<URI> optionsList = getConfigurationOptionsList(fresnelLensURI); - - // preamble - outputStream.println("/*"); - outputStream.println(" * Copyright (c) 2006 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH."); - outputStream.println(" * All rights reserved."); - outputStream.println(" * "); - outputStream.println(" * Licensed under the Aperture BSD-style license."); - outputStream.println(" */"); - outputStream.println("package " + packageName + ";"); - outputStream.println("import " + URI.class.getName() + ";"); - outputStream.println("import " + Node.class.getName() + ";"); - outputStream.println("import " + ModelUtil.class.getName() + ";"); - outputStream.println("import org.semanticdesktop.aperture.datasource.DataSource;"); - outputStream.println("import org.semanticdesktop.aperture.datasource.base.DataSourceBase;"); - //outputStream.println("import org.semanticdesktop.aperture.datasource.config.DomainBoundaries;"); - outputStream.println("import org.semanticdesktop.aperture.datasource.config.ConfigurationUtil;"); - if (domainBoundableDataSource) { - outputStream.println("import org.semanticdesktop.aperture.datasource.config.DomainBoundableDataSource;"); - } - outputStream.println("import org.semanticdesktop.aperture.util.ModelUtil;"); - outputStream.println("import java.util.Collection;"); - outputStream.println("import java.util.List;"); - outputStream.println("import java.util.LinkedList;"); - outputStream.println(); - outputStream.println("/**"); - outputStream.println(" * Data source class file. Created by " + DataSourceClassGenerator.class.getName() + " on " + new Date()); - outputStream.println(" * input file: " + inputRdfFilePath); - outputStream.println(" * class uri: " + classUri); - outputStream.println(" */"); - outputStream.println("public class " + outputFileName + " extends " + - ((domainBoundableDataSource) ? "DomainBoundableDataSource" : "DataSourceBase") + - " {"); - outputStream.println(); - generateGetTypeMethod(); + URI widgetType = getWidgetType(uri); - for (URI uri : optionsList) { - generateElement(uri); - } + if (javaRangeType.equals("DomainBoundaries")) { + // we may remove this, because of the common abstract class + // DomainBoundableDataSource + // introduced by Herko ter Horst on 10.12.2007 + // we cover this case by changing the name of the superclass + // addDomainBoundaries(); + return; + } - // end - outputStream.println("}"); - } - finally { - outputStream.close(); - } - // System.out.println("successfully wrote file to " + outputFile); - } + if (widgetType.equals(SOURCEFORMAT.MultipleTextFieldWidget)) { + generateMultiValuedProperty(localName, capitalizedLocalName, comment, javaRangeType, + currentVocabularyClassName); + } + else if (widgetType.equals(SOURCEFORMAT.ComboBoxWidget)) { + generateEnumProperty(localName, capitalizedLocalName, comment, currentVocabularyClassName, uri); + } + else { + generateSingleValuedProperty(localName, capitalizedLocalName, comment, javaRangeType, + currentVocabularyClassName); + } - private void generateGetTypeMethod() { - outputStream.println(" /**"); - outputStream.println(" * @see DataSource#getType()"); - outputStream.println(" */"); - outputStream.println(" public URI getType() {"); - outputStream.println(" return " + vocabularyClassName + "." + outputFileName + ";"); - outputStream.println(" }"); - } + uriToLocalName.put(uri.toString(), localName); - private void generateElement(URI uri) throws Exception { + } - Node commentNode = ModelUtil.getPropertyValue(myModel, uri, RDFS.comment); - String comment = ((commentNode != null) ? commentNode.toString() : ""); - String localName = asLegalJavaID(getLocalName(uri.toString()), false); - String capitalizedLocalName = asLegalJavaID(getLocalName(uri.toString()), true); - Node rangeNode = ModelUtil.getPropertyValue(myModel, uri, RDFS.range); - URI range = ((rangeNode != null) ? rangeNode.asURI() : null); - String javaRangeType = getJavaRangeType(range); - String currentVocabularyClassName = getVocabularyClassName(uri); + private void generateSingleValuedProperty(String localName, String capitalizedLocalName, String comment, + String javaRangeType, String currentVocabularyClassName) + { + outputStream.println(); + outputStream.println(" /**"); + outputStream.println(" * Returns the " + comment); + outputStream.println(" * "); + outputStream.println(" * @return the " + comment + " or null if no value has been set"); + outputStream.println(" * @throws NullPointerException if no configuration has been set, use"); + outputStream.println(" * {@link #setConfiguration(RDFContainer)} before calling this method"); + outputStream.println(" */"); + outputStream.println(" public " + javaRangeType + " get" + capitalizedLocalName + "() {"); + outputStream.println(" return getConfiguration().get" + javaRangeType + "(" + + currentVocabularyClassName + "." + localName + ");"); + outputStream.println(" }"); - URI widgetType = getWidgetType(uri); + outputStream.println(); + outputStream.println(" /**"); + outputStream.println(" * Sets the " + comment); + outputStream.println(" * "); + outputStream.println(" * @param " + localName + " " + comment + + ", can be null in which case any previous setting will be removed"); + outputStream.println(" * @throws NullPointerException if no configuration has been set, use"); + outputStream.println(" * {@link #setConfiguration(RDFContainer)} before calling this method"); + outputStream.println(" */"); + outputStream.println(" public void set" + capitalizedLocalName + "(" + javaRangeType + " " + + localName + ") {"); + outputStream.println(" if ( " + localName + " == null) {"); + outputStream.println(" getConfiguration().remove(" + currentVocabularyClassName + "." + + localName + ");"); + outputStream.println(" } else {"); + outputStream.println(" getConfiguration().put(" + currentVocabularyClassName + "." + + localName + "," + localName + ");"); + outputStream.println(" }"); + outputStream.println(" }"); - - if (javaRangeType.equals("DomainBoundaries")) { - // we may remove this, because of the common abstract class DomainBoundableDataSource - // introduced by Herko ter Horst on 10.12.2007 - // we cover this case by changing the name of the superclass - //addDomainBoundaries(); - return; - } + } - if (widgetType.equals(SOURCEFORMAT.MultipleTextFieldWidget)) { - generateMultiValuedProperty(localName, capitalizedLocalName, comment, javaRangeType, - currentVocabularyClassName); - } - else if (widgetType.equals(SOURCEFORMAT.ComboBoxWidget)) { - generateEnumProperty(localName, capitalizedLocalName, comment, currentVocabularyClassName, uri); - } - else { - generateSingleValuedProperty(localName, capitalizedLocalName, comment, javaRangeType, - currentVocabularyClassName); - } + private void generateMultiValuedProperty(String localName, String capitalizedLocalName, String comment, + String javaRangeType, String currentVocabularyClassName) + { + outputStream.println(); + outputStream.println(" /**"); + outputStream.println(" * Returns a collection of all values of " + comment); + outputStream.println(" * "); + outputStream.println(" * @return a collection of all values of " + comment + + " the collection may be empty if no values have been set"); + outputStream.println(" * @throws NullPointerException if no configuration has been set, use"); + outputStream.println(" * {@link #setConfiguration(RDFContainer)} before calling this method"); + outputStream.println(" */"); + outputStream.println(" public Collection<" + javaRangeType + "> getAll" + capitalizedLocalName + + "s() {"); + outputStream.println(" Collection<Node> collection = (Collection<Node>)getConfiguration().getAll(" + + currentVocabularyClassName + "." + localName + ");"); + outputStream.println(" List<" + javaRangeType + "> result = new LinkedList<" + javaRangeType + + ">();"); + outputStream.println(" for (Node node : collection) {"); + outputStream.println(" " + javaRangeType + " object = (" + javaRangeType + + ")ModelUtil.convertNode(node," + javaRangeType + ".class);"); + outputStream.println(" if (object != null) {"); + outputStream.println(" result.add(object);"); + outputStream.println(" }"); + outputStream.println(" }"); + outputStream.println(" return result;"); + outputStream.println(" }"); - uriToLocalName.put(uri.toString(), localName); + outputStream.println(); + outputStream.println(" /**"); + outputStream.println(" * Sets the " + comment); + outputStream.println(" * "); + outputStream.println(" * @param " + localName + " " + comment + + ", can be null in which case any previous setting will be removed"); + outputStream.println(" * @throws NullPointerException if no configuration has been set, use"); + outputStream.println(" * {@link #setConfiguration(RDFContainer)} before calling this method"); + outputStream.println(" * @throws MultipleValuesException if this property had more that one value before this method was called"); + outputStream.println(" */"); + outputStream.println(" public void set" + capitalizedLocalName + "(" + javaRangeType + " " + + localName + ") {"); + outputStream.println(" if ( " + localName + " == null) {"); + outputStream.println(" getConfiguration().remove(" + currentVocabularyClassName + "." + + localName + ");"); + outputStream.println(" } else {"); + outputStream.println(" getConfiguration().put(" + currentVocabularyClassName + "." + + localName + "," + localName + ");"); + outputStream.println(" }"); + outputStream.println(" }"); - } + outputStream.println(); + outputStream.println(" /**"); + outputStream.println(" * Sets all " + comment + "s at once"); + outputStream.println(" * "); + outputStream.println(" * @param " + localName + " " + comment + + ", can be null in which case any previous setting will be removed"); + outputStream.println(" * @throws NullPointerException if no configuration has been set, use"); + outputStream.println(" * {@link #setConfiguration(RDFContainer)} before calling this method"); + outputStream.println(" */"); + outputStream.println(" public void setAll" + capitalizedLocalName + "s(List<" + javaRangeType + + "> " + localName + ") {"); + outputStream.println(" if ( " + localName + " == null) {"); + outputStream.println(" ModelUtil.removeAllPropertyValues(getConfiguration().getModel(),getConfiguration().getDescribedUri()," + + currentVocabularyClassName + "." + localName + ");"); + outputStream.println(" } else {"); + outputStream.println(" ModelUtil.removeAllPropertyValues(getConfiguration().getModel(),getConfiguration().getDescribedUri()," + + currentVocabularyClassName + "." + localName + ");"); + outputStream.println(" for(" + javaRangeType + " value : " + localName + ") {"); + outputStream.println(" getConfiguration().add(" + currentVocabularyClassName + "." + + localName + ",value);"); + outputStream.println(" }"); + outputStream.println(" }"); + outputStream.println(" }"); + } - private void generateSingleValuedProperty(String localName, String capitalizedLocalName, String comment, - String javaRangeType, String currentVocabularyClassName) { - outputStream.println(); - outputStream.println(" /**"); - outputStream.println(" * Returns the " + comment); - outputStream.println(" * "); - outputStream.println(" * @return the " + comment + " or null if no value has been set"); - outputStream.println(" * @throws NullPointerException if no configuration has been set, use"); - outputStream.println(" * {@link #setConfiguration(RDFContainer)} before calling this method"); - outputStream.println(" */"); - outputStream.println(" public " + javaRangeType + " get" + capitalizedLocalName + "() {"); - outputStream.println(" return getConfiguration().get" + javaRangeType + "(" + currentVocabularyClassName + "." + localName + ");"); - outputStream.println(" }"); + private void generateEnumProperty(String propertyLocalName, String capitalizedLocalName, String comment, + String currentVocabularyClassName, URI propertyUri) + { - outputStream.println(); - outputStream.println(" /**"); - outputStream.println(" * Sets the " + comment); - outputStream.println(" * "); - outputStream.println(" * @param " + localName + " " + comment + ", can be null in which case any previous setting will be removed"); - outputStream.println(" * @throws NullPointerException if no configuration has been set, use"); - outputStream.println(" * {@link #setConfiguration(RDFContainer)} before calling this method"); - outputStream.println(" */"); - outputStream.println(" public void set" + capitalizedLocalName + "(" + javaRangeType + " " + localName + ") {"); - outputStream.println(" if ( " + localName + " == null) {"); - outputStream.println(" getConfiguration().remove(" + currentVocabularyClassName + "." + localName + ");"); - outputStream.println(" } else {"); - outputStream.println(" getConfiguration().put(" + currentVocabularyClassName + "." + localName + "," + localName + ");"); - outputStream.println(" }"); - outputStream.println(" }"); + Node rangeNode = ModelUtil.getPropertyValue(myModel, propertyUri, RDFS.range); + URI range = ((rangeNode != null) ? rangeNode.asURI() : null); - } + String rangeLocalName = getLocalName(range.toString()); - private void generateMultiValuedProperty(String localName, String capitalizedLocalName, String comment, - String javaRangeType, String currentVocabularyClassName) { - outputStream.println(); - outputStream.println(" /**"); - outputStream.println(" * Returns a collection of all values of " + comment); - outputStream.println(" * "); - outputStream.println(" * @return a collection of all values of " + comment + " the collection may be empty if no values have been set"); - outputStream.println(" * @throws NullPointerException if no configuration has been set, use"); - outputStream.println(" * {@link #setConfiguration(RDFContainer)} before calling this method"); - outputStream.println(" */"); - outputStream.println(" public Collection<" + javaRangeType + "> getAll" + capitalizedLocalName + "s() {"); - outputStream.println(" Collection<Node> collection = (Collection<Node>)getConfiguration().getAll(" + currentVocabularyClassName + "." + localName + ");"); - outputStream.println(... [truncated message content] |
From: <her...@us...> - 2009-02-10 15:30:26
|
Revision: 1623 http://aperture.svn.sourceforge.net/aperture/?rev=1623&view=rev Author: herko_ter_horst Date: 2009-02-10 15:30:24 +0000 (Tue, 10 Feb 2009) Log Message: ----------- Default datasource skeleton. Added Paths: ----------- aperture/trunk/default/ aperture/trunk/default/datasource/ aperture/trunk/default/datasource/pom.xml aperture/trunk/default/datasource/src/ aperture/trunk/default/datasource/src/main/ aperture/trunk/default/datasource/src/main/java/ aperture/trunk/default/datasource/src/main/java/org/ aperture/trunk/default/datasource/src/main/java/org/semanticdesktop/ aperture/trunk/default/datasource/src/main/java/org/semanticdesktop/aperture/ aperture/trunk/default/datasource/src/main/java/org/semanticdesktop/aperture/datasource/ aperture/trunk/default/datasource/src/main/java/org/semanticdesktop/aperture/datasource/bundle/ aperture/trunk/default/datasource/src/test/ aperture/trunk/default/datasource/src/test/java/ aperture/trunk/default/datasource/src/test/java/org/ aperture/trunk/default/datasource/src/test/java/org/semanticdesktop/ aperture/trunk/default/datasource/src/test/java/org/semanticdesktop/aperture/ aperture/trunk/default/pom.xml Added: aperture/trunk/default/datasource/pom.xml =================================================================== --- aperture/trunk/default/datasource/pom.xml (rev 0) +++ aperture/trunk/default/datasource/pom.xml 2009-02-10 15:30:24 UTC (rev 1623) @@ -0,0 +1,88 @@ +<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> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-default</artifactId> + <version>1.3.0-SNAPSHOT</version> + </parent> + + <artifactId>aperture-default-datasource</artifactId> + + <name>Aperture Default: DataSource</name> + <description>DataSource API and default implementation</description> + + <dependencies> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-datasource-core</artifactId> + <version>${aperture.version}</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-datasource-filesystem</artifactId> + <version>${aperture.version}</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-datasource-ical</artifactId> + <version>${aperture.version}</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-datasource-imap</artifactId> + <version>${aperture.version}</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-datasource-mbox</artifactId> + <version>${aperture.version}</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-datasource-web</artifactId> + <version>${aperture.version}</version> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>org.osgi</groupId> + <artifactId>osgi_R4_core</artifactId> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Export-Package>org.semanticdesktop.aperture.datasource.*</Export-Package> + <Private-Package>org.semanticdesktop.aperture.datasource.*.bundle,org.semanticdesktop.aperture.datasource.impl</Private-Package> + <Bundle-Activator>org.semanticdesktop.aperture.datasource.bundle.DefaultDataSourceServiceActivator</Bundle-Activator> + </instructions> + </configuration> + </plugin> + </plugins> + </build> + +</project> Added: aperture/trunk/default/pom.xml =================================================================== --- aperture/trunk/default/pom.xml (rev 0) +++ aperture/trunk/default/pom.xml 2009-02-10 15:30:24 UTC (rev 1623) @@ -0,0 +1,28 @@ +<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> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture</artifactId> + <version>1.3.0-SNAPSHOT</version> + </parent> + + <artifactId>aperture-default</artifactId> + <packaging>pom</packaging> + + <name>Aperture Default</name> + <description>Default functionality</description> + + <modules> + <module>datasource</module> +<!-- + <module>accessor</module> + <module>crawler</module> + <module>extractor</module> +--> + </modules> +</project> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <her...@us...> - 2009-02-10 15:57:45
|
Revision: 1624 http://aperture.svn.sourceforge.net/aperture/?rev=1624&view=rev Author: herko_ter_horst Date: 2009-02-10 15:57:41 +0000 (Tue, 10 Feb 2009) Log Message: ----------- Added default datasource bundle. Modified Paths: -------------- aperture/trunk/default/datasource/pom.xml aperture/trunk/pom.xml Added Paths: ----------- aperture/trunk/default/datasource/src/main/java/org/semanticdesktop/aperture/datasource/bundle/DefaultDataSourceServiceActivator.java aperture/trunk/default/datasource/src/main/java/org/semanticdesktop/aperture/datasource/impl/ aperture/trunk/default/datasource/src/main/java/org/semanticdesktop/aperture/datasource/impl/DefaultDataSourceRegistry.java aperture/trunk/default/datasource/src/main/resources/ aperture/trunk/default/datasource/src/main/resources/org/ aperture/trunk/default/datasource/src/main/resources/org/semanticdesktop/ aperture/trunk/default/datasource/src/main/resources/org/semanticdesktop/aperture/ aperture/trunk/default/datasource/src/main/resources/org/semanticdesktop/aperture/datasource/ aperture/trunk/default/datasource/src/main/resources/org/semanticdesktop/aperture/datasource/impl/ aperture/trunk/default/datasource/src/main/resources/org/semanticdesktop/aperture/datasource/impl/defaults.xml Removed Paths: ------------- aperture/trunk/core/datasource/core/src/main/java/org/semanticdesktop/aperture/datasource/impl/DefaultDataSourceRegistry.java aperture/trunk/core/datasource/core/src/main/java/org/semanticdesktop/aperture/datasource/impl/defaults.xml Property Changed: ---------------- aperture/trunk/default/datasource/ Deleted: aperture/trunk/core/datasource/core/src/main/java/org/semanticdesktop/aperture/datasource/impl/DefaultDataSourceRegistry.java =================================================================== --- aperture/trunk/core/datasource/core/src/main/java/org/semanticdesktop/aperture/datasource/impl/DefaultDataSourceRegistry.java 2009-02-10 15:30:24 UTC (rev 1623) +++ aperture/trunk/core/datasource/core/src/main/java/org/semanticdesktop/aperture/datasource/impl/DefaultDataSourceRegistry.java 2009-02-10 15:57:41 UTC (rev 1624) @@ -1,125 +0,0 @@ -/* - * Copyright (c) 2005 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. - * All rights reserved. - * - * Licensed under the Aperture BSD-style license. - */ -package org.semanticdesktop.aperture.datasource.impl; - -import java.io.BufferedInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.Map; - -import javax.xml.parsers.ParserConfigurationException; - -import org.semanticdesktop.aperture.datasource.DataSourceFactory; -import org.semanticdesktop.aperture.util.ResourceUtil; -import org.semanticdesktop.aperture.util.SimpleSAXAdapter; -import org.semanticdesktop.aperture.util.SimpleSAXParser; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.xml.sax.SAXException; - -/** - * DefaultDataSourceRegistry provides the complete set of DataSourceFactories available in Aperture. - * - * <p> - * The main purpose of this class is to be able to conveniently access the set of DataSourceFactories in - * non-OSGi applications, which take care of this initialization in a different way. A single line of code - * gives you the entire set without requiring further setup. - * - * <p> - * The set of factory class names are loaded from an XML file which can optionally be specified to the - * constructor. This class requires all the listed classes to have a no-argument constructor. - */ -public class DefaultDataSourceRegistry extends DataSourceRegistryImpl { - - private static final String DEFAULT_FILE = "org/semanticdesktop/aperture/datasource/impl/defaults.xml"; - - private static final String SOURCE_FACTORY_TAG = "dataSourceFactory"; - - private static final String NAME_TAG = "name"; - - public DefaultDataSourceRegistry() { - try { - InputStream stream = ResourceUtil.getInputStream(DEFAULT_FILE, DefaultDataSourceRegistry.class); - BufferedInputStream buffer = new BufferedInputStream(stream); - parse(buffer); - buffer.close(); - } - catch (IOException e) { - throw new RuntimeException("unable to parse " + DEFAULT_FILE, e); - } - } - - public DefaultDataSourceRegistry(InputStream stream) throws IOException { - parse(stream); - } - - private void parse(InputStream stream) throws IOException { - try { - // Parse the document - SimpleSAXParser parser = new SimpleSAXParser(); - parser.setListener(new DataSourceParser()); - parser.parse(stream); - } - catch (ParserConfigurationException e) { - IOException ie = new IOException(e.getMessage()); - ie.initCause(e); - throw ie; - } - catch (SAXException e) { - IOException ie = new IOException(e.getMessage()); - ie.initCause(e); - throw ie; - } - } - - private class DataSourceParser extends SimpleSAXAdapter { - - private Logger logger = LoggerFactory.getLogger(getClass()); - - private boolean insideFactoryElement = false; - - public void startTag(String tagName, Map atts, String text) throws SAXException { - if (SOURCE_FACTORY_TAG.equals(tagName)) { - insideFactoryElement = true; - } - else if (NAME_TAG.equals(tagName) && insideFactoryElement && text != null) { - processClassName(text); - } - } - - public void endTag(String tagName) { - if (SOURCE_FACTORY_TAG.equals(tagName)) { - insideFactoryElement = false; - } - } - - private void processClassName(String className) { - className = className.trim(); - if (!className.equals("")) { - try { - Class clazz = Class.forName(className); - Object instance = clazz.newInstance(); - DataSourceFactory factory = (DataSourceFactory) instance; - add(factory); - } - catch (ClassNotFoundException e) { - logger.warn("unable to find class " + className + ", ignoring", e); - } - catch (InstantiationException e) { - logger.warn("unable to instantiate class " + className + ", ignoring", e); - } - catch (IllegalAccessException e) { - logger.warn("unable to access class " + className + ", ignoring", e); - } - catch (ClassCastException e) { - logger.warn("unable to cast instance to " + DataSourceFactory.class.getName() - + ", ignoring", e); - } - } - } - } -} Deleted: aperture/trunk/core/datasource/core/src/main/java/org/semanticdesktop/aperture/datasource/impl/defaults.xml =================================================================== --- aperture/trunk/core/datasource/core/src/main/java/org/semanticdesktop/aperture/datasource/impl/defaults.xml 2009-02-10 15:30:24 UTC (rev 1623) +++ aperture/trunk/core/datasource/core/src/main/java/org/semanticdesktop/aperture/datasource/impl/defaults.xml 2009-02-10 15:57:41 UTC (rev 1624) @@ -1,22 +0,0 @@ -<?xml version='1.0' encoding='UTF-8'?> - -<dataSourceFactories> - <dataSourceFactory> - <name>org.semanticdesktop.aperture.datasource.filesystem.FileSystemDataSourceFactory</name> - </dataSourceFactory> - <dataSourceFactory> - <name>org.semanticdesktop.aperture.datasource.web.WebDataSourceFactory</name> - </dataSourceFactory> - <dataSourceFactory> - <name>org.semanticdesktop.aperture.datasource.imap.ImapDataSourceFactory</name> - </dataSourceFactory> - <dataSourceFactory> - <name>org.semanticdesktop.aperture.outlook.OutlookDataSourceFactory</name> - </dataSourceFactory> - <dataSourceFactory> - <name>org.semanticdesktop.aperture.addressbook.apple.AppleAddressbookDataSourceFactory</name> - </dataSourceFactory> - <dataSourceFactory> - <name>org.semanticdesktop.aperture.addressbook.thunderbird.ThunderbirdAddressbookDataSourceFactory</name> - </dataSourceFactory> -</dataSourceFactories> \ No newline at end of file Property changes on: aperture/trunk/default/datasource ___________________________________________________________________ Added: svn:ignore + .classpath .project .settings target Modified: aperture/trunk/default/datasource/pom.xml =================================================================== --- aperture/trunk/default/datasource/pom.xml 2009-02-10 15:30:24 UTC (rev 1623) +++ aperture/trunk/default/datasource/pom.xml 2009-02-10 15:57:41 UTC (rev 1624) @@ -21,37 +21,31 @@ <groupId>org.semanticdesktop.aperture</groupId> <artifactId>aperture-datasource-core</artifactId> <version>${aperture.version}</version> - <scope>runtime</scope> </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> <artifactId>aperture-datasource-filesystem</artifactId> <version>${aperture.version}</version> - <scope>runtime</scope> </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> <artifactId>aperture-datasource-ical</artifactId> <version>${aperture.version}</version> - <scope>runtime</scope> </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> <artifactId>aperture-datasource-imap</artifactId> <version>${aperture.version}</version> - <scope>runtime</scope> </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> <artifactId>aperture-datasource-mbox</artifactId> <version>${aperture.version}</version> - <scope>runtime</scope> </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> <artifactId>aperture-datasource-web</artifactId> <version>${aperture.version}</version> - <scope>runtime</scope> </dependency> <dependency> @@ -76,8 +70,8 @@ <extensions>true</extensions> <configuration> <instructions> - <Export-Package>org.semanticdesktop.aperture.datasource.*</Export-Package> - <Private-Package>org.semanticdesktop.aperture.datasource.*.bundle,org.semanticdesktop.aperture.datasource.impl</Private-Package> + <Export-Package>!org.semanticdesktop.aperture.datasource.bundle,!org.semanticdesktop.aperture.datasource.*.bundle,!org.semanticdesktop.aperture.datasource.impl,org.semanticdesktop.aperture.datasource.*</Export-Package> + <Private-Package>org.semanticdesktop.aperture.datasource.bundle;-split-package:=first,org.semanticdesktop.aperture.datasource.*.bundle,org.semanticdesktop.aperture.datasource.impl;-split-package:=merge-first</Private-Package> <Bundle-Activator>org.semanticdesktop.aperture.datasource.bundle.DefaultDataSourceServiceActivator</Bundle-Activator> </instructions> </configuration> Added: aperture/trunk/default/datasource/src/main/java/org/semanticdesktop/aperture/datasource/bundle/DefaultDataSourceServiceActivator.java =================================================================== --- aperture/trunk/default/datasource/src/main/java/org/semanticdesktop/aperture/datasource/bundle/DefaultDataSourceServiceActivator.java (rev 0) +++ aperture/trunk/default/datasource/src/main/java/org/semanticdesktop/aperture/datasource/bundle/DefaultDataSourceServiceActivator.java 2009-02-10 15:57:41 UTC (rev 1624) @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2006 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.datasource.bundle; + +import java.util.Hashtable; + +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceEvent; +import org.osgi.framework.ServiceListener; +import org.osgi.framework.ServiceReference; +import org.osgi.framework.ServiceRegistration; +import org.semanticdesktop.aperture.datasource.DataSourceFactory; +import org.semanticdesktop.aperture.datasource.DataSourceRegistry; +import org.semanticdesktop.aperture.datasource.impl.DefaultDataSourceRegistry; + +public class DefaultDataSourceServiceActivator implements BundleActivator, ServiceListener { + + public BundleContext bc = null; + + private ServiceRegistration registration; + + private DataSourceRegistry registry; + + public void start(BundleContext context) throws Exception { + + bc = context; + registry = new DefaultDataSourceRegistry(); + registration = bc.registerService(DataSourceRegistry.class.getName(), registry, + new Hashtable()); + + String filter = "(objectclass=" + DataSourceFactory.class.getName() + ")"; + bc.addServiceListener(this, filter); + + ServiceReference references[] = bc.getServiceReferences(null, filter); + + for (int i = 0; references != null && i < references.length; i++) { + this.serviceChanged(new ServiceEvent(ServiceEvent.REGISTERED, references[i])); + } + + + } + + public void stop(BundleContext context) throws Exception { + registration.unregister(); + bc = null; + } + + public void serviceChanged(ServiceEvent event) { + DataSourceFactory factory; + switch (event.getType()) { + case ServiceEvent.REGISTERED: + factory = (DataSourceFactory) bc.getService(event + .getServiceReference()); + registry.add(factory); + break; + case ServiceEvent.MODIFIED: + factory = (DataSourceFactory) bc.getService(event + .getServiceReference()); + registry.remove(factory); + registry.add(factory); + break; + case ServiceEvent.UNREGISTERING: + factory = (DataSourceFactory) bc.getService(event + .getServiceReference()); + registry.remove(factory); + break; + } + } + + +} Copied: aperture/trunk/default/datasource/src/main/java/org/semanticdesktop/aperture/datasource/impl/DefaultDataSourceRegistry.java (from rev 1621, aperture/trunk/core/datasource/core/src/main/java/org/semanticdesktop/aperture/datasource/impl/DefaultDataSourceRegistry.java) =================================================================== --- aperture/trunk/default/datasource/src/main/java/org/semanticdesktop/aperture/datasource/impl/DefaultDataSourceRegistry.java (rev 0) +++ aperture/trunk/default/datasource/src/main/java/org/semanticdesktop/aperture/datasource/impl/DefaultDataSourceRegistry.java 2009-02-10 15:57:41 UTC (rev 1624) @@ -0,0 +1,125 @@ +/* + * Copyright (c) 2005 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.datasource.impl; + +import java.io.BufferedInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.Map; + +import javax.xml.parsers.ParserConfigurationException; + +import org.semanticdesktop.aperture.datasource.DataSourceFactory; +import org.semanticdesktop.aperture.util.ResourceUtil; +import org.semanticdesktop.aperture.util.SimpleSAXAdapter; +import org.semanticdesktop.aperture.util.SimpleSAXParser; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.xml.sax.SAXException; + +/** + * DefaultDataSourceRegistry provides the complete set of DataSourceFactories available in Aperture. + * + * <p> + * The main purpose of this class is to be able to conveniently access the set of DataSourceFactories in + * non-OSGi applications, which take care of this initialization in a different way. A single line of code + * gives you the entire set without requiring further setup. + * + * <p> + * The set of factory class names are loaded from an XML file which can optionally be specified to the + * constructor. This class requires all the listed classes to have a no-argument constructor. + */ +public class DefaultDataSourceRegistry extends DataSourceRegistryImpl { + + private static final String DEFAULT_FILE = "org/semanticdesktop/aperture/datasource/impl/defaults.xml"; + + private static final String SOURCE_FACTORY_TAG = "dataSourceFactory"; + + private static final String NAME_TAG = "name"; + + public DefaultDataSourceRegistry() { + try { + InputStream stream = ResourceUtil.getInputStream(DEFAULT_FILE, DefaultDataSourceRegistry.class); + BufferedInputStream buffer = new BufferedInputStream(stream); + parse(buffer); + buffer.close(); + } + catch (IOException e) { + throw new RuntimeException("unable to parse " + DEFAULT_FILE, e); + } + } + + public DefaultDataSourceRegistry(InputStream stream) throws IOException { + parse(stream); + } + + private void parse(InputStream stream) throws IOException { + try { + // Parse the document + SimpleSAXParser parser = new SimpleSAXParser(); + parser.setListener(new DataSourceParser()); + parser.parse(stream); + } + catch (ParserConfigurationException e) { + IOException ie = new IOException(e.getMessage()); + ie.initCause(e); + throw ie; + } + catch (SAXException e) { + IOException ie = new IOException(e.getMessage()); + ie.initCause(e); + throw ie; + } + } + + private class DataSourceParser extends SimpleSAXAdapter { + + private Logger logger = LoggerFactory.getLogger(getClass()); + + private boolean insideFactoryElement = false; + + public void startTag(String tagName, Map atts, String text) throws SAXException { + if (SOURCE_FACTORY_TAG.equals(tagName)) { + insideFactoryElement = true; + } + else if (NAME_TAG.equals(tagName) && insideFactoryElement && text != null) { + processClassName(text); + } + } + + public void endTag(String tagName) { + if (SOURCE_FACTORY_TAG.equals(tagName)) { + insideFactoryElement = false; + } + } + + private void processClassName(String className) { + className = className.trim(); + if (!className.equals("")) { + try { + Class clazz = Class.forName(className); + Object instance = clazz.newInstance(); + DataSourceFactory factory = (DataSourceFactory) instance; + add(factory); + } + catch (ClassNotFoundException e) { + logger.warn("unable to find class " + className + ", ignoring", e); + } + catch (InstantiationException e) { + logger.warn("unable to instantiate class " + className + ", ignoring", e); + } + catch (IllegalAccessException e) { + logger.warn("unable to access class " + className + ", ignoring", e); + } + catch (ClassCastException e) { + logger.warn("unable to cast instance to " + DataSourceFactory.class.getName() + + ", ignoring", e); + } + } + } + } +} Copied: aperture/trunk/default/datasource/src/main/resources/org/semanticdesktop/aperture/datasource/impl/defaults.xml (from rev 1621, aperture/trunk/core/datasource/core/src/main/java/org/semanticdesktop/aperture/datasource/impl/defaults.xml) =================================================================== --- aperture/trunk/default/datasource/src/main/resources/org/semanticdesktop/aperture/datasource/impl/defaults.xml (rev 0) +++ aperture/trunk/default/datasource/src/main/resources/org/semanticdesktop/aperture/datasource/impl/defaults.xml 2009-02-10 15:57:41 UTC (rev 1624) @@ -0,0 +1,22 @@ +<?xml version='1.0' encoding='UTF-8'?> + +<dataSourceFactories> + <dataSourceFactory> + <name>org.semanticdesktop.aperture.datasource.filesystem.FileSystemDataSourceFactory</name> + </dataSourceFactory> + <dataSourceFactory> + <name>org.semanticdesktop.aperture.datasource.web.WebDataSourceFactory</name> + </dataSourceFactory> + <dataSourceFactory> + <name>org.semanticdesktop.aperture.datasource.imap.ImapDataSourceFactory</name> + </dataSourceFactory> + <dataSourceFactory> + <name>org.semanticdesktop.aperture.outlook.OutlookDataSourceFactory</name> + </dataSourceFactory> + <dataSourceFactory> + <name>org.semanticdesktop.aperture.addressbook.apple.AppleAddressbookDataSourceFactory</name> + </dataSourceFactory> + <dataSourceFactory> + <name>org.semanticdesktop.aperture.addressbook.thunderbird.ThunderbirdAddressbookDataSourceFactory</name> + </dataSourceFactory> +</dataSourceFactories> \ No newline at end of file Modified: aperture/trunk/pom.xml =================================================================== --- aperture/trunk/pom.xml 2009-02-10 15:30:24 UTC (rev 1623) +++ aperture/trunk/pom.xml 2009-02-10 15:57:41 UTC (rev 1624) @@ -26,6 +26,7 @@ <modules> <module>core</module> + <module>default</module> </modules> <properties> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <my...@us...> - 2009-02-10 18:43:39
|
Revision: 1625 http://aperture.svn.sourceforge.net/aperture/?rev=1625&view=rev Author: mylka Date: 2009-02-10 18:43:35 +0000 (Tue, 10 Feb 2009) Log Message: ----------- deleted .settings from the maven-plugin folder and added the eclipse files (.classpath, .project, .settings and target) to svn:ignore on core, core/datasource, core/datasource/maven-plugin and core/vocabulare Property Changed: ---------------- aperture/trunk/ aperture/trunk/core/ aperture/trunk/core/datasource/ aperture/trunk/core/datasource/maven-plugin/ aperture/trunk/core/vocabulary/ Property changes on: aperture/trunk ___________________________________________________________________ Modified: svn:ignore - target + target .project Property changes on: aperture/trunk/core ___________________________________________________________________ Added: svn:ignore + .classpath .project .settings Property changes on: aperture/trunk/core/datasource ___________________________________________________________________ Added: svn:ignore + .project .classpath .settings target Property changes on: aperture/trunk/core/datasource/maven-plugin ___________________________________________________________________ Modified: svn:ignore - .classpath .project target + .settings target .project .classpath Property changes on: aperture/trunk/core/vocabulary ___________________________________________________________________ Added: svn:ignore + target .settings .classpath .project This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <my...@us...> - 2009-02-10 19:34:22
|
Revision: 1627 http://aperture.svn.sourceforge.net/aperture/?rev=1627&view=rev Author: mylka Date: 2009-02-10 19:34:11 +0000 (Tue, 10 Feb 2009) Log Message: ----------- added the eclipse-generated files to svn:ignore in the core and default modules Property Changed: ---------------- aperture/trunk/core/ aperture/trunk/default/ Property changes on: aperture/trunk/core ___________________________________________________________________ Modified: svn:ignore - .classpath .project .settings + .classpath .project .settings target Property changes on: aperture/trunk/default ___________________________________________________________________ Added: svn:ignore + .classpath .project target .settings This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <my...@us...> - 2009-02-10 20:42:14
|
Revision: 1632 http://aperture.svn.sourceforge.net/aperture/?rev=1632&view=rev Author: mylka Date: 2009-02-10 20:42:11 +0000 (Tue, 10 Feb 2009) Log Message: ----------- added a stub of the testbase module - it will house all the shared test classes, (most notably the ApertureTestBase) Modified Paths: -------------- aperture/trunk/core/pom.xml aperture/trunk/default/pom.xml aperture/trunk/pom.xml Added Paths: ----------- aperture/trunk/testbase/ aperture/trunk/testbase/pom.xml aperture/trunk/testbase/src/ aperture/trunk/testbase/src/main/ aperture/trunk/testbase/src/main/java/ aperture/trunk/testbase/src/main/java/org/ aperture/trunk/testbase/src/main/java/org/semanticdesktop/ aperture/trunk/testbase/src/main/java/org/semanticdesktop/aperture/ aperture/trunk/testbase/src/main/java/org/semanticdesktop/aperture/NativeTest.java Modified: aperture/trunk/core/pom.xml =================================================================== --- aperture/trunk/core/pom.xml 2009-02-10 20:24:22 UTC (rev 1631) +++ aperture/trunk/core/pom.xml 2009-02-10 20:42:11 UTC (rev 1632) @@ -29,4 +29,13 @@ <module>test</module> --> </modules> + + <dependencies> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-testbase</artifactId> + <version>${aperture.version}</version> + <scope>test</scope> + </dependency> + </dependencies> </project> Modified: aperture/trunk/default/pom.xml =================================================================== --- aperture/trunk/default/pom.xml 2009-02-10 20:24:22 UTC (rev 1631) +++ aperture/trunk/default/pom.xml 2009-02-10 20:42:11 UTC (rev 1632) @@ -25,4 +25,13 @@ <module>extractor</module> --> </modules> + + <dependencies> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-testbase</artifactId> + <version>${aperture.version}</version> + <scope>test</scope> + </dependency> + </dependencies> </project> Modified: aperture/trunk/pom.xml =================================================================== --- aperture/trunk/pom.xml 2009-02-10 20:24:22 UTC (rev 1631) +++ aperture/trunk/pom.xml 2009-02-10 20:42:11 UTC (rev 1632) @@ -27,6 +27,7 @@ <modules> <module>core</module> <module>default</module> + <module>testbase</module> </modules> <properties> Added: aperture/trunk/testbase/pom.xml =================================================================== --- aperture/trunk/testbase/pom.xml (rev 0) +++ aperture/trunk/testbase/pom.xml 2009-02-10 20:42:11 UTC (rev 1632) @@ -0,0 +1,26 @@ +<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> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture</artifactId> + <version>1.3.0-SNAPSHOT</version> + </parent> + + <artifactId>aperture-testbase</artifactId> + + <name>Aperture Test Base</name> + <description>Classes reused among tests</description> + + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <scope>compile</scope> + </dependency> + </dependencies> +</project> Property changes on: aperture/trunk/testbase/pom.xml ___________________________________________________________________ Added: svn:mime-type + text/plain Added: aperture/trunk/testbase/src/main/java/org/semanticdesktop/aperture/NativeTest.java =================================================================== --- aperture/trunk/testbase/src/main/java/org/semanticdesktop/aperture/NativeTest.java (rev 0) +++ aperture/trunk/testbase/src/main/java/org/semanticdesktop/aperture/NativeTest.java 2009-02-10 20:42:11 UTC (rev 1632) @@ -0,0 +1,11 @@ +package org.semanticdesktop.aperture; + + + +public class NativeTest { + + public static void main(String[] args) throws Exception { + System.out.println("Hello world"); + } + +} Property changes on: aperture/trunk/testbase/src/main/java/org/semanticdesktop/aperture/NativeTest.java ___________________________________________________________________ Added: svn:mime-type + text/plain This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <my...@us...> - 2009-02-10 21:12:45
|
Revision: 1634 http://aperture.svn.sourceforge.net/aperture/?rev=1634&view=rev Author: mylka Date: 2009-02-10 21:12:42 +0000 (Tue, 10 Feb 2009) Log Message: ----------- removed the dependency on testbase from the core and default poms - it won't work that way.... Modified Paths: -------------- aperture/trunk/core/pom.xml aperture/trunk/default/pom.xml Modified: aperture/trunk/core/pom.xml =================================================================== --- aperture/trunk/core/pom.xml 2009-02-10 20:42:55 UTC (rev 1633) +++ aperture/trunk/core/pom.xml 2009-02-10 21:12:42 UTC (rev 1634) @@ -29,13 +29,4 @@ <module>test</module> --> </modules> - - <dependencies> - <dependency> - <groupId>org.semanticdesktop.aperture</groupId> - <artifactId>aperture-testbase</artifactId> - <version>${aperture.version}</version> - <scope>test</scope> - </dependency> - </dependencies> </project> Modified: aperture/trunk/default/pom.xml =================================================================== --- aperture/trunk/default/pom.xml 2009-02-10 20:42:55 UTC (rev 1633) +++ aperture/trunk/default/pom.xml 2009-02-10 21:12:42 UTC (rev 1634) @@ -25,13 +25,4 @@ <module>extractor</module> --> </modules> - - <dependencies> - <dependency> - <groupId>org.semanticdesktop.aperture</groupId> - <artifactId>aperture-testbase</artifactId> - <version>${aperture.version}</version> - <scope>test</scope> - </dependency> - </dependencies> </project> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <my...@us...> - 2009-02-10 21:26:30
|
Revision: 1635 http://aperture.svn.sourceforge.net/aperture/?rev=1635&view=rev Author: mylka Date: 2009-02-10 21:26:26 +0000 (Tue, 10 Feb 2009) Log Message: ----------- added a stub of the accessor-core module Modified Paths: -------------- aperture/trunk/core/pom.xml aperture/trunk/pom.xml Added Paths: ----------- aperture/trunk/core/accessor/ aperture/trunk/core/accessor/core/ aperture/trunk/core/accessor/core/pom.xml aperture/trunk/core/accessor/core/src/ aperture/trunk/core/accessor/core/src/main/ aperture/trunk/core/accessor/core/src/main/java/ aperture/trunk/core/accessor/core/src/main/java/org/ aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/ aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/ aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/ aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/NativeTest.java aperture/trunk/core/accessor/core/src/test/ aperture/trunk/core/accessor/core/src/test/java/ aperture/trunk/core/accessor/core/src/test/java/org/ aperture/trunk/core/accessor/core/src/test/java/org/semanticdesktop/ aperture/trunk/core/accessor/core/src/test/java/org/semanticdesktop/aperture/ aperture/trunk/core/accessor/core/src/test/java/org/semanticdesktop/aperture/accessor/ aperture/trunk/core/accessor/pom.xml Added: aperture/trunk/core/accessor/core/pom.xml =================================================================== --- aperture/trunk/core/accessor/core/pom.xml (rev 0) +++ aperture/trunk/core/accessor/core/pom.xml 2009-02-10 21:26:26 UTC (rev 1635) @@ -0,0 +1,78 @@ +<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> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-accessor</artifactId> + <version>1.3.0-SNAPSHOT</version> + </parent> + + <artifactId>aperture-accessor-core</artifactId> + + <name>Aperture Core: Accessor - Core</name> + <description>Core Accessor API</description> + + <dependencies> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-rdf</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-util</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-vocabulary-core</artifactId> + </dependency> + + <dependency> + <groupId>org.semweb4j</groupId> + <artifactId>rdf2go.api</artifactId> + </dependency> + + <dependency> + <groupId>org.osgi</groupId> + <artifactId>osgi_R4_core</artifactId> + </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Export-Package>org.semanticdesktop.aperture.accessor</Export-Package> + <Private-Package>org.semanticdesktop.aperture.accessor.impl,org.semanticdesktop.aperture.accessor.bundle</Private-Package> + <Bundle-Activator>org.semanticdesktop.aperture.accessor.bundle.AccessorServiceActivator</Bundle-Activator> + </instructions> + </configuration> + </plugin> + </plugins> + </build> +</project> Property changes on: aperture/trunk/core/accessor/core/pom.xml ___________________________________________________________________ Added: svn:mime-type + text/plain Added: aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/NativeTest.java =================================================================== --- aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/NativeTest.java (rev 0) +++ aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/NativeTest.java 2009-02-10 21:26:26 UTC (rev 1635) @@ -0,0 +1,12 @@ +package org.semanticdesktop.aperture.accessor; + +import java.io.File; +import java.util.HashSet; +import java.util.Set; + +public class NativeTest { + + public static void main(String[] args) throws Exception { + System.out.println("Hello world"); + } +} Property changes on: aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/NativeTest.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: aperture/trunk/core/accessor/pom.xml =================================================================== --- aperture/trunk/core/accessor/pom.xml (rev 0) +++ aperture/trunk/core/accessor/pom.xml 2009-02-10 21:26:26 UTC (rev 1635) @@ -0,0 +1,23 @@ +<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> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-core</artifactId> + <version>1.3.0-SNAPSHOT</version> + </parent> + + <artifactId>aperture-accessor</artifactId> + <packaging>pom</packaging> + + <name>Aperture Core: Accessors</name> + <description>Definition of various accessors</description> + + <modules> + <module>core</module> + </modules> +</project> \ No newline at end of file Property changes on: aperture/trunk/core/accessor/pom.xml ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: aperture/trunk/core/pom.xml =================================================================== --- aperture/trunk/core/pom.xml 2009-02-10 21:12:42 UTC (rev 1634) +++ aperture/trunk/core/pom.xml 2009-02-10 21:26:26 UTC (rev 1635) @@ -23,8 +23,9 @@ <module>rdf</module> <module>util</module> <module>vocabulary</module> + <module>accessor</module> <!-- - <module>accessor</module> + <module>crawler</module> <module>test</module> --> Modified: aperture/trunk/pom.xml =================================================================== --- aperture/trunk/pom.xml 2009-02-10 21:12:42 UTC (rev 1634) +++ aperture/trunk/pom.xml 2009-02-10 21:26:26 UTC (rev 1635) @@ -27,7 +27,7 @@ <modules> <module>core</module> <module>default</module> - <module>testbase</module> +<!-- <module>testbase</module>--> </modules> <properties> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <my...@us...> - 2009-02-10 23:11:44
|
Revision: 1636 http://aperture.svn.sourceforge.net/aperture/?rev=1636&view=rev Author: mylka Date: 2009-02-10 23:11:31 +0000 (Tue, 10 Feb 2009) Log Message: ----------- the accessor core bundle work-in-progress, copied the source files, removed the classes that pertain to the MessageDataObject, it fails due to lack of test files, which will be fixed shortly, Modified Paths: -------------- aperture/trunk/core/accessor/core/pom.xml aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/base/ModelAccessData.java aperture/trunk/core/accessor/core/src/test/java/org/semanticdesktop/aperture/accessor/base/AccessDataTest.java aperture/trunk/core/accessor/core/src/test/java/org/semanticdesktop/aperture/accessor/base/CountingInputStreamTest.java aperture/trunk/core/accessor/core/src/test/java/org/semanticdesktop/aperture/accessor/base/TestFaultyFileAccessdata.java aperture/trunk/core/accessor/core/src/test/java/org/semanticdesktop/aperture/accessor/base/TestFileDataObject.java aperture/trunk/core/accessor/core/src/test/java/org/semanticdesktop/aperture/accessor/base/TestModelAccessData.java aperture/trunk/core/extractor/core/src/main/java/org/semanticdesktop/aperture/extractor/bundle/ExtractorServiceActivator.java aperture/trunk/core/pom.xml aperture/trunk/pom.xml Added Paths: ----------- aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/AccessData.java aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/DataAccessor.java aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/DataAccessorFactory.java aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/DataAccessorRegistry.java aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/DataObject.java aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/FileDataObject.java aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/FolderDataObject.java aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/RDFContainerFactory.java aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/UrlNotFoundException.java aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/base/ aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/bundle/ aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/impl/ aperture/trunk/core/accessor/core/src/test/java/org/semanticdesktop/aperture/accessor/base/ aperture/trunk/core/accessor/core/src/test/java/org/semanticdesktop/aperture/docs/ Removed Paths: ------------- aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/NativeTest.java aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/base/MessageDataObjectBase.java aperture/trunk/core/accessor/core/src/test/java/org/semanticdesktop/aperture/accessor/base/TestMessageDataObject.java Property Changed: ---------------- aperture/trunk/core/accessor/ aperture/trunk/core/accessor/core/ aperture/trunk/core/extractor/ aperture/trunk/core/extractor/core/ Property changes on: aperture/trunk/core/accessor ___________________________________________________________________ Added: svn:ignore + .settings .classpath .project Property changes on: aperture/trunk/core/accessor/core ___________________________________________________________________ Added: svn:ignore + target .settings .classpath .project Modified: aperture/trunk/core/accessor/core/pom.xml =================================================================== --- aperture/trunk/core/accessor/core/pom.xml 2009-02-10 21:26:26 UTC (rev 1635) +++ aperture/trunk/core/accessor/core/pom.xml 2009-02-10 23:11:31 UTC (rev 1636) @@ -23,6 +23,10 @@ </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-datasource-core</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> <artifactId>aperture-util</artifactId> </dependency> <dependency> @@ -49,6 +53,20 @@ <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> + + <!-- the sesame dependencies are needed for the NativeStoreAccessData test --> + <dependency> + <groupId>org.openrdf.sesame</groupId> + <artifactId>sesame-runtime</artifactId> + <version>${openrdf.sesame.version}</version> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.semweb4j</groupId> + <artifactId>rdf2go.impl.sesame22</artifactId> + <scope>test</scope> + </dependency> </dependencies> <build> Copied: aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/AccessData.java (from rev 1610, trunk/aperture/src/java/org/semanticdesktop/aperture/accessor/AccessData.java) =================================================================== --- aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/AccessData.java (rev 0) +++ aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/AccessData.java 2009-02-10 23:11:31 UTC (rev 1636) @@ -0,0 +1,227 @@ +/* + * Copyright (c) 2005 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.accessor; + +import java.io.IOException; +import java.util.Set; + +import org.ontoware.aifbcommons.collection.ClosableIterator; + +/** + * An AccessData instance stores information about accessed resources such as last modification dates, + * locations, etc. This primarily facilitates incremental crawling of DataSources. + * + * AccessData proposes a number of keys to use when storing values, combined with a proposed value encoding. + * This is to ensure that several DataAccessors and possibly other components can share the same AccessData + * instance without resulting in conflicts. + */ +public interface AccessData { + + /** + * Recommended key to store a resource's date. Recommended value encoding: time in milliseconds as a + * string. + */ + public static final String DATE_KEY = "date"; + + /** + * Recommended key to store a resource's byte size. Recommended value encoding: String-encoded long. + */ + public static final String BYTE_SIZE_KEY = "byteSize"; + + /** + * Recommended key to store the redirected URL of an original URL. Recommended value encoding: a legal + * URI. + */ + public static final String REDIRECTS_TO_KEY = "redirectsTo"; + + /** + * Prepares the AccessData for operation. This may for example mean reading files or opening repositories + * that hold the stored data. + */ + public void initialize() throws IOException; + + /** + * Informs the AccessData that processing has completed and, in case of a persistent storage, now is a + * good time to write or flush results. Afterwards the AccessData may be in an unusable state until + * 'initialize' is invoked again. + */ + public void store() throws IOException; + + /** + * Clears this AccessData. This may be invoked on initialized and unititialized AccessData's. Both + * in-memory information as any persistent storage will be cleared. Afterwards the AccessData may be in an + * unusable state until 'initialize' is invoked again. + */ + public void clear() throws IOException; + + /** + * Gets the number of resources for which information has been stored in this AccessData. + * + * @return The number of registered resources. + */ + public int getSize(); + + /** + * Gets the IDs of all resources for which information has been stored in this AccessData. + * + * @return A Set of Strings. + */ + public Set getStoredIDs(); + + /** + * Returns whether this AccessData holds any information about the specified ID. + * + * @return "true" when this AccessData has information about the specified ID, "false" otherwise. + */ + public boolean isKnownId(String id); + + /** + * Stores information (a key-value pair) for the specified id. + * + * @param id The resource's ID. + * @param key The info key. + * @param value The info value. + */ + public void put(String id, String key, String value); + + /** + * Stores a reference relation between two resources, modeling e.g. a link. + * + * @param id The referring resource's ID. + * @param referredID The referred resource's ID. + */ + public void putReferredID(String id, String referredID); + + /** + * Gets specific information about the specified id. + * + * @param id The resource's ID. + * @param key The info key. + * @return The stored info value, or null if no info has been stored for the specified id and key. + */ + public String get(String id, String key); + + /** + * Returns all referred resources of the specified resource. + * + * @return A Set of Strings, or null when there are no referred resources registered for this resource. + */ + public Set getReferredIDs(String id); + + /** + * Removes the value for the specified id and key. + * + * @param id A resource ID. + * @param key A key under which info is stored. + */ + public void remove(String id, String key); + + /** + * Removes a reference relationship between two resources. + * + * @param id The referring resource's ID. + * @param referredID The referred resource's ID. + */ + public void removeReferredID(String id, String referredID); + + /** + * Removes all referred IDs of a resource. + * + * @param id The referring resource's ID. + */ + public void removeReferredIDs(String id); + + /** + * Removes all information about the resource with the specified ID. <br/><br/> + * + * Specifically: + * <ul> + * <li>Remove all keys and values pertaining to that ID</li> + * <li>Remove all links between this id and all id's it refers to</li> + * <li>Remove the aggregation link "upwards" to the parent id</li> + * <li>Remove recursively all aggregated id's</li> + * </ul> + * Note that this method does NOT remove ids this id is referred BY. I.e. it does remove + * "outgoing" referredID links but it does NOT remove "incomming" referred ID's. To be on + * the safe side - the crawler should take care about this by itself. + * + * @param id A resource ID. + */ + public void remove(String id); + + /** + * Puts a link between the given id and the aggregated ID. The aggregated ID will appear in the + * aggregation closure (returned by {@link #getAggregatedIDsClosure(String)}), will be touched by the + * {@link #touchRecursively(String)} method, it will be removed if the id is removed (@link + * {@link #remove(String)}). Note that the aggregation graph must not contain cycles, each id can have at + * most one parent, the implementations are expected to enforce this. If the aggregatedID had a parent + * before, the previous link will be removed. + * + * @param id the parent id + * @param aggregatedID the aggregated id + */ + public void putAggregatedID(String id, String aggregatedID); + + /** + * Removes the link between the given id and the aggregated ID. After a call to this method, the + * aggregated ID will not appear in the aggregation closure ({@link #getAggregatedIDsClosure(String)} and + * will not be touched by the {@link #touchRecursively(String)} method. A call to remove the id will not + * remove the aggregated id. + * + * @param id + * @param aggregatedID + */ + public void removeAggregatedID(String id, String aggregatedID); + + /** + * Returns a set of id's that are aggregated immediately below the given one. + * @param id + * @return a set of id's that are aggregated immediately below the given one. + */ + public Set getAggregatedIDs(String id); + + /** + * Returns an iterator over all ids aggregated within the given one, both directly and indirectly. + * The iterator will traverse the entire aggregation subtree beginning with the given id. + * @param id the id whose aggregation subtree is to be traversed + * @return an iterator over the aggregation subtree + */ + public ClosableIterator getAggregatedIDsClosure(String id); + + /** + * Touches an id. This id will not appear on the list returned by {@link #getUntouchedIDsIterator()} and + * will not be removed by {@link #removeUntouchedIDs()} + * @param id + */ + public void touch(String id); + + /** + * Returns true if this id has been touched since the last call to {@link #initialize()}, false + * otherwise. + * @param id the id to check + * @return true if the id has been touched, false if not + */ + public boolean isTouched(String id); + + /** + * Recursively touches all ids within the aggregation subtree beginning with the given id + * @param id + */ + public void touchRecursively(String id); + + /** + * Returns an iterator over all ID's in this access data instance that have not been touched + * since the last call to {@link #initialize()} + * @return an iterator over all untouched IDs + */ + public ClosableIterator getUntouchedIDsIterator(); + + /** + * Removes all untouched IDS + */ + public void removeUntouchedIDs(); +} Property changes on: aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/AccessData.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:mergeinfo + /branches/smila-prep-branch/aperture/src/java/org/semanticdesktop/aperture/accessor/AccessData.java:1513-1527 Added: svn:eol-style + native Copied: aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/DataAccessor.java (from rev 1610, trunk/aperture/src/java/org/semanticdesktop/aperture/accessor/DataAccessor.java) =================================================================== --- aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/DataAccessor.java (rev 0) +++ aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/DataAccessor.java 2009-02-10 23:11:31 UTC (rev 1636) @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2005 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.accessor; + +import java.io.IOException; +import java.util.Map; + +import org.semanticdesktop.aperture.datasource.DataSource; + +/** + * A DataAccessor provides access to physical resources by creating DataObjects representing the + * resource, based on a url and optionally previous acces data and other parameters. + */ +public interface DataAccessor { + + /** + * Get a DataObject for the specified url. + * + * <p> + * The resulting DataObject's ID may differ from the specified url due to normalization schemes, + * following of redirected URLs, etc. It is required though to provide a URI through which this + * DataAccessor can later on also access the same resource, i.e. the URI should also be a URL. + * + * <p> + * Specific DataAccessor implementations may accept additional parameters through the params Map, + * e.g. to speed up this method with ready-made datastructures it can reuse. See the documentation of + * these implementations for information on the type of parameters they accept. However, + * implementations should not rely on the contents of this Map to work properly. + * + * @param url The url of the requested resource. + * @param source The DataSource to be registered as the source of the DataObject (optional). + * @param params Additional parameters facilitating access to the physical resource (optional). + * @param containerFactory An RDFContainerFactory that delivers the RDFContainer to which the + * metadata of the DataObject should be added. The provided RDFContainer can later be + * retrieved as the DataObject's metadata container. + * @return A DataObject for the specified URI. + * @throws UrlNotFoundException When the specified url did not point to an existing resource. + * @throws IOException When any kind of I/O error occurs. + */ + public DataObject getDataObject(String url, DataSource source, Map params, + RDFContainerFactory containerFactory) throws UrlNotFoundException, IOException; + + /** + * Get a DataObject for the specified url. + * + * <p> + * The resulting DataObject's ID may differ from the specified url due to normalization schemes, + * following of redirected URLs, etc. It is required though to provide a URI through which this + * DataAccessor can later on also access the same resource, i.e. the URI should also be a URL. + * + * <p> + * The optionally passed AccessData can be used to let the DataAccessor store information about the + * created DataSource. The next time it is invoked with the same URL, it can then use this + * information to determine whether the resource has changed or not. The DataAccessor should return + * null when the resource has not changed. This facilitates fast incremental crawling of DataSources. + * When no AccessData is specified, no change detection takes place and an AccessData is always + * returned. + * + * <p> + * Specific DataAccessor implementations may accept additional parameters through the params Map, + * e.g. to speed up this method with ready-made datastructures it can reuse. See the documentation of + * these implementations for information on the type of parameters they accept. However, + * implementations should not rely on the contents of this Map to work properly. + * + * @param url The url of the requested resource. + * @param source The DataSource to be registered as the source of the DataObject (optional). + * @param accessData Any access data obtained during the previous access to this DataObject + * (optional). + * @param params Additional parameters facilitating access to the physical resource (optional). + * @param containerFactory An RDFContainerFactory that delivers the RDFContainer to which the + * metadata of the DataObject should be added. The provided RDFContainer can later be + * retrieved as the DataObject's metadata container. + * @return A DataObject for the specified URI, or null when the binary resource has not been modified + * since the last access. + * @throws UrlNotFoundException When the specified url did not point to an existing resource. + * @throws IOException When any kind of I/O error occurs. + */ + public DataObject getDataObjectIfModified(String url, DataSource source, AccessData accessData, + Map params, RDFContainerFactory containerFactory) throws UrlNotFoundException, IOException; +} Property changes on: aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/DataAccessor.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:mergeinfo + /branches/smila-prep-branch/aperture/src/java/org/semanticdesktop/aperture/accessor/DataAccessor.java:1513-1527 Added: svn:eol-style + native Copied: aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/DataAccessorFactory.java (from rev 1610, trunk/aperture/src/java/org/semanticdesktop/aperture/accessor/DataAccessorFactory.java) =================================================================== --- aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/DataAccessorFactory.java (rev 0) +++ aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/DataAccessorFactory.java 2009-02-10 23:11:31 UTC (rev 1636) @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2005 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.accessor; + +import java.util.Set; + +/** + * A DataAccessorFactory returns DataAccessors for a specific scheme. + */ +public interface DataAccessorFactory { + + /** + * Returns all schemes supported by the DataAccessors returned by this DataAccessorFactory. + * + * @return A Set of Strings. + */ + public Set getSupportedSchemes(); + + /** + * Returns a DataAccessor instance for accessing the represented schemes. + * + * @return A DataAccessor instance. + */ + public DataAccessor get(); +} \ No newline at end of file Property changes on: aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/DataAccessorFactory.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:mergeinfo + /branches/smila-prep-branch/aperture/src/java/org/semanticdesktop/aperture/accessor/DataAccessorFactory.java:1513-1527 Added: svn:eol-style + native Copied: aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/DataAccessorRegistry.java (from rev 1610, trunk/aperture/src/java/org/semanticdesktop/aperture/accessor/DataAccessorRegistry.java) =================================================================== --- aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/DataAccessorRegistry.java (rev 0) +++ aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/DataAccessorRegistry.java 2009-02-10 23:11:31 UTC (rev 1636) @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2005 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.accessor; + +import java.util.Set; + +/** + * A DataAccessorRegistry keeps track of the available DataAccessorFactories. + */ +public interface DataAccessorRegistry { + + /** + * Register a DataAccessorFactory. + */ + public void add(DataAccessorFactory factory); + + /** + * Removes a registered DataAccessorFactory. + */ + public void remove(DataAccessorFactory factory); + + /** + * Get all registered DataAccessorFactories. + */ + public Set getAll(); + + /** + * Get all DataAccessorFactories capable of handling the specified scheme. + * + * @param scheme A scheme, e.g. "http" or "file". + * @return A set of DataAccessorFactories for the specified scheme. + */ + public Set get(String scheme); +} Property changes on: aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/DataAccessorRegistry.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:mergeinfo + /branches/smila-prep-branch/aperture/src/java/org/semanticdesktop/aperture/accessor/DataAccessorRegistry.java:1513-1527 Added: svn:eol-style + native Copied: aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/DataObject.java (from rev 1610, trunk/aperture/src/java/org/semanticdesktop/aperture/accessor/DataObject.java) =================================================================== --- aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/DataObject.java (rev 0) +++ aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/DataObject.java 2009-02-10 23:11:31 UTC (rev 1636) @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2005 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.accessor; + +import org.ontoware.rdf2go.model.node.URI; +import org.semanticdesktop.aperture.datasource.DataSource; +import org.semanticdesktop.aperture.rdf.RDFContainer; + +/** + * A general interface for information items obtained from accessing a DataSource. DataObjects typically + * represent files, folders, web pages, e-mails, etc. + * + * <p> + * A DataObject consists of an identifier (a URI) and metadata that describes that identifier. + * Subinterfaces may define methods for accessing additional information, e.g. an InputStream. + * + * <p> + * Calling the getMetadata() method will retrieve structured data that exists in the realm of the + * DataSource. Examples include path and file names, sizes, last modification dates, etc. + */ +public interface DataObject { + + /** + * Gets the DataObject's primary identifier. + * + * @return An identifier for this DataObject. + */ + public URI getID(); + + /** + * Gets the DataSource from which this DataObject was obtained. + * + * @return The DataSource from which this DataObject originated. + */ + public DataSource getDataSource(); + + /** + * Get the metadata describing this DataObject's ID. + * + * @return An RDFContainer containing an RDF model formulated using the Aperture vocabulary. + */ + public RDFContainer getMetadata(); + + /** + * Closes this DataObject, freeing any resources that it keeps hold of. This method disposes the underlying + * metadata RDFContainer. It doesn't dispose the DataSource. The metadata RDFContainer cannot be used after + * the call to this method. + */ + public void dispose(); +} Property changes on: aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/DataObject.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:mergeinfo + /branches/smila-prep-branch/aperture/src/java/org/semanticdesktop/aperture/accessor/DataObject.java:1513-1527 Added: svn:eol-style + native Copied: aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/FileDataObject.java (from rev 1610, trunk/aperture/src/java/org/semanticdesktop/aperture/accessor/FileDataObject.java) =================================================================== --- aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/FileDataObject.java (rev 0) +++ aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/FileDataObject.java 2009-02-10 23:11:31 UTC (rev 1636) @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2005 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.accessor; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; + +import org.semanticdesktop.aperture.util.IOUtil; + +/** + * A general interface for DataObjects that have File-like semantics. Examples are files or web pages. + */ +public interface FileDataObject extends DataObject { + + /** + * Gets an InputStream containing the content represented by the DataObject. + * + * <p> + * The returned InputStream is required to support marking (markSupported() must return true). Calling + * this method multiple times may return references to one-and-the-same InputStream instance. Care should + * therefore be taken to mark and reset the stream when the stream's content is to be read again later. + * + * <p> + * The returned InputStream is null in cases where the physical resource could not be accessed, e.g. in + * case of missing file read permissions. + * + * @return An InputStream from which the content of the data object can be read, or null when the stream + * cannot be accessed. + * @throws IOException If an I/O error occurred. + */ + public InputStream getContent() throws IOException; + + /** + * Sets the InputStream containing the content represented by the DataObject. The specified InputStream is + * required to support marking (markSupported() must return true). + * + * @param stream The InputStream containing the resource's content. + */ + public void setContent(InputStream stream); + + /** + * Returns an instance of java.io.File representing the content of this FileDataObject. If no such file + * instance is available null is returned. <br/><br/> + * + * If you need a {@link File} instance (e.g. to pass it to a FileExtractor) and this method returns null, + * you can use the {@link #downloadContent} method. If the {@link #downloadContent()} method doesn't meet + * your needs, you can use the stream returned by {@link #getContent()} and implement the download process + * by yourself. Note that the {@link IOUtil#writeStream(InputStream, File)} method may be useful for this. + * + * @return a File representing the content of this FileDataObject or null if no such File is available + */ + public File getFile(); + + /** + * Downloads the entire content of the stream to a temporary file (created with + * {@link File#createTempFile(String, String)}). It is the responsibility of the user to delete the file + * if it is no longer needed. <br/><br/> + * + * <b>This method works only if the content stream hasn't been used or if it has been reset prior to + * calling this method. Otherwise the downloaded file would be corrupted. Aperture tries to check for this + * kind of error, but nevertheless this method should be used with care.</b><br/><br/> + * + * Note that the content stream may become unusable after a call to this method.<br/><br/> + * + * This method will always create a temporary file, including cases when the {@link #getFile()} method + * returns a non-null value. + * + * @return the {@link File} instance for the temporary file where the content of the stream has been + * downloaded. + * @throws IOException If the content stream is not at the beginning of the file, or if an I/O error + * occured during the download process. + */ + public File downloadContent() throws IOException; + + /** + * Sets the file containing the content represented by this FileDataObject. + * + * @param file the file with the content of this FileDataObject + */ + public void setFile(File file); +} Property changes on: aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/FileDataObject.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:mergeinfo + /branches/smila-prep-branch/aperture/src/java/org/semanticdesktop/aperture/accessor/FileDataObject.java:1513-1527 Added: svn:eol-style + native Copied: aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/FolderDataObject.java (from rev 1610, trunk/aperture/src/java/org/semanticdesktop/aperture/accessor/FolderDataObject.java) =================================================================== --- aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/FolderDataObject.java (rev 0) +++ aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/FolderDataObject.java 2009-02-10 23:11:31 UTC (rev 1636) @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2005 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.accessor; + +/** + * A FolderDataObject holds the metadata of a single folder. Currently this is a marker interface, no + * additional methods are required. + */ +public interface FolderDataObject extends DataObject { + +} Property changes on: aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/FolderDataObject.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:mergeinfo + /branches/smila-prep-branch/aperture/src/java/org/semanticdesktop/aperture/accessor/FolderDataObject.java:1513-1527 Added: svn:eol-style + native Deleted: aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/NativeTest.java =================================================================== --- aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/NativeTest.java 2009-02-10 21:26:26 UTC (rev 1635) +++ aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/NativeTest.java 2009-02-10 23:11:31 UTC (rev 1636) @@ -1,12 +0,0 @@ -package org.semanticdesktop.aperture.accessor; - -import java.io.File; -import java.util.HashSet; -import java.util.Set; - -public class NativeTest { - - public static void main(String[] args) throws Exception { - System.out.println("Hello world"); - } -} Copied: aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/RDFContainerFactory.java (from rev 1610, trunk/aperture/src/java/org/semanticdesktop/aperture/accessor/RDFContainerFactory.java) =================================================================== --- aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/RDFContainerFactory.java (rev 0) +++ aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/RDFContainerFactory.java 2009-02-10 23:11:31 UTC (rev 1636) @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2005 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.accessor; + +import org.ontoware.rdf2go.model.node.URI; +import org.semanticdesktop.aperture.rdf.RDFContainer; + +/** + * An RDFContainerFactory delivers a RDFContainer on-demand to a DataAccessor. + * + * <p> + * By letting instantiation of an RDFContainer go via a separate factory interface, implementors can + * decide whether to always return a single shared RDFContainer instance or whether each call returns a + * new instance, without having to create them upfront in the latter case. + */ +public interface RDFContainerFactory { + + /** + * Returns a RDFContainer instance. This may be either a shared instance or a new instance. + * + * @return a RDFContainer instance. + */ + public RDFContainer getRDFContainer(URI uri); +} Property changes on: aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/RDFContainerFactory.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:mergeinfo + /branches/smila-prep-branch/aperture/src/java/org/semanticdesktop/aperture/accessor/RDFContainerFactory.java:1513-1527 Added: svn:eol-style + native Copied: aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/UrlNotFoundException.java (from rev 1610, trunk/aperture/src/java/org/semanticdesktop/aperture/accessor/UrlNotFoundException.java) =================================================================== --- aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/UrlNotFoundException.java (rev 0) +++ aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/UrlNotFoundException.java 2009-02-10 23:11:31 UTC (rev 1636) @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2005 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.accessor; + +import java.io.IOException; + +/** + * Thrown by DataAccessors when the requested url did not point to an existing resource. + */ +public class UrlNotFoundException extends IOException { + + private String url; + + public UrlNotFoundException(String url) { + super("URL not found: " + url); + this.url = url; + } + + public UrlNotFoundException(String url, String message) { + super(message); + this.url = url; + } + + public String getUrl() { + return url; + } +} Property changes on: aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/UrlNotFoundException.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:mergeinfo + /branches/smila-prep-branch/aperture/src/java/org/semanticdesktop/aperture/accessor/UrlNotFoundException.java:1513-1527 Added: svn:eol-style + native Property changes on: aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/base ___________________________________________________________________ Added: svn:mergeinfo + /branches/smila-prep-branch/aperture/src/java/org/semanticdesktop/aperture/accessor/base:1513-1527 Deleted: aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/base/MessageDataObjectBase.java =================================================================== --- trunk/aperture/src/java/org/semanticdesktop/aperture/accessor/base/MessageDataObjectBase.java 2009-02-09 15:58:07 UTC (rev 1610) +++ aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/base/MessageDataObjectBase.java 2009-02-10 23:11:31 UTC (rev 1636) @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. - * All rights reserved. - * - * Licensed under the Aperture BSD-style license. - */ -package org.semanticdesktop.aperture.accessor.base; - -import javax.mail.internet.MimeMessage; - -import org.ontoware.rdf2go.model.node.URI; -import org.semanticdesktop.aperture.accessor.MessageDataObject; -import org.semanticdesktop.aperture.datasource.DataSource; -import org.semanticdesktop.aperture.rdf.RDFContainer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * <p> - * A trivial default implementation of a MessageDataObject. - * </p> - * - * <p> - * This implementation needs an ExecutorService in order to work properly. Here's an explanation why is it - * so:. - * <ol> - * <li>The requirement was to get a stream of bytes EXACTLY as they appear in an .eml file, with ALL headers - * and such - * <li>there is no way to get the raw bytes of the message with all headers <br/> - * - getRawInputStream returns the raw input stream of the CONTENT <br/> - * - getContentStream obviously returns the CONTENT input stream, converted to 'intended' byte values according - * to the "Content-Transfer-Encoding" header if such header is present <br/> - * - tried subclassing the MimeMessage to fool java into giving me access to the protected byte[] content - * field, but java won't do it - * <li>I don't want to copy the message content for each MessageDataObject because it the memory consumption - * will skyrocket - * <li>The only method that returns the desired data is writeTo, but it accepts an OutputStream, while I need - * to return an InputStream, that's why I need to use PipedInputStream and PipedOutputStream, the writeTo - * method has to be invoked by a separate thread, so that the client can read from the returned input stream - * <li>I don't want to create a separate thread for each new MessageDataObjectBase instance, because - * performance will suck, therefore a shared thread pool with pre-created threads is a much better idea - * </ol> - * </p> - */ -public class MessageDataObjectBase extends DataObjectBase implements MessageDataObject { - - private Logger logger = LoggerFactory.getLogger(getClass()); - private MimeMessage message; - - /** - * Constructor accepting a message. It will use an exclusive single-thread executor service. Therefore - * when you create a MessageDataObjectBase instance with this constructor and then call getContent() on it - * a new thread will be created. It may incur a significant performance overhead. Wherever feasible, - * please set up a shared executor service and use the other constructor instead. - * - * @param id URI of the data object (obligatory) - * @param dataSource the data source where this data object came from (optional) - * @param metadata the metadata for this data object (optional) - * @param message the MimeMessage - */ - public MessageDataObjectBase(URI id, DataSource dataSource, RDFContainer metadata, MimeMessage message){ - super(id,dataSource,metadata); - this.message = message; - } - - public void setMimeMessage(MimeMessage message) { - this.message = message; - } - - public MimeMessage getMimeMessage() { - return message; - } -} \ No newline at end of file Modified: aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/base/ModelAccessData.java =================================================================== --- trunk/aperture/src/java/org/semanticdesktop/aperture/accessor/base/ModelAccessData.java 2009-02-09 15:58:07 UTC (rev 1610) +++ aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/base/ModelAccessData.java 2009-02-10 23:11:31 UTC (rev 1636) @@ -26,7 +26,7 @@ import org.ontoware.rdf2go.model.node.impl.URIImpl; import org.ontoware.rdf2go.vocabulary.XSD; import org.semanticdesktop.aperture.accessor.AccessData; -import org.semanticdesktop.aperture.util.ModelUtil; +import org.semanticdesktop.aperture.rdf.util.ModelUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; Property changes on: aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/impl ___________________________________________________________________ Added: svn:mergeinfo + /branches/smila-prep-branch/aperture/src/java/org/semanticdesktop/aperture/accessor/impl:1513-1527 Property changes on: aperture/trunk/core/accessor/core/src/test/java/org/semanticdesktop/aperture/accessor/base ___________________________________________________________________ Added: svn:mergeinfo + /branches/smila-prep-branch/aperture/src/test/org/semanticdesktop/aperture/accessor/base:1513-1527 Modified: aperture/trunk/core/accessor/core/src/test/java/org/semanticdesktop/aperture/accessor/base/AccessDataTest.java =================================================================== --- trunk/aperture/src/test/org/semanticdesktop/aperture/accessor/base/AccessDataTest.java 2009-02-09 15:58:07 UTC (rev 1610) +++ aperture/trunk/core/accessor/core/src/test/java/org/semanticdesktop/aperture/accessor/base/AccessDataTest.java 2009-02-10 23:11:31 UTC (rev 1636) @@ -12,13 +12,14 @@ import java.util.Iterator; import java.util.Set; -import org.semanticdesktop.aperture.ApertureTestBase; +import junit.framework.TestCase; + import org.semanticdesktop.aperture.accessor.AccessData; /** * AccessDataTest defines some tests that should succeed on all types of AccessData implementations. */ -public class AccessDataTest extends ApertureTestBase { +public class AccessDataTest extends TestCase { protected static final String id1 = "file:file1"; protected static final String id2 = "file:file2"; Modified: aperture/trunk/core/accessor/core/src/test/java/org/semanticdesktop/aperture/accessor/base/CountingInputStreamTest.java =================================================================== --- trunk/aperture/src/test/org/semanticdesktop/aperture/accessor/base/CountingInputStreamTest.java 2009-02-09 15:58:07 UTC (rev 1610) +++ aperture/trunk/core/accessor/core/src/test/java/org/semanticdesktop/aperture/accessor/base/CountingInputStreamTest.java 2009-02-10 23:11:31 UTC (rev 1636) @@ -10,11 +10,14 @@ import java.io.IOException; import java.io.InputStream; -import org.semanticdesktop.aperture.ApertureTestBase; +import junit.framework.TestCase; + import org.semanticdesktop.aperture.util.ResourceUtil; -public class CountingInputStreamTest extends ApertureTestBase { +public class CountingInputStreamTest extends TestCase { + protected static final String DOCS_PATH = "org/semanticdesktop/aperture/docs/"; + private CountingInputStream stream; public void setUp() { Modified: aperture/trunk/core/accessor/core/src/test/java/org/semanticdesktop/aperture/accessor/base/TestFaultyFileAccessdata.java =================================================================== --- trunk/aperture/src/test/org/semanticdesktop/aperture/accessor/base/TestFaultyFileAccessdata.java 2009-02-09 15:58:07 UTC (rev 1610) +++ aperture/trunk/core/accessor/core/src/test/java/org/semanticdesktop/aperture/accessor/base/TestFaultyFileAccessdata.java 2009-02-10 23:11:31 UTC (rev 1636) @@ -8,7 +8,8 @@ import java.io.File; -import org.semanticdesktop.aperture.ApertureTestBase; +import junit.framework.TestCase; + import org.semanticdesktop.aperture.util.IOUtil; import org.semanticdesktop.aperture.util.ResourceUtil; @@ -16,8 +17,10 @@ * Tests two cases of faulty access data files that were generated by Aperture * but for some reason the FileAccessData class wouldn't read them. */ -public class TestFaultyFileAccessdata extends ApertureTestBase { +public class TestFaultyFileAccessdata extends TestCase { + protected static final String DOCS_PATH = "org/semanticdesktop/aperture/docs/"; + /** * Parses a file that used to throw an Exception. * @throws Exception Modified: aperture/trunk/core/accessor/core/src/test/java/org/semanticdesktop/aperture/accessor/base/TestFileDataObject.java =================================================================== --- trunk/aperture/src/test/org/semanticdesktop/aperture/accessor/base/TestFileDataObject.java 2009-02-09 15:58:07 UTC (rev 1610) +++ aperture/trunk/core/accessor/core/src/test/java/org/semanticdesktop/aperture/accessor/base/TestFileDataObject.java 2009-02-10 23:11:31 UTC (rev 1636) @@ -12,11 +12,12 @@ import java.io.IOException; import java.io.InputStream; +import junit.framework.TestCase; + import org.ontoware.rdf2go.RDF2Go; import org.ontoware.rdf2go.model.Model; import org.ontoware.rdf2go.model.node.URI; import org.ontoware.rdf2go.model.node.impl.URIImpl; -import org.semanticdesktop.aperture.ApertureTestBase; import org.semanticdesktop.aperture.accessor.FileDataObject; import org.semanticdesktop.aperture.rdf.RDFContainer; import org.semanticdesktop.aperture.rdf.impl.RDFContainerImpl; @@ -26,8 +27,10 @@ /** * Tests the FileDataObject class */ -public class TestFileDataObject extends ApertureTestBase { +public class TestFileDataObject extends TestCase { + protected static final String DOCS_PATH = "org/semanticdesktop/aperture/docs/"; + private static final URI TEST_URI = new URIImpl("uri:test"); public void testStreamStream() throws IOException { Deleted: aperture/trunk/core/accessor/core/src/test/java/org/semanticdesktop/aperture/accessor/base/TestMessageDataObject.java =================================================================== --- trunk/aperture/src/test/org/semanticdesktop/aperture/accessor/base/TestMessageDataObject.java 2009-02-09 15:58:07 UTC (rev 1610) +++ aperture/trunk/core/accessor/core/src/test/java/org/semanticdesktop/aperture/accessor/base/TestMessageDataObject.java 2009-02-10 23:11:31 UTC (rev 1636) @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. - * All rights reserved. - * - * Licensed under the Aperture BSD-style license. - */ -package org.semanticdesktop.aperture.accessor.base; - -import java.io.InputStream; -import java.util.Properties; - -import javax.mail.Session; -import javax.mail.internet.MimeMessage; - -import org.ontoware.rdf2go.model.node.URI; -import org.ontoware.rdf2go.model.node.impl.URIImpl; -import org.semanticdesktop.aperture.ApertureTestBase; -import org.semanticdesktop.aperture.util.ResourceUtil; - -/** - * Tests for the {@link MessageDataObjectBase} class - */ -public class TestMessageDataObject extends ApertureTestBase { - - private MessageDataObjectBase getTestInstance() throws Exception { - InputStream stream = ResourceUtil.getInputStream(DOCS_PATH + "/mail-multipart-test.eml", getClass()); - Session session = Session.getDefaultInstance(new Properties()); - MimeMessage message = new MimeMessage(session, stream); - URI id = new URIImpl("file://somefile.eml"); - MessageDataObjectBase obj = new MessageDataObjectBase(id, null, createRDFContainer(id), message); - return obj; - } -} \ No newline at end of file Modified: aperture/trunk/core/accessor/core/src/test/java/org/semanticdesktop/aperture/accessor/base/TestModelAccessData.java =================================================================== --- trunk/aperture/src/test/org/semanticdesktop/aperture/accessor/base/TestModelAccessData.java 2009-02-09 15:58:07 UTC (rev 1610) +++ aperture/trunk/core/accessor/core/src/test/java/org/semanticdesktop/aperture/accessor/base/TestModelAccessData.java 2009-02-10 23:11:31 UTC (rev 1636) @@ -8,6 +8,7 @@ import java.io.IOException; +import org.ontoware.rdf2go.RDF2Go; import org.ontoware.rdf2go.exception.ModelException; import org.ontoware.rdf2go.model.Model; @@ -21,9 +22,15 @@ model = createModel(); super.setUp(new ModelAccessData(model)); } - + public void tearDown() { model.close(); model = null; } + + private Model createModel() { + Model model = RDF2Go.getModelFactory().createModel(); + model.open(); + return model; + } } Property changes on: aperture/trunk/core/extractor ___________________________________________________________________ Added: svn:ignore + .classpath .project .settings Property changes on: aperture/trunk/core/extractor/core ___________________________________________________________________ Modified: svn:ignore - target + target .project .classpath .settings Modified: aperture/trunk/core/extractor/core/src/main/java/org/semanticdesktop/aperture/extractor/bundle/ExtractorServiceActivator.java =================================================================== --- aperture/trunk/core/extractor/core/src/main/java/org/semanticdesktop/aperture/extractor/bundle/ExtractorServiceActivator.java 2009-02-10 21:26:26 UTC (rev 1635) +++ aperture/trunk/core/extractor/core/src/main/java/org/semanticdesktop/aperture/extractor/bundle/ExtractorServiceActivator.java 2009-02-10 23:11:31 UTC (rev 1636) @@ -4,7 +4,7 @@ * * Licensed under the Aperture BSD-style license. */ -package org.semanticdesktop.aperture.extractor; +package org.semanticdesktop.aperture.extractor.bundle; import java.util.Hashtable; @@ -14,6 +14,9 @@ import org.osgi.framework.ServiceListener; import org.osgi.framework.ServiceReference; import org.osgi.framework.ServiceRegistration; +import org.semanticdesktop.aperture.extractor.ExtractorFactory; +import org.semanticdesktop.aperture.extractor.ExtractorRegistry; +import org.semanticdesktop.aperture.extractor.FileExtractorFactory; import org.semanticdesktop.aperture.extractor.impl.ExtractorRegistryImpl; /** Modified: aperture/trunk/core/pom.xml =================================================================== --- aperture/trunk/core/pom.xml 2009-02-10 21:26:26 UTC (rev 1635) +++ aperture/trunk/core/pom.xml 2009-02-10 23:11:31 UTC (rev 1636) @@ -30,4 +30,12 @@ <module>test</module> --> </modules> + <dependencies> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-jdk14</artifactId> + <version>${slf4j.version}</version> + <scope>test</scope> + </dependency> + </dependencies> </project> Modified: aperture/trunk/pom.xml =================================================================== --- aperture/trunk/pom.xml 2009-02-10 21:26:26 UTC (rev 1635) +++ aperture/trunk/pom.xml 2009-02-10 23:11:31 UTC (rev 1636) @@ -35,6 +35,7 @@ <aperture.tools.version>1.0.0-SNAPSHOT</aperture.tools.version> <rdf2go.version>4.7.0</rdf2go.version> <openrdf.sesame.version>2.3.0-SNAPSHOT</openrdf.sesame.version> + <slf4j.version>1.5.6</slf4j.version> </properties> <dependencyManagement> @@ -140,7 +141,22 @@ <artifactId>maven-plugin-api</artifactId> <version>2.0.9</version> </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + <version>${slf4j.version}</version> + </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-jdk14</artifactId> + <version>${slf4j.version}</version> + <scope>test</scope> + </dependency> </dependencies> + + </dependencyManagement> <build> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <my...@us...> - 2009-02-10 23:37:49
|
Revision: 1639 http://aperture.svn.sourceforge.net/aperture/?rev=1639&view=rev Author: mylka Date: 2009-02-10 23:37:43 +0000 (Tue, 10 Feb 2009) Log Message: ----------- added the stub of the crawler-core module Modified Paths: -------------- aperture/trunk/core/pom.xml aperture/trunk/pom.xml Added Paths: ----------- aperture/trunk/core/crawler/ aperture/trunk/core/crawler/core/ aperture/trunk/core/crawler/core/pom.xml aperture/trunk/core/crawler/core/src/ aperture/trunk/core/crawler/core/src/main/ aperture/trunk/core/crawler/core/src/main/java/ aperture/trunk/core/crawler/core/src/main/java/org/ aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/ aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/ aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/ aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/NativeTest.java aperture/trunk/core/crawler/core/src/test/ aperture/trunk/core/crawler/core/src/test/java/ aperture/trunk/core/crawler/core/src/test/java/org/ aperture/trunk/core/crawler/core/src/test/java/org/semanticdesktop/ aperture/trunk/core/crawler/core/src/test/java/org/semanticdesktop/aperture/ aperture/trunk/core/crawler/core/src/test/java/org/semanticdesktop/aperture/crawler/ aperture/trunk/core/crawler/core/target/ aperture/trunk/core/crawler/core/target/aperture-crawler-core-1.3.0-SNAPSHOT.jar aperture/trunk/core/crawler/core/target/classes/ aperture/trunk/core/crawler/core/target/classes/META-INF/ aperture/trunk/core/crawler/core/target/classes/META-INF/MANIFEST.MF aperture/trunk/core/crawler/core/target/classes/org/ aperture/trunk/core/crawler/core/target/classes/org/semanticdesktop/ aperture/trunk/core/crawler/core/target/classes/org/semanticdesktop/aperture/ aperture/trunk/core/crawler/core/target/classes/org/semanticdesktop/aperture/crawler/ aperture/trunk/core/crawler/core/target/classes/org/semanticdesktop/aperture/crawler/NativeTest.class aperture/trunk/core/crawler/core/target/maven-archiver/ aperture/trunk/core/crawler/core/target/maven-archiver/pom.properties aperture/trunk/core/crawler/pom.xml Added: aperture/trunk/core/crawler/core/pom.xml =================================================================== --- aperture/trunk/core/crawler/core/pom.xml (rev 0) +++ aperture/trunk/core/crawler/core/pom.xml 2009-02-10 23:37:43 UTC (rev 1639) @@ -0,0 +1,83 @@ +<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> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-crawler</artifactId> + <version>1.3.0-SNAPSHOT</version> + </parent> + + <artifactId>aperture-crawler-core</artifactId> + + <name>Aperture Core: Crawler - Core</name> + <description>Core Crawler API</description> + + <dependencies> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-rdf</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-datasource-core</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-util</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-vocabulary-core</artifactId> + </dependency> + + <dependency> + <groupId>org.semweb4j</groupId> + <artifactId>rdf2go.api</artifactId> + </dependency> + + <dependency> + <groupId>org.osgi</groupId> + <artifactId>osgi_R4_core</artifactId> + </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + </dependency> + + </dependencies> + + <build> + <plugins> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Export-Package>org.semanticdesktop.aperture.crawler</Export-Package> + <Private-Package>org.semanticdesktop.aperture.crawler.impl,org.semanticdesktop.aperture.crawler.bundle</Private-Package> + <Bundle-Activator>org.semanticdesktop.aperture.crawler.bundle.CrawlerServiceActivator</Bundle-Activator> + </instructions> + </configuration> + </plugin> + </plugins> + </build> +</project> Property changes on: aperture/trunk/core/crawler/core/pom.xml ___________________________________________________________________ Added: svn:mime-type + text/plain Added: aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/NativeTest.java =================================================================== --- aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/NativeTest.java (rev 0) +++ aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/NativeTest.java 2009-02-10 23:37:43 UTC (rev 1639) @@ -0,0 +1,13 @@ +package org.semanticdesktop.aperture.crawler; + +import java.io.File; +import java.util.HashSet; +import java.util.Set; + +public class NativeTest { + + public static void main(String[] args) throws Exception { + System.out.println("Hello world!"); + } + +} Property changes on: aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/NativeTest.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: aperture/trunk/core/crawler/core/target/aperture-crawler-core-1.3.0-SNAPSHOT.jar =================================================================== (Binary files differ) Property changes on: aperture/trunk/core/crawler/core/target/aperture-crawler-core-1.3.0-SNAPSHOT.jar ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: aperture/trunk/core/crawler/core/target/classes/META-INF/MANIFEST.MF =================================================================== --- aperture/trunk/core/crawler/core/target/classes/META-INF/MANIFEST.MF (rev 0) +++ aperture/trunk/core/crawler/core/target/classes/META-INF/MANIFEST.MF 2009-02-10 23:37:43 UTC (rev 1639) @@ -0,0 +1,23 @@ +Manifest-Version: 1.0 +Export-Package: org.semanticdesktop.aperture.crawler;version="1.3.0.SN + APSHOT" +Private-Package: org.semanticdesktop.aperture.crawler.impl,org.semanti + cdesktop.aperture.crawler.bundle +Built-By: antheque +Tool: Bnd-0.0.255 +Bundle-Name: Aperture Core: Crawler - Core +Created-By: Apache Maven Bundle Plugin +Bundle-Vendor: Aperture Development Team +Build-Jdk: 1.6.0_10 +Bundle-Version: 1.3.0.SNAPSHOT +Bnd-LastModified: 1234308968775 +Bundle-ManifestVersion: 2 +Bundle-Activator: org.semanticdesktop.aperture.crawler.bundle.CrawlerS + erviceActivator +Bundle-Description: Core Crawler API +Import-Package: org.semanticdesktop.aperture.crawler;version="1.3.0.SN + APSHOT",org.semanticdesktop.aperture.crawler.bundle +Bundle-SymbolicName: org.semanticdesktop.aperture.aperture-crawler-cor + e +Bundle-DocURL: http://aperture.semanticdesktop.org/ + Added: aperture/trunk/core/crawler/core/target/classes/org/semanticdesktop/aperture/crawler/NativeTest.class =================================================================== (Binary files differ) Property changes on: aperture/trunk/core/crawler/core/target/classes/org/semanticdesktop/aperture/crawler/NativeTest.class ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: aperture/trunk/core/crawler/core/target/maven-archiver/pom.properties =================================================================== --- aperture/trunk/core/crawler/core/target/maven-archiver/pom.properties (rev 0) +++ aperture/trunk/core/crawler/core/target/maven-archiver/pom.properties 2009-02-10 23:37:43 UTC (rev 1639) @@ -0,0 +1,5 @@ +#Generated by Maven +#Wed Feb 11 00:36:08 CET 2009 +version=1.3.0-SNAPSHOT +groupId=org.semanticdesktop.aperture +artifactId=aperture-crawler-core Added: aperture/trunk/core/crawler/pom.xml =================================================================== --- aperture/trunk/core/crawler/pom.xml (rev 0) +++ aperture/trunk/core/crawler/pom.xml 2009-02-10 23:37:43 UTC (rev 1639) @@ -0,0 +1,23 @@ +<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> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-core</artifactId> + <version>1.3.0-SNAPSHOT</version> + </parent> + + <artifactId>aperture-crawler</artifactId> + <packaging>pom</packaging> + + <name>Aperture Core: Crawlers</name> + <description>Definition of various crawlers</description> + + <modules> + <module>core</module> + </modules> +</project> \ No newline at end of file Property changes on: aperture/trunk/core/crawler/pom.xml ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: aperture/trunk/core/pom.xml =================================================================== --- aperture/trunk/core/pom.xml 2009-02-10 23:21:26 UTC (rev 1638) +++ aperture/trunk/core/pom.xml 2009-02-10 23:37:43 UTC (rev 1639) @@ -24,9 +24,9 @@ <module>util</module> <module>vocabulary</module> <module>accessor</module> + <module>crawler</module> + <!-- - - <module>crawler</module> <module>test</module> --> </modules> Modified: aperture/trunk/pom.xml =================================================================== --- aperture/trunk/pom.xml 2009-02-10 23:21:26 UTC (rev 1638) +++ aperture/trunk/pom.xml 2009-02-10 23:37:43 UTC (rev 1639) @@ -27,7 +27,7 @@ <modules> <module>core</module> <module>default</module> -<!-- <module>testbase</module>--> + <module>testbase</module> </modules> <properties> @@ -48,6 +48,16 @@ </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-accessor-core</artifactId> + <version>${aperture.version}</version> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-extractor-core</artifactId> + <version>${aperture.version}</version> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> <artifactId>aperture-rdf</artifactId> <version>${aperture.version}</version> </dependency> @@ -73,6 +83,11 @@ <artifactId>aperture-tools-infsail</artifactId> <version>${aperture.tools.version}</version> </dependency> + <dependency> + <groupId>org.semanticdesktop.nepomuk</groupId> + <artifactId>aperture-tools-nrlvalidator</artifactId> + <version>${aperture.tools.version}</version> + </dependency> <!-- OpenRDF Sesame --> <dependency> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <my...@us...> - 2009-02-11 00:48:24
|
Revision: 1642 http://aperture.svn.sourceforge.net/aperture/?rev=1642&view=rev Author: mylka Date: 2009-02-11 00:48:19 +0000 (Wed, 11 Feb 2009) Log Message: ----------- the crawler core module is more-or-less ready (without the CrawlerHandlerBase), which brought us to a point where we can compile the testbase module (without the TestIncrementalCrawlerHandler) Modified Paths: -------------- aperture/trunk/core/crawler/core/pom.xml aperture/trunk/testbase/pom.xml Added Paths: ----------- aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/CrawlReport.java aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/Crawler.java aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/CrawlerFactory.java aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/CrawlerHandler.java aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/CrawlerRegistry.java aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/ExitCode.java aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/base/ aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/bundle/ aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/impl/ aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/subcrawler/ aperture/trunk/core/crawler/core/src/test/java/org/semanticdesktop/aperture/subcrawler/ aperture/trunk/testbase/src/main/java/org/semanticdesktop/aperture/ApertureTestBase.java aperture/trunk/testbase/src/main/java/org/semanticdesktop/aperture/extractor/ Removed Paths: ------------- aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/base/CrawlerHandlerBase.java aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/subcrawler/bzip2/ aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/subcrawler/gzip/ aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/subcrawler/impl/DefaultSubCrawlerRegistry.java aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/subcrawler/impl/defaults.xml aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/subcrawler/mime/ aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/subcrawler/tar/ aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/subcrawler/vcard/ aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/subcrawler/zip/ aperture/trunk/core/crawler/core/src/test/java/org/semanticdesktop/aperture/subcrawler/SubCrawlerTestBase.java aperture/trunk/core/crawler/core/src/test/java/org/semanticdesktop/aperture/subcrawler/TestSubCrawlerUtil.java aperture/trunk/core/crawler/core/src/test/java/org/semanticdesktop/aperture/subcrawler/TestSubCrawlerUtilIntegration.java aperture/trunk/core/crawler/core/src/test/java/org/semanticdesktop/aperture/subcrawler/TestSubCrawlers.java aperture/trunk/core/crawler/core/src/test/java/org/semanticdesktop/aperture/subcrawler/base/ aperture/trunk/core/crawler/core/src/test/java/org/semanticdesktop/aperture/subcrawler/bzip2/ aperture/trunk/core/crawler/core/src/test/java/org/semanticdesktop/aperture/subcrawler/gzip/ aperture/trunk/core/crawler/core/src/test/java/org/semanticdesktop/aperture/subcrawler/impl/TestDefaultSubCrawlerRegistry.java aperture/trunk/core/crawler/core/src/test/java/org/semanticdesktop/aperture/subcrawler/mime/ aperture/trunk/core/crawler/core/src/test/java/org/semanticdesktop/aperture/subcrawler/tar/ aperture/trunk/core/crawler/core/src/test/java/org/semanticdesktop/aperture/subcrawler/vcard/ aperture/trunk/core/crawler/core/src/test/java/org/semanticdesktop/aperture/subcrawler/zip/ aperture/trunk/testbase/src/main/java/org/semanticdesktop/aperture/NativeTest.java Property Changed: ---------------- aperture/trunk/core/crawler/ aperture/trunk/core/crawler/core/ aperture/trunk/testbase/ Property changes on: aperture/trunk/core/crawler ___________________________________________________________________ Added: svn:ignore + .settings .classpath .project Property changes on: aperture/trunk/core/crawler/core ___________________________________________________________________ Added: svn:ignore + .project .classpath .settings target Modified: aperture/trunk/core/crawler/core/pom.xml =================================================================== --- aperture/trunk/core/crawler/core/pom.xml 2009-02-11 00:41:33 UTC (rev 1641) +++ aperture/trunk/core/crawler/core/pom.xml 2009-02-11 00:48:19 UTC (rev 1642) @@ -33,6 +33,14 @@ <groupId>org.semanticdesktop.aperture</groupId> <artifactId>aperture-vocabulary-core</artifactId> </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-accessor-core</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-extractor-core</artifactId> + </dependency> <dependency> <groupId>org.semweb4j</groupId> Copied: aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/CrawlReport.java (from rev 1610, trunk/aperture/src/java/org/semanticdesktop/aperture/crawler/CrawlReport.java) =================================================================== --- aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/CrawlReport.java (rev 0) +++ aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/CrawlReport.java 2009-02-11 00:48:19 UTC (rev 1642) @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2005 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.crawler; + +/** + * A CrawlReport instance contains statistics about the last performed or currently active crawl + * procedure of a Crawler. + */ +public interface CrawlReport { + + /** + * Returns when the crawl was started, encoded in the typical milliseconds style. + */ + public long getCrawlStarted(); + + /** + * Returns when the crawl stopped. Returns a negative value when the crawl is still in progress. + */ + public long getCrawlStopped(); + + /** + * Returns the status with which the crawl completed. Returns null when the crawl is still in + * progress. + */ + public ExitCode getExitCode(); + + /** + * Returns the number of new data objects encountered so far. + */ + public int getNewCount(); + + /** + * Returns the number of changed data objects encountered so far. + */ + public int getChangedCount(); + + /** + * Returns the number of removed data objects encountered so far. + */ + public int getRemovedCount(); + + /** + * Returns the number of unchanged data objects encountered so far. + */ + public int getUnchangedCount(); +} Property changes on: aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/CrawlReport.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:mergeinfo + /branches/smila-prep-branch/aperture/src/java/org/semanticdesktop/aperture/crawler/CrawlReport.java:1513-1527 Added: svn:eol-style + native Copied: aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/Crawler.java (from rev 1610, trunk/aperture/src/java/org/semanticdesktop/aperture/crawler/Crawler.java) =================================================================== --- aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/Crawler.java (rev 0) +++ aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/Crawler.java 2009-02-11 00:48:19 UTC (rev 1642) @@ -0,0 +1,160 @@ +/* + * Copyright (c) 2005 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.crawler; + +import java.io.InputStream; +import java.nio.charset.Charset; + +import org.semanticdesktop.aperture.accessor.AccessData; +import org.semanticdesktop.aperture.accessor.DataAccessorRegistry; +import org.semanticdesktop.aperture.accessor.DataObject; +import org.semanticdesktop.aperture.datasource.DataSource; +import org.semanticdesktop.aperture.subcrawler.SubCrawler; +import org.semanticdesktop.aperture.subcrawler.SubCrawlerException; + +/** + * A Crawler accesses the physical source represented by a DataSource and delivers a stream of DataObjects + * representing the resources in that source. + * + * <p> + * An AccessData instance can optionally be specified to a Crawler, allowing it to perform incremental + * crawling, i.e. to scan and report the differences in the data source since the last crawl. + */ +public interface Crawler { + + /** + * Returns the DataSource crawled by this Crawler. + * @return the DataSource crawled by this Crawler. + */ + public DataSource getDataSource(); + + /** + * Sets the DataAccessorRegistry to obtain DataAccessorFactories from. + * + * @param registry The DataAccessorRegistry to use, or 'null' when then DataAccessorRegistry should be + * unset. + */ + public void setDataAccessorRegistry(DataAccessorRegistry registry); + + /** + * Returns the DataAccessorRegistry currently used by this Crawler. + * + * @return The currently used DataAccessorRegistry, or 'null' when no DataAccessorRegistry has been set. + */ + public DataAccessorRegistry getDataAccessorRegistry(); + + /** + * Sets the AccessData instance to be used. + * + * @param accessData The AccessData instance to use, or 'null' when no AccessData is to be used. + */ + public void setAccessData(AccessData accessData); + + /** + * Returns the AccessData used by this Crawler. + * + * @return The AccessData used by this Crawler, or 'null' when no AccessData is used. + */ + public AccessData getAccessData(); + + /** + * Starts crawling the domain defined in the DataSource of this Crawler. If this is a subsequent run of + * this method, it will only report the differences with the previous run, unless the previous scan + * results have been cleared. Any CrawlerListeners registered on this Crawler will get notified about the + * crawling progress. + */ + public void crawl(); + + /** + * Clears the information the crawler had about the state of the data source. <br/><br/> + * + * This means deleting the stored crawl results from the AccessData instance registered with this crawler + * with the {@link #setAccessData(AccessData)}. Note that this entails clearing ONLY the information + * stored in that AccessData instance, not the information stored in the data source itself. <br/><br/> + * + * The CrawlerHandler registered with this Crawler is notified of the removal of the individual crawl + * results. Starting the clearing process results in a call to + * {@link CrawlerHandler#clearStarted(Crawler)}. Afterwards each deleted entry in the AccessData is + * reported to the CrawlerHandler with a call to the + * {@link CrawlerHandler#clearingObject(Crawler, String)}. At the end, the CrawlerHandler receives a call + * to {@link CrawlerHandler#clearFinished(Crawler, ExitCode)}.<br/><br/> + * + * As a result of calling this method, the AccessData instance is left in an empty state meaning that the + * next call to {@link #crawl()} will report all DataObjects in the data source as new + * {@link CrawlerHandler#objectNew(Crawler, org.semanticdesktop.aperture.accessor.DataObject)} + */ + public void clear(); + + /** + * Stops a running crawl or clear operation as fast as possible. This method may return before the + * crawling has actually stopped. + */ + public void stop(); + + /** + * Gets the CrawlReport of the last performed crawl, or the current crawl when it is in progress. Returns + * null when no crawl has been performed in this application's session yet and there is no report + * available from the previous session. + * + * @return The CrawlReport of the last run, or null when this is not available. + */ + public CrawlReport getCrawlReport(); + + /** + * Sets the CrawlerHandler to which this Crawler should report any scanned or cleared resources and from + * which it obtains RDFContainer. + * + * @param handler The CrawlerHandler to register. + */ + public void setCrawlerHandler(CrawlerHandler handler); + + /** + * Returns the currently registered CrawlerHandler. + * + * @return The current CrawlerHandler. + */ + public CrawlerHandler getCrawlerHandler(); + + /** + * Runs the given SubCrawler on the given stream.<br/><br/> + * + * This method uses the information stored within the crawler to provide appropriate arguments to the + * {@link SubCrawler}.subCrawl(...) method. DataObjects found by the SubCrawler will be reported to the + * {@link CrawlerHandler} registered with this crawler with the {@link #setCrawlerHandler(CrawlerHandler)} + * method. The {@link AccessData} and the internal data structures of this crawler will be updated + * correctly. The SubCrawler will be stopped if the {@link #stop()} method is invoked on this crawler.<br/><br/> + * + * In most cases, the SubCrawler is used to extract additional information from the DataObject found by a + * normal Crawler. In such cases using this method is strongly recommended instead of invoking + * {@link SubCrawler}.subCrawl(...) directly. The Crawler may behave unpredictably.<br/><br/> + * + * <b>IMPORTANT</b><br/><br/> + * + * There are two important issues to take care about when calling this method.<br/><br/> + * + * Firstly. If this method is called from a CrawlerHandler method (e.g. + * {@link CrawlerHandler#objectNew(Crawler, DataObject)} or + * {@link CrawlerHandler#objectChanged(Crawler, DataObject)}) that has been invoked by a running crawler, + * it SHOULD be run on the same thread that called the CrawlerHandler method (i.e. the crawling thread). + * Trying to run this method in a new thread may result in unpredictable behavior of the Crawler.<br/><br/> + * + * The second issue is that after this method is called, the crawler will report new or modified objects + * before this method returns, so the implementations of {@link CrawlerHandler} methods must be reentrant. + * See <a href="http://en.wikipedia.org/wiki/Reentrant">wikipedia</a>. It is recommended that processing any metadata in + * a DataObject takes place before the invocation of a SubCrawler. + * + * @param subCrawler the subcrawler to be used + * @param object the parent data object, its metadata may be augmented by the SubCrawler + * @param stream the InputStream for the SubCrawler to work on. Note that even though there may be + * additional resources stored in the DataObject itself (like an InputStream or a File) they + * are not used. + * @param charset the charset in which the input stream is encoded (optional) + * @param mimeType the mime type of the input stream (optional) + * @throws SubCrawlerException if some error during SubCrawling occurs. + */ + public void runSubCrawler(SubCrawler subCrawler, DataObject object, InputStream stream, Charset charset, String mimeType) throws SubCrawlerException; +} Property changes on: aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/Crawler.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:mergeinfo + /branches/smila-prep-branch/aperture/src/java/org/semanticdesktop/aperture/crawler/Crawler.java:1513-1527 Added: svn:eol-style + native Copied: aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/CrawlerFactory.java (from rev 1610, trunk/aperture/src/java/org/semanticdesktop/aperture/crawler/CrawlerFactory.java) =================================================================== --- aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/CrawlerFactory.java (rev 0) +++ aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/CrawlerFactory.java 2009-02-11 00:48:19 UTC (rev 1642) @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2005 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.crawler; + +import java.util.Set; + +import org.semanticdesktop.aperture.datasource.DataSource; + +/** + * CrawlerFactories created Crawlers capable of crawling specific types of DataSources. Rather than + * referring to specific DataSource implementations, a CrawlerFactory refers to the DataSource type URIs + * it supports. + * + * @see org.semanticdesktop.aperture.datasource.DataSource#getType() + */ +public interface CrawlerFactory { + + /** + * Returns a set of URIs indicating the DataSource types that are supported by the Crawler + * implementation provided by this CrawlerFactory. + * + * @return A Set of DataSource type URIs. + */ + public Set getSupportedTypes(); + + /** + * Return a Crawler that can crawl the specified DataSource. The getType method of this DataSource + * should return a URI that is contained in the supported types set of this CrawlerFactory. + * + * @param dataSource The DataSource for which a Crawler needs to be generated. + * @return A Crawler whose getDataSource method returns the specified DataSource. + */ + public Crawler getCrawler(DataSource dataSource); +} Property changes on: aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/CrawlerFactory.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:mergeinfo + /branches/smila-prep-branch/aperture/src/java/org/semanticdesktop/aperture/crawler/CrawlerFactory.java:1513-1527 Added: svn:eol-style + native Copied: aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/CrawlerHandler.java (from rev 1610, trunk/aperture/src/java/org/semanticdesktop/aperture/crawler/CrawlerHandler.java) =================================================================== --- aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/CrawlerHandler.java (rev 0) +++ aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/CrawlerHandler.java 2009-02-11 00:48:19 UTC (rev 1642) @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2005 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.crawler; + +import org.semanticdesktop.aperture.accessor.AccessData; +import org.semanticdesktop.aperture.accessor.DataObject; +import org.semanticdesktop.aperture.accessor.RDFContainerFactory; + +/** + * CrawlerHandlers are notified by a Crawler about additions, changes and deletions or resources in a + * DataSource. Furthermore, they are notified when the Crawler is cleaning up all its crawl results. + * + * <p> + * Rather than being pure listeners on a Crawler, CrawlerHandlers are also responsible to produce an + * RDFContainer on demand which the Crawler can use to store the source-specific metadata of a + * DataObject. It is up to the CrawlerHandler implementor to decide whether a new instance is returned + * for every DataObject or whether a shared instance is used. It is also responsible for any transaction + * and context management. + */ +public interface CrawlerHandler { + + /** + * Notification that the specified Crawler has started crawling its DataSource for DataObjects. + * + * @param crawler The reporting Crawler. + */ + public void crawlStarted(Crawler crawler); + + /** + * Notification that the specified Crawler has stopped crawling its DataSource for DataObjects. + * Reasons for stopping may be that the Crawler might have completed crawling, it may have been + * requested to stop or it may have stopped because of a fatal exception. + * + * @param crawler The reporting Crawler. + * @param exitCode The status with which the crawling stopped. + */ + public void crawlStopped(Crawler crawler, ExitCode exitCode); + + /** + * Notification that the Crawler is going to start accessing the specified data object. + * + * @param crawler The reporting Crawler. + * @param url The url of the resource that is going to be accessed. + */ + public void accessingObject(Crawler crawler, String url); + + /** + * Returns a RDFContainerFactory that will be used to provide RDFContainers that will hold a + * DataObject's metadata. + * + * @param crawler The requesting Crawler. + * @param url The url of the resource that is currently being accessed. + * @return an RDFContainer instance. + */ + public RDFContainerFactory getRDFContainerFactory(Crawler crawler, String url); + + /** + * Notification that the Crawler has found a new resource in the domain it is crawling. + * + * @param crawler The reporting Crawler. + * @param object The constructed DataObject modeling the new resource. + */ + public void objectNew(Crawler crawler, DataObject object); + + /** + * Notification that the Crawler has found a changed resource in the domain it is crawling. + * + * @param crawler The reporting Crawler. + * @param object The constructed DataObject modeling the changed resource. + */ + public void objectChanged(Crawler crawler, DataObject object); + + /** + * Notification that the Crawler has found a resource that has not been modified since the previous + * crawl. + * + * @param crawler The reporting Crawler. + * @param url The url of the unmodified resource. + */ + public void objectNotModified(Crawler crawler, String url); + + /** + * Notification that the specified resource that has been found in the past could no longer be found. + * This may indicate that the resource no longer exists or that it now falls outside the scope of the + * DataSource. + * + * @param crawler The reporting Crawler. + * @param url The url that could no longer be found. + */ + public void objectRemoved(Crawler crawler, String url); + + /** + * Notification that the specified Crawler has started clearing the information it had about the state of + * the datasource. This is followed by a {@link #clearingObject(Crawler, String)} on every known url. + * + * @param crawler The reporting Crawler. + * @see Crawler#clear() + */ + public void clearStarted(Crawler crawler); + + /** + * Notification that the Crawler is removing all information it knows about the specified url. Note that + * this means information stored by the crawler (usually in an {@link AccessData} instance), not the + * information in the data source itself. + * + * @param crawler The reporting Crawler. + * @param url The url of the resource whose crawl results are being cleared. + * @see Crawler#clear() + */ + public void clearingObject(Crawler crawler, String url); + + /** + * Notification that the Crawler has finished clearing the information about the state of the datasource. + * + * @param crawler The concerning Crawler. + * @param exitCode The status with which the clearing stopped. + * @see Crawler#clear() + */ + public void clearFinished(Crawler crawler, ExitCode exitCode); +} Property changes on: aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/CrawlerHandler.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:mergeinfo + /branches/smila-prep-branch/aperture/src/java/org/semanticdesktop/aperture/crawler/CrawlerHandler.java:1513-1527 Added: svn:eol-style + native Copied: aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/CrawlerRegistry.java (from rev 1610, trunk/aperture/src/java/org/semanticdesktop/aperture/crawler/CrawlerRegistry.java) =================================================================== --- aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/CrawlerRegistry.java (rev 0) +++ aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/CrawlerRegistry.java 2009-02-11 00:48:19 UTC (rev 1642) @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2005 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.crawler; + +import java.util.Set; + +import org.ontoware.rdf2go.model.node.URI; + +/** + * An CrawlerRegistry serves as a central registry for registering and obtaining CrawlerFactories. + */ +public interface CrawlerRegistry { + + /** + * Adds a CrawlerFactory to this registry. + */ + public void add(CrawlerFactory factory); + + /** + * Removes a CrawlerFactory from this registry. + */ + public void remove(CrawlerFactory factory); + + /** + * Returns all CrawlerFactories that support the specified DataSource type. + * + * @return A Set of CrawlerFactories whose supported types contain the specified type. + */ + public Set get(URI type); + + /** + * Returns all CrawlerFactories registered in this CrawlerRegistry. + * + * @return A Set of CrawlerFactory instances. + */ + public Set getAll(); +} Property changes on: aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/CrawlerRegistry.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:mergeinfo + /branches/smila-prep-branch/aperture/src/java/org/semanticdesktop/aperture/crawler/CrawlerRegistry.java:1513-1527 Added: svn:eol-style + native Copied: aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/ExitCode.java (from rev 1610, trunk/aperture/src/java/org/semanticdesktop/aperture/crawler/ExitCode.java) =================================================================== --- aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/ExitCode.java (rev 0) +++ aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/ExitCode.java 2009-02-11 00:48:19 UTC (rev 1642) @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2005 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.crawler; + +/** + * Class that defines ExitCodes to be used in the CrawlerHandler interface. + */ +public class ExitCode { + + /** + * Indicates that the process completed naturally. + */ + public static final ExitCode COMPLETED = new ExitCode("completed"); + + /** + * Indicates that the process was interrupted by a request to stop. + */ + public static final ExitCode STOP_REQUESTED = new ExitCode("stop requested"); + + /** + * Indicates that the process was aborted by a fatal error. + */ + public static final ExitCode FATAL_ERROR = new ExitCode("fatal error"); + + private String name; + + private ExitCode(String name) { + this.name = name; + } + + public String toString() { + return name; + } + + public boolean equals(Object object) { + return object instanceof ExitCode && name.equals(((ExitCode) object).name); + } + + public int hashCode() { + return name.hashCode(); + } +} Property changes on: aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/ExitCode.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:mergeinfo + /branches/smila-prep-branch/aperture/src/java/org/semanticdesktop/aperture/crawler/ExitCode.java:1513-1527 Added: svn:eol-style + native Property changes on: aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/base ___________________________________________________________________ Added: svn:mergeinfo + /branches/smila-prep-branch/aperture/src/java/org/semanticdesktop/aperture/crawler/base:1513-1527 Deleted: aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/base/CrawlerHandlerBase.java =================================================================== --- trunk/aperture/src/java/org/semanticdesktop/aperture/crawler/base/CrawlerHandlerBase.java 2009-02-09 15:58:07 UTC (rev 1610) +++ aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/base/CrawlerHandlerBase.java 2009-02-11 00:48:19 UTC (rev 1642) @@ -1,337 +0,0 @@ -/* - * Copyright (c) 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. - * All rights reserved. - * - * Licensed under the Aperture BSD-style license. - */ -package org.semanticdesktop.aperture.crawler.base; - -import java.io.BufferedInputStream; -import java.io.File; -import java.io.IOException; -import java.util.Set; - -import org.ontoware.rdf2go.RDF2Go; -import org.ontoware.rdf2go.model.Model; -import org.ontoware.rdf2go.model.node.URI; -import org.semanticdesktop.aperture.accessor.DataObject; -import org.semanticdesktop.aperture.accessor.FileDataObject; -import org.semanticdesktop.aperture.accessor.RDFContainerFactory; -import org.semanticdesktop.aperture.crawler.Crawler; -import org.semanticdesktop.aperture.crawler.CrawlerHandler; -import org.semanticdesktop.aperture.crawler.ExitCode; -import org.semanticdesktop.aperture.extractor.Extractor; -import org.semanticdesktop.aperture.extractor.ExtractorException; -import org.semanticdesktop.aperture.extractor.ExtractorFactory; -import org.semanticdesktop.aperture.extractor.ExtractorRegistry; -import org.semanticdesktop.aperture.extractor.FileExtractor; -import org.semanticdesktop.aperture.extractor.FileExtractorFactory; -import org.semanticdesktop.aperture.mime.identifier.MimeTypeIdentifier; -import org.semanticdesktop.aperture.rdf.RDFContainer; -import org.semanticdesktop.aperture.rdf.impl.RDFContainerImpl; -import org.semanticdesktop.aperture.subcrawler.SubCrawler; -import org.semanticdesktop.aperture.subcrawler.SubCrawlerException; -import org.semanticdesktop.aperture.subcrawler.SubCrawlerFactory; -import org.semanticdesktop.aperture.subcrawler.SubCrawlerRegistry; -import org.semanticdesktop.aperture.util.IOUtil; -import org.semanticdesktop.aperture.vocabulary.NIE; - -/** - * A base implementation of the CrawlerHandler interface. The method implementations are simplest - * possible, that fulfill the contract. The applications are expected to override the methods they need. - * - * The {@link #processBinary(Crawler, DataObject)} object is provided as a reference implementation to - * show how to use the MIMEtype-detector and the extractors. - * - * <h3>Subclassing CrawlerHandlerBase</h3> - * Create a subclass of this class to integrate Aperture into existing applications. - * <ul> - * <li>Write a constructor or initializing method to set the {@link #mimeTypeIdentifier}, - * {@link #extractorRegistry} and {@link #subCrawlerRegistry}.</li> - * <li>Review the method {@link #getRDFContainerFactory(Crawler, String)} to influence the RDF containers used.</li> - * <li>Override all objectXXX methods to handle the data, possibly calling {@link #processBinary(Crawler, DataObject)} - * to extract the contents of binary streams.</li> - * </ul> - * The objectXXX methods need to be implemented to do something with the dataobjects found by Aperture. - * - * @author leo sauermann - * @author antoni mylka - */ -public class CrawlerHandlerBase implements CrawlerHandler { - - /** - * should binaries be processed? - */ - protected boolean extractingContents = true; - - /** - * Mime-type identifier, <b>must</b> be set by overriding classes - * to use processBinary - */ - protected MimeTypeIdentifier mimeTypeIdentifier; - - /** - * Extractor registry, <b>may</b> be set by overriding classes - * to use processBinary - */ - protected ExtractorRegistry extractorRegistry; - - /** - * Subcrawler registry, <b>may</b> be set by overriding classes - * to use processBinary - */ - protected SubCrawlerRegistry subCrawlerRegistry; - - /** - * Construct and empty BaseCrawlerHandler. - * set the extractorRegistry, mimeTypeIdentifier, and subCrawlerRegistry yourself. - */ - public CrawlerHandlerBase() { - - } - - - - /** - * Construct an initialised BaseCrawlerHandler. - * Pass the needed objects for binary handling. - * @param mimeTypeIdentifier initialised MimeTypeIdentifier - * @param extractorRegistry initialised ExtractorRegistry, can be null if binary handling is not needed - * @param subCrawlerRegistry initialised SubCrawlerRegistry, can be null if binary handling is not needed - */ - public CrawlerHandlerBase(MimeTypeIdentifier mimeTypeIdentifier, ExtractorRegistry extractorRegistry, - SubCrawlerRegistry subCrawlerRegistry) { - super(); - this.mimeTypeIdentifier = mimeTypeIdentifier; - this.extractorRegistry = extractorRegistry; - this.subCrawlerRegistry = subCrawlerRegistry; - } - - - - /** - * Returns an rdf container factory. This method implementation returns a factory which delivers simple - * RDFContainers backed by in-memory models obtained from the {@link RDF2Go#getModelFactory()} method. - * Each model is separate. - * - * @see CrawlerHandler#getRDFContainerFactory(Crawler, String) - */ - public RDFContainerFactory getRDFContainerFactory(Crawler crawler, String url) { - return new RDFContainerFactory() { - - public RDFContainer getRDFContainer(URI uri) { - Model model = RDF2Go.getModelFactory().createModel(); - model.open(); - return new RDFContainerImpl(model, uri); - } - }; - } - - /** - * This method implementation doesn't do anything, it is meant to be overridden. - * - * @see CrawlerHandler#accessingObject(Crawler, String) - */ - public void accessingObject(Crawler crawler, String url) { - // don't do anything, please override me - } - - /** - * This method implementation doesn't do anything, it is meant to be overridden. - * - * @see CrawlerHandler#clearFinished(Crawler, ExitCode) - */ - public void clearFinished(Crawler crawler, ExitCode exitCode) { - // don't do anything, please override me - } - - /** - * This method implementation doesn't do anything, it is meant to be overridden. - * - * @see CrawlerHandler#clearingObject(Crawler, String) - */ - public void clearingObject(Crawler crawler, String url) { - // don't do anything, please override me - } - - /** - * This method implementation doesn't do anything, it is meant to be overridden. - * - * @see CrawlerHandler#clearStarted(Crawler) - */ - public void clearStarted(Crawler crawler) { - // don't do anything, please override me - } - - /** - * This method implementation doesn't do anything, it is meant to be overridden. - * - * @see CrawlerHandler#crawlStarted(Crawler) - */ - public void crawlStarted(Crawler crawler) { - // don't do anything, please override me - } - - /** - * This method implementation doesn't do anything, it is meant to be overridden. - * - * @see CrawlerHandler#crawlStopped(Crawler, ExitCode) - */ - public void crawlStopped(Crawler crawler, ExitCode exitCode) { - // don't do anything, please override me - } - - /** - * This method implementation only disposes the data object and does nothing more. It is meant to be - * overridden. - * - * @see CrawlerHandler#objectChanged(Crawler, DataObject) - */ - public void objectChanged(Crawler crawler, DataObject object) { - // don't do anything, please override me - } - - /** - * This method implementation only disposes the data object and does nothing more. It is meant to be - * overridden. - * - * @see CrawlerHandler#objectNew(Crawler, DataObject) - */ - public void objectNew(Crawler crawler, DataObject object) { - object.dispose(); - } - - /** - * This method implementation doesn't do anything, it is meant to be overridden. - * - * @see CrawlerHandler#objectNotModified(Crawler, String) - */ - public void objectNotModified(Crawler crawler, String url) { - // don't do anything, please override me - } - - /** - * This method implementation doesn't do anything, it is meant to be overridden. - * - * @see CrawlerHandler#objectRemoved(Crawler, String) - */ - public void objectRemoved(Crawler crawler, String url) { - // don't do anything, please override me - } - - /** - * Default and reference implementation of the - * handling of objects found in the crawling process: - * Identify the mime-type, invoke Extractors. - * Interprets the boolean value "extractingContents" - * which is by default true. - * @param crawler the crawler that reported the dataObject. The crawler will be used to invoke - * subcrawlers, if needed. The control then stays within the crawler's thread. - * @param dataObject the data object to process. - * When the passed DataObject is not a FileDataObject, - * nothing will be done. - * @throws IOException when the stream cannot be read - * @throws ExctractorException when the extractor fails - * @throws SubCrawlerException when the extraction of contents using a {@link SubCrawler} failed. - */ - protected void processBinary(Crawler crawler, DataObject dataObject) throws IOException, ExtractorException, - SubCrawlerException { - // we cannot do anything when MIME type identification is disabled - if (!extractingContents) { - return; - } - // check prerequisites - if (mimeTypeIdentifier == null) - throw new RuntimeException("MimeTypeIdentifier is not set. "); - if (dataObject == null) - throw new NullPointerException("dataObject is null. This parameter must be set."); - - // process the contents on an InputStream, if available - if (dataObject instanceof FileDataObject) { - FileDataObject object = (FileDataObject) dataObject; - - URI id = object.getID(); - - // Create a buffer around the object's stream large enough to be able to reset the stream - // after MIME type identification has taken place. Add some extra to the minimum array - // length required by the MimeTypeIdentifier for safety. - int minimumArrayLength = mimeTypeIdentifier.getMinArrayLength(); - int bufferSize = Math.max(minimumArrayLength, 8192); - BufferedInputStream bufferedStream = new BufferedInputStream(object.getContent(), bufferSize); - bufferedStream.mark(minimumArrayLength + 10); // add some for safety - - // apply the MimeTypeIdentifier - byte[] bytes = IOUtil.readBytes(bufferedStream, minimumArrayLength); - String mimeType = mimeTypeIdentifier.identify(bytes, null, id); - - if (mimeType != null) { - // add the mime type to the metadata - RDFContainer metadata = object.getMetadata(); - metadata.add(NIE.mimeType, mimeType); - - bufferedStream.reset(); - - // ************************************************************ - // EXTRACTORS - only works when the extractor registry was set! - if (extractorRegistry != null) - { - // apply an Extractor if available - Set extractors = extractorRegistry.getExtractorFactories(mimeType); - if (!extractors.isEmpty()) { - ExtractorFactory factory = (ExtractorFactory) extractors.iterator().next(); - Extractor extractor = factory.get(); - extractor.extract(id, bufferedStream, null, mimeType, metadata); - return; // this could be made configurable: allowing multiple extractors to work on one stream - } - - // else try to apply a FileExtractor - Set fileextractors = extractorRegistry.getFileExtractorFactories(mimeType); - if (!fileextractors.isEmpty()) { - FileExtractorFactory factory = (FileExtractorFactory) fileextractors.iterator().next(); - FileExtractor extractor = factory.get(); - File originalFile = object.getFile(); - if (originalFile != null) { - extractor.extract(id, originalFile, null, mimeType, metadata); - } else { - File tempFile = object.downloadContent(); - extractor.extract(id, tempFile, null, mimeType, metadata); - tempFile.delete(); - } - return; // this could be made configurable: allowing multiple extractors to work on one stream - } - } - - //************************************************** - // Subcrawlers - only works when subCrawlerRegistry is set - if (subCrawlerRegistry != null) { - Set subcrawlerFactories = subCrawlerRegistry.get(mimeType); - for (Object sub : subcrawlerFactories) { - SubCrawlerFactory subcrawlerfactory = (SubCrawlerFactory)sub; - SubCrawler subcrawler = subcrawlerfactory.get(); - // Hand over control to the crawler again - the thread will return after the subcrawler is finished. - crawler.runSubCrawler(subcrawler, dataObject, bufferedStream, null, mimeType); - return; // this could be made configurable: allowing multiple subcrawlers to work on one stream - } - } - } - } - } - - /** - * should binaries be processed? - * @return true, when binaries are processed - */ - public boolean isExtractingContents() { - return extractingContents; - } - - /** - * should binaries be processed? - * @param extractingContents set to true to extract the contents when calling - * {@link #processBinary(DataObject)} - */ - public void setExtractingContents(boolean extractingContents) { - this.extractingContents = extractingContents; - } - -} Property changes on: aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/impl ___________________________________________________________________ Added: svn:mergeinfo + /branches/smila-prep-branch/aperture/src/java/org/semanticdesktop/aperture/crawler/impl:1513-1527 Property changes on: aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/subcrawler ___________________________________________________________________ Added: svn:mergeinfo + /branches/smila-prep-branch/aperture/src/java/org/semanticdesktop/aperture/subcrawler:1513-1527 Deleted: aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/subcrawler/impl/DefaultSubCrawlerRegistry.java =================================================================== --- trunk/aperture/src/java/org/semanticdesktop/aperture/subcrawler/impl/DefaultSubCrawlerRegistry.java 2009-02-09 15:58:07 UTC (rev 1610) +++ aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/subcrawler/impl/DefaultSubCrawlerRegistry.java 2009-02-11 00:48:19 UTC (rev 1642) @@ -1,126 +0,0 @@ -/* - * Copyright (c) 2005 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. - * All rights reserved. - * - * Licensed under the Aperture BSD-style license. - */ -package org.semanticdesktop.aperture.subcrawler.impl; - -import java.io.BufferedInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.Map; - -import javax.xml.parsers.ParserConfigurationException; - -import org.semanticdesktop.aperture.extractor.ExtractorFactory; -import org.semanticdesktop.aperture.subcrawler.SubCrawlerFactory; -import org.semanticdesktop.aperture.util.ResourceUtil; -import org.semanticdesktop.aperture.util.SimpleSAXAdapter; -import org.semanticdesktop.aperture.util.SimpleSAXParser; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.xml.sax.SAXException; - -/** - * DefaultExtractorRegistry provides the complete set of ExtractorFactories available in Aperture. - * - * <p> - * The main purpose of this class is to be able to conveniently access the set of ExtractorFactories in - * non-OSGi applications, which take care of this initialization in a different way. A single line of code - * gives you the entire set without requiring further setup. - * - * <p> - * The set of factory class names are loaded from an XML file which can optionally be specified to the - * constructor. This class requires all the listed classes to have a no-argument constructor. - */ -public class DefaultSubCrawlerRegistry extends SubCrawlerRegistryImpl { - - private static final String DEFAULT_FILE = "org/semanticdesktop/aperture/subcrawler/impl/defaults.xml"; - - private static final String SUB_CRAWLER_FACTORY_TAG = "subCrawlerFactory"; - - private static final String NAME_TAG = "name"; - - public DefaultSubCrawlerRegistry() { - try { - InputStream stream = ResourceUtil.getInputStream(DEFAULT_FILE, DefaultSubCrawlerRegistry.class); - BufferedInputStream buffer = new BufferedInputStream(stream); - parse(buffer); - buffer.close(); - } - catch (IOException e) { - throw new RuntimeException("unable to parse " + DEFAULT_FILE, e); - } - } - - public DefaultSubCrawlerRegistry(InputStream stream) throws IOException { - parse(stream); - } - - private void parse(InputStream stream) throws IOException { - try { - // Parse the document - SimpleSAXParser parser = new SimpleSAXParser(); - parser.setListener(new SubCrawlerParser()); - parser.parse(stream); - } - catch (ParserConfigurationException e) { - IOException ie = new IOException(e.getMessage()); - ie.initCause(e); - throw ie; - } - catch (SAXException e) { - IOException ie = new IOException(e.getMessage()); - ie.initCause(e); - throw ie; - } - } - - private class SubCrawlerParser extends SimpleSAXAdapter { - - private Logger logger = LoggerFactory.getLogger(getClass()); - - private boolean insideFactoryElement = false; - - public void startTag(String tagName, Map atts, String text) throws SAXException { - if (SUB_CRAWLER_FACTORY_TAG.equals(tagName)) { - insideFactoryElement = true; - } - else if (NAME_TAG.equals(tagName) && insideFactoryElement && text != null) { - processClassName(text); - } - } - - public void endTag(String tagName) { - if (SUB_CRAWLER_FACTORY_TAG.equals(tagName)) { - insideFactoryElement = false; - } - } - - private void processClassName(String className) { - className = className.trim(); - if (!className.equals("")) { - try { - Class clazz = Class.forName(className); - Object instance = clazz.newInstance(); - SubCrawlerFactory factory = (SubCrawlerFactory) instance; - add(factory); - } - catch (ClassNotFoundException e) { - logger.warn("unable to find class " + className + ", ignoring", e); - } - catch (InstantiationException e) { - logger.warn("unable to instantiate class " + className + ", ignoring", e); - } - catch (IllegalAccessException e) { - logger.warn("unable to access class " + className + ", ignoring", e); - } - catch (ClassCastException e) { - logger.warn("unable to cast instance to " + ExtractorFactory.class.getName() - + ", ignoring", e); - } - } - } - } -} Deleted: aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/subcrawler/impl/defaults.xml =================================================================== --- trunk/aperture/src/java/org/semanticdesktop/aperture/subcrawler/impl/defaults.xml 2009-02-09 15:58:07 UTC (rev 1610) +++ aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/subcrawler/impl/defaults.xml 2009-02-11 00:48:19 UTC (rev 1642) @@ -1,22 +0,0 @@ -<?xml version='1.0' encoding='UTF-8'?> - -<subCrawlerFactories> - <subCrawlerFactory> - <name>org.semanticdesktop.aperture.subcrawler.vcard.VcardSubCrawlerFactory</name> - </subCrawlerFactory> - <subCrawlerFactory> - <name>org.semanticdesktop.aperture.subcrawler.zip.ZipSubCrawlerFactory</name> - </subCrawlerFactory> - <subCrawlerFactory> - <name>org.semanticdesktop.aperture.subcrawler.gzip.GZipSubCrawlerFactory</name> - </subCrawlerFactory> - <subCrawlerFactory> - <name>org.semanticdesktop.aperture.subcrawler.tar.TarSubCrawlerFactory</name> - </subCrawlerFactory> - <subCrawlerFactory> - <name>org.semanticdesktop.aperture.subcrawler.bzip2.BZip2SubCrawlerFactory</name> - </subCrawlerFactory> - <subCrawlerFactory> - <name>org.semanticdesktop.aperture.subcrawler.mime.MimeSubCrawlerFactory</name> - </subCrawlerFactory> -</subCrawlerFactories> \ No newline at end of file Property changes on: aperture/trunk/core/crawler/core/src/test/java/org/semanticdesktop/aperture/subcrawler ___________________________________________________________________ Added: svn:mergeinfo + /branches/smila-prep-branch/aperture/src/test/org/semanticdesktop/aperture/subcrawler:1513-1527 Deleted: aperture/trunk/core/crawler/core/src/test/java/org/semanticdesktop/aperture/subcrawler/SubCrawlerTestBase.java =================================================================== --- trunk/aperture/src/test/org/semanticdesktop/aperture/subcrawler/SubCrawlerTestBase.java 2009-02-09 15:58:07 UTC (rev 1610) +++ aperture/trunk/core/crawler/core/src/test/java/org/semanticdesktop/aperture/subcrawler/SubCrawlerTestBase.java 2009-02-11 00:48:19 UTC (rev 1642) @@ -1,423 +0,0 @@ -/* - * Copyright (c) 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. - * All rights reserved. - * - * Licensed under the Aperture BSD-style license. - */ -package org.semanticdesktop.aperture.subcrawler; - -import info.aduna.io.ResourceUtil; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.nio.charset.Charset; -import java.util.HashSet; -import java.util.Set; - -import org.ontoware.rdf2go.RDF2Go; -import org.ontoware.rdf2go.exception.ModelException; -import org.ontoware.rdf2go.model.Model; -import org.ontoware.rdf2go.model.node.Resource; -import org.ontoware.rdf2go.model.node.URI; -import org.ontoware.rdf2go.model.node.impl.URIImpl; -import org.ontoware.rdf2go.vocabulary.RDF; -import org.semanticdesktop.aperture.ApertureTestBase; -import org.semanticdesktop.aperture.TestIncrementalCrawlerHandler; -import org.semanticdesktop.aperture.accessor.AccessData; -import org.semanticdesktop.aperture.accessor.DataObject; -import org.semanticdesktop.aperture.accessor.FileDataObject; -import org.semanticdesktop.aperture.accessor.RDFContainerFactory; -import org.semanticdesktop.aperture.accessor.base.AccessDataImpl; -import org.semanticdesktop.aperture.accessor.file.FileAccessorFactory; -import org.semanticdesktop.aperture.accessor.impl.DataAccessorRegistryImpl; -import org.semanticdesktop.aperture.crawler.filesystem.FileSystemCrawler; -import org.semanticdesktop.aperture.datasource.filesystem.FileSystemDataSource; -import org.semanticdesktop.aperture.extractor.Extractor; -import org.semanticdesktop.aperture.extractor.ExtractorException; -import org.semanticdesktop.aperture.extractor.ExtractorFactory; -import org.semanticdesktop.aperture.extractor.ExtractorRegistry; -import org.semanticdesktop.aperture.mime.identifier.MimeTypeIdentifier; -import org.semanticdesktop.aperture.mime.identifier.magic.MagicMimeTypeIdentifier; -import org.semanticdesktop.aperture.rdf.RDFContainer; -import org.semanticdesktop.aperture.rdf.impl.RDFContainerImpl; -import org.semanticdesktop.aperture.subcrawler.impl.SubCrawlerRegistryImpl; -import org.semanticdesktop.aperture.util.FileUtil; -import org.semanticdesktop.aperture.util.IOUtil; -import org.semanticdesktop.aperture.vocabulary.NFO; - -/** - * A base class for archiver tests - */ -public class SubCrawlerTestBase extends ApertureTestBase { - - /** - * Performs basic checks of the model. It is used by archivers that have crawled the test archive file. - * I.e. the same content archived with different algorithms. See for example the zip-test.zip file for - * details. - * - * @param model - * @param resourceName - * @throws Exception - */ - protected void doBasicArchiverTests(Model model, String resourceName, String prefix) throws Exception { - URI archiveUri = model.createURI("uri:dummyuri/" + resourceName); - assertTrue(model.contains(archiveUri, RDF.type, NFO.Archive)); - // everything that is directly linked with an isPartOf link to the archive itself - Resource testfolder = findSingleSubjectResource(model, NFO.belongsToContainer, archiveUri); - String folderPath = testfolder.toString(); - checkStatement(testfolder.asURI(), RDF.type, NFO.Folder, model); - assertEquals(prefix + ":" + archiveUri.toString() + "!/zip-test/", folderPath); - Set<Resource> testContent = findSubjectResourceSet(model, NFO.belongsToContainer, testfolder); - - assertTrue(testContent.contains(new URIImpl(folderPath + "test1.txt"))); - assertTrue(testContent.contains(new URIImpl(folderPath + "test2.txt"))); - assertTrue(testContent.contains(new URIImpl(folderPath + "test3.txt"))); - assertTrue(testContent.contains(new URIImpl(folderPath + "subfolder/"))); - assertTrue(testContent.contains(new URIImpl(folderPath + "microsoft-word-2000.doc"))); - - assertEquals(5, testContent.size()); - URI subfolderUri = new URIImpl(folderPath + "subfolder/"); - checkStatement(subfolderUri, RDF.type, NFO.Folder, model); - - Set<Resource> subfolderContent = findSubjectResourceSet(model, NFO.belongsToContainer, subfolderUri); - - assertTrue(subfolderContent.contains(new URIImpl(folderPath + "subfolder/test4.txt"))); - assertTrue(subfolderContent.contains(new URIImpl(folderPath + "subfolder/test5.txt"))); - assertTrue(subfolderContent.contains(new URIImpl(folderPath + "subfolder/pdf-manyauthors.pdf"))); - - assertEquals(3, subfolderContent.size()); - - // file names - assertSingleValueProperty(model, testfolder, NFO.fileName, "zip-test"); - assertSingleValueProperty(model, new URIImpl(folderPath + "test1.txt"), NFO.fileName, "test1.txt"); - assertSingleValueProperty(model, new URIImpl(folderPath + "test2.txt"), NFO.fileName, "test2.txt"); - assertSingleValueProperty(model, new URIImpl(folderPath + "test3.txt"), NFO.fileName, "test3.txt"); - assertSingleValueProperty(model, new URIImpl(folderPath + "subfolder/"), NFO.fileName, "subfolder"); - assertSingleValueProperty(model, new URIImpl(folderPath + "subfolder/test4.txt"), NFO.fileName, "test4.txt"); - assertSingleValueProperty(model, new URIImpl(folderPath + "subfolder/test5.txt"), NFO.fileName, "test5.txt"); - assertSingleValueProperty(model, new URIImpl(folderPath + "subfolder/pdf-manyauthors.pdf"), NFO.fileName, "pdf-manyauthors.pdf"); - assertSingleValueProperty(model, new URIImpl(folderPath + "microsoft-word-2000.doc"), NFO.fileName, "microsoft-word-2000.doc"); - } - - /** - * A basic test if the extraction actually works - * @param model - * @param resourceName - * @param contentFileName - * @throws Exception - */ - public void doBasicCompressorTest(Model model, String resourceName, String contentFileName, String prefix) throws Exception { - String compressedFileUri = "uri:dummyuri/" + resourceName; - String contentUri = prefix + ":uri:dummyuri/" + resourceName + "!/" + contentFileName; - URI archiveUri = model.createURI(compressedFileUri); - // the archiveUri is an archive - assertTrue(model.contains(archiveUri, RDF.type, NFO.Archive)); - // the archive has a single part - Resource contentResource = findSingleSubjectResource(model, NFO.belongsToContainer, archiveUri); - // that content part is an archive item - checkStatement(contentResource.asURI(), RDF.type, NFO.ArchiveItem, model); - // the uri of the archive item is the same as those of the archive with the .gz truncated - assertEquals(contentUri, contentResource.toString()); - // the name of the content file has been properly extracted from the content uri - assertSingleValueProperty(model, contentResource, NFO.fileName, contentFileName); - // the handler has spotted one new object and nothing else - } - - /** - * Tests the incremental crawling - * @param factory - * @param subdirName - * @param resourceName - * @param fileExtension - * @param numberOfEntries - * @throws Exception - */ - public void testCrawlerIncremental(SubCrawlerFactory factory, String subdirName, String resourceName, String fileExtension, int numberOfEntries) throws Exception { - File tmpDir = new File(System.getProperty("java.io.tmpdir"), subdirName).getCanonicalFile(); - try { - // create a temporary folder containing a temporary file - // unfortunately there is no File.createTempDir - - FileUtil.deltree(tmpDir); - assertTrue(tmpDir.mkdir()); - - // put two files in it - File tmpFile1 = File.createTempFile("file-", ".txt", tmpDir); - IOUtil.writeString("test file 1", tmpFile1); - ... [truncated message content] |
From: <her...@us...> - 2009-02-17 12:01:52
|
Revision: 1649 http://aperture.svn.sourceforge.net/aperture/?rev=1649&view=rev Author: herko_ter_horst Date: 2009-02-17 12:01:49 +0000 (Tue, 17 Feb 2009) Log Message: ----------- Added Mime Identifier bundles. Modified Paths: -------------- aperture/trunk/core/mime-identifier/core/pom.xml aperture/trunk/core/mime-identifier/magic/pom.xml aperture/trunk/core/mime-identifier/pom.xml aperture/trunk/core/pom.xml aperture/trunk/default/datasource/pom.xml aperture/trunk/default/mime-identifier/pom.xml aperture/trunk/default/pom.xml aperture/trunk/pom.xml Added Paths: ----------- aperture/trunk/core/mime-identifier/core/src/main/java/org/semanticdesktop/aperture/mime/identifier/bundle/ aperture/trunk/core/mime-identifier/core/src/main/java/org/semanticdesktop/aperture/mime/identifier/bundle/MimeIdentifierServiceActivator.java aperture/trunk/core/mime-identifier/magic/src/main/java/org/semanticdesktop/aperture/mime/identifier/magic/bundle/ aperture/trunk/core/mime-identifier/magic/src/main/java/org/semanticdesktop/aperture/mime/identifier/magic/bundle/MagicMimeIdentifierActivator.java aperture/trunk/core/mime-identifier/magic/src/main/resources/ aperture/trunk/core/mime-identifier/magic/src/main/resources/org/ aperture/trunk/core/mime-identifier/magic/src/main/resources/org/semanticdesktop/ aperture/trunk/core/mime-identifier/magic/src/main/resources/org/semanticdesktop/aperture/ aperture/trunk/core/mime-identifier/magic/src/main/resources/org/semanticdesktop/aperture/mime/ aperture/trunk/core/mime-identifier/magic/src/main/resources/org/semanticdesktop/aperture/mime/identifier/ aperture/trunk/core/mime-identifier/magic/src/main/resources/org/semanticdesktop/aperture/mime/identifier/magic/ aperture/trunk/core/mime-identifier/magic/src/main/resources/org/semanticdesktop/aperture/mime/identifier/magic/mimetypes.xml aperture/trunk/default/mime-identifier/src/main/java/org/semanticdesktop/aperture/mime/ aperture/trunk/default/mime-identifier/src/main/java/org/semanticdesktop/aperture/mime/identifier/ aperture/trunk/default/mime-identifier/src/main/java/org/semanticdesktop/aperture/mime/identifier/bundle/ aperture/trunk/default/mime-identifier/src/main/java/org/semanticdesktop/aperture/mime/identifier/bundle/DefaultMimeIdentifierServiceActivator.java aperture/trunk/default/mime-identifier/src/main/java/org/semanticdesktop/aperture/mime/identifier/impl/ aperture/trunk/default/mime-identifier/src/main/java/org/semanticdesktop/aperture/mime/identifier/impl/DefaultMimeTypeIdentifierRegistry.java aperture/trunk/default/mime-identifier/src/main/resources/ aperture/trunk/default/mime-identifier/src/main/resources/org/ aperture/trunk/default/mime-identifier/src/main/resources/org/semanticdesktop/ aperture/trunk/default/mime-identifier/src/main/resources/org/semanticdesktop/aperture/ aperture/trunk/default/mime-identifier/src/main/resources/org/semanticdesktop/aperture/mime/ aperture/trunk/default/mime-identifier/src/main/resources/org/semanticdesktop/aperture/mime/identifier/ aperture/trunk/default/mime-identifier/src/main/resources/org/semanticdesktop/aperture/mime/identifier/impl/ aperture/trunk/default/mime-identifier/src/main/resources/org/semanticdesktop/aperture/mime/identifier/impl/defaults.xml Removed Paths: ------------- aperture/trunk/core/mime-identifier/core/src/main/java/org/semanticdesktop/aperture/mime/New Folder/ aperture/trunk/core/mime-identifier/core/src/main/java/org/semanticdesktop/aperture/mime/identifier/impl/DefaultMimeTypeIdentifierRegistry.java aperture/trunk/core/mime-identifier/core/src/main/java/org/semanticdesktop/aperture/mime/identifier/impl/defaults.xml aperture/trunk/core/mime-identifier/magic/src/main/java/org/semanticdesktop/aperture/mime/identifier/magic/mimetypes.xml Property Changed: ---------------- aperture/trunk/core/mime-identifier/core/ aperture/trunk/core/mime-identifier/magic/ aperture/trunk/default/mime-identifier/ Property changes on: aperture/trunk/core/mime-identifier/core ___________________________________________________________________ Added: svn:ignore + .classpath .project .settings target Modified: aperture/trunk/core/mime-identifier/core/pom.xml =================================================================== --- aperture/trunk/core/mime-identifier/core/pom.xml 2009-02-17 11:50:43 UTC (rev 1648) +++ aperture/trunk/core/mime-identifier/core/pom.xml 2009-02-17 12:01:49 UTC (rev 1649) @@ -11,9 +11,61 @@ <version>1.3.0-SNAPSHOT</version> </parent> - <artifactId>aperture-mime-identifier</artifactId> + <artifactId>aperture-mime-identifier-core</artifactId> <name>Aperture Core: Mime Identifier - Core</name> <description>Mime-type Identifier API</description> + + <dependencies> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-util</artifactId> + </dependency> + + <dependency> + <groupId>org.semweb4j</groupId> + <artifactId>rdf2go.api</artifactId> + </dependency> + + <dependency> + <groupId>org.osgi</groupId> + <artifactId>osgi_R4_core</artifactId> + </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Export-Package>org.semanticdesktop.aperture.mime.identifier</Export-Package> + <Private-Package>org.semanticdesktop.aperture.mime.identifier.impl,org.semanticdesktop.aperture.mime.identifier.bundle</Private-Package> + <Bundle-Activator>org.semanticdesktop.aperture.mime.identifier.bundle.MimeTypeIdentifierServiceActivator</Bundle-Activator> + </instructions> + </configuration> + </plugin> + </plugins> + </build> + </project> Added: aperture/trunk/core/mime-identifier/core/src/main/java/org/semanticdesktop/aperture/mime/identifier/bundle/MimeIdentifierServiceActivator.java =================================================================== --- aperture/trunk/core/mime-identifier/core/src/main/java/org/semanticdesktop/aperture/mime/identifier/bundle/MimeIdentifierServiceActivator.java (rev 0) +++ aperture/trunk/core/mime-identifier/core/src/main/java/org/semanticdesktop/aperture/mime/identifier/bundle/MimeIdentifierServiceActivator.java 2009-02-17 12:01:49 UTC (rev 1649) @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2006 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.mime.identifier.bundle; + +import java.util.Hashtable; + +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceEvent; +import org.osgi.framework.ServiceListener; +import org.osgi.framework.ServiceReference; +import org.osgi.framework.ServiceRegistration; +import org.semanticdesktop.aperture.mime.identifier.MimeTypeIdentifierFactory; +import org.semanticdesktop.aperture.mime.identifier.MimeTypeIdentifierRegistry; +import org.semanticdesktop.aperture.mime.identifier.impl.MimeTypeIdentifierRegistryImpl; + +public class MimeIdentifierServiceActivator implements BundleActivator, ServiceListener { + private BundleContext bc = null; + + private ServiceRegistration registration; + + private MimeTypeIdentifierRegistry registry; + + public void start(BundleContext context) throws Exception { + + bc = context; + registry = new MimeTypeIdentifierRegistryImpl(); + registration = bc.registerService(MimeTypeIdentifierRegistry.class.getName(), registry, + new Hashtable()); + + + String filter = "(objectclass=" + MimeTypeIdentifierFactory.class.getName() + ")"; + bc.addServiceListener(this, filter); + + ServiceReference references[] = bc.getServiceReferences(null, filter); + + for (int i = 0; references != null && i < references.length; i++) { + this.serviceChanged(new ServiceEvent(ServiceEvent.REGISTERED, references[i])); + } + + + } + + public void stop(BundleContext context) throws Exception { + registration.unregister(); + bc = null; + } + + public void serviceChanged(ServiceEvent event) { + MimeTypeIdentifierFactory factory; + switch (event.getType()) { + case ServiceEvent.REGISTERED: + factory = (MimeTypeIdentifierFactory) bc.getService(event + .getServiceReference()); + registry.add(factory); + break; + case ServiceEvent.MODIFIED: + factory = (MimeTypeIdentifierFactory) bc.getService(event + .getServiceReference()); + registry.remove(factory); + registry.add(factory); + break; + case ServiceEvent.UNREGISTERING: + factory = (MimeTypeIdentifierFactory) bc.getService(event + .getServiceReference()); + registry.remove(factory); + break; + } + } +} Deleted: aperture/trunk/core/mime-identifier/core/src/main/java/org/semanticdesktop/aperture/mime/identifier/impl/DefaultMimeTypeIdentifierRegistry.java =================================================================== --- aperture/trunk/core/mime-identifier/core/src/main/java/org/semanticdesktop/aperture/mime/identifier/impl/DefaultMimeTypeIdentifierRegistry.java 2009-02-17 11:50:43 UTC (rev 1648) +++ aperture/trunk/core/mime-identifier/core/src/main/java/org/semanticdesktop/aperture/mime/identifier/impl/DefaultMimeTypeIdentifierRegistry.java 2009-02-17 12:01:49 UTC (rev 1649) @@ -1,127 +0,0 @@ -/* - * Copyright (c) 2005 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. - * All rights reserved. - * - * Licensed under the Aperture BSD-style license. - */ -package org.semanticdesktop.aperture.mime.identifier.impl; - -import java.io.BufferedInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.Map; - -import javax.xml.parsers.ParserConfigurationException; - -import org.semanticdesktop.aperture.mime.identifier.MimeTypeIdentifierFactory; -import org.semanticdesktop.aperture.util.ResourceUtil; -import org.semanticdesktop.aperture.util.SimpleSAXAdapter; -import org.semanticdesktop.aperture.util.SimpleSAXParser; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.xml.sax.SAXException; - -/** - * DefaultMimeTypeIdentifierRegistry provides the complete set of MimeTypeIdentifierFactories available in - * Aperture. - * - * <p> - * The main purpose of this class is to be able to conveniently access the set of MimeTypeIdentifierFactories - * in non-OSGi applications, which take care of this initialization in a different way. A single line of code - * gives you the entire set without requiring further setup. - * - * <p> - * The set of factory class names are loaded from an XML file which can optionally be specified to the - * constructor. This class requires all the listed classes to have a no-argument constructor. - */ -public class DefaultMimeTypeIdentifierRegistry extends MimeTypeIdentifierRegistryImpl { - - private static final String DEFAULT_FILE = "org/semanticdesktop/aperture/mime/identifier/impl/defaults.xml"; - - private static final String IDENTIFIER_FACTORY_TAG = "mimeTypeIdentifierFactory"; - - private static final String NAME_TAG = "name"; - - public DefaultMimeTypeIdentifierRegistry() { - try { - InputStream stream = ResourceUtil.getInputStream(DEFAULT_FILE, - DefaultMimeTypeIdentifierRegistry.class); - BufferedInputStream buffer = new BufferedInputStream(stream); - parse(buffer); - buffer.close(); - } - catch (IOException e) { - throw new RuntimeException("unable to parse " + DEFAULT_FILE, e); - } - } - - public DefaultMimeTypeIdentifierRegistry(InputStream stream) throws IOException { - parse(stream); - } - - private void parse(InputStream stream) throws IOException { - try { - // Parse the document - SimpleSAXParser parser = new SimpleSAXParser(); - parser.setListener(new IdentifierParser()); - parser.parse(stream); - } - catch (ParserConfigurationException e) { - IOException ie = new IOException(e.getMessage()); - ie.initCause(e); - throw ie; - } - catch (SAXException e) { - IOException ie = new IOException(e.getMessage()); - ie.initCause(e); - throw ie; - } - } - - private class IdentifierParser extends SimpleSAXAdapter { - - private Logger logger = LoggerFactory.getLogger(getClass()); - - private boolean insideFactoryElement = false; - - public void startTag(String tagName, Map atts, String text) throws SAXException { - if (IDENTIFIER_FACTORY_TAG.equals(tagName)) { - insideFactoryElement = true; - } - else if (NAME_TAG.equals(tagName) && insideFactoryElement && text != null) { - processClassName(text); - } - } - - public void endTag(String tagName) { - if (IDENTIFIER_FACTORY_TAG.equals(tagName)) { - insideFactoryElement = false; - } - } - - private void processClassName(String className) { - className = className.trim(); - if (!className.equals("")) { - try { - Class clazz = Class.forName(className); - Object instance = clazz.newInstance(); - MimeTypeIdentifierFactory factory = (MimeTypeIdentifierFactory) instance; - add(factory); - } - catch (ClassNotFoundException e) { - logger.warn("unable to find class " + className + ", ignoring", e); - } - catch (InstantiationException e) { - logger.warn("unable to instantiate class " + className + ", ignoring", e); - } - catch (IllegalAccessException e) { - logger.warn("unable to access class " + className + ", ignoring", e); - } - catch (ClassCastException e) { - logger.warn("unable to cast instance to " + MimeTypeIdentifierFactory.class.getName() - + ", ignoring", e); - } - } - } - } -} Deleted: aperture/trunk/core/mime-identifier/core/src/main/java/org/semanticdesktop/aperture/mime/identifier/impl/defaults.xml =================================================================== --- aperture/trunk/core/mime-identifier/core/src/main/java/org/semanticdesktop/aperture/mime/identifier/impl/defaults.xml 2009-02-17 11:50:43 UTC (rev 1648) +++ aperture/trunk/core/mime-identifier/core/src/main/java/org/semanticdesktop/aperture/mime/identifier/impl/defaults.xml 2009-02-17 12:01:49 UTC (rev 1649) @@ -1,7 +0,0 @@ -<?xml version='1.0' encoding='UTF-8'?> - -<mimeTypeIdentifierFactories> - <mimeTypeIdentifierFactory> - <name>org.semanticdesktop.aperture.mime.identifier.magic.MagicMimeTypeIdentifierFactory</name> - </mimeTypeIdentifierFactory> -</mimeTypeIdentifierFactories> \ No newline at end of file Property changes on: aperture/trunk/core/mime-identifier/magic ___________________________________________________________________ Added: svn:ignore + .classpath .project .settings target Modified: aperture/trunk/core/mime-identifier/magic/pom.xml =================================================================== --- aperture/trunk/core/mime-identifier/magic/pom.xml 2009-02-17 11:50:43 UTC (rev 1648) +++ aperture/trunk/core/mime-identifier/magic/pom.xml 2009-02-17 12:01:49 UTC (rev 1649) @@ -15,5 +15,60 @@ <name>Aperture Core: Mime Identifier - Magic</name> <description>Mime-type Identifier implementation based on magic numbers.</description> + + <dependencies> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-mime-identifier-core</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-util</artifactId> + </dependency> + + <dependency> + <groupId>org.semweb4j</groupId> + <artifactId>rdf2go.api</artifactId> + </dependency> + + <dependency> + <groupId>org.osgi</groupId> + <artifactId>osgi_R4_core</artifactId> + </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Export-Package>org.semanticdesktop.aperture.mime.identifier.magic</Export-Package> + <Private-Package>org.semanticdesktop.aperture.mime.identifier.magic.bundle</Private-Package> + <Bundle-Activator>org.semanticdesktop.aperture.mime.identifier.magic.bundle.MagicMimeTypeIdentifierActivator</Bundle-Activator> + </instructions> + </configuration> + </plugin> + </plugins> + </build> </project> Added: aperture/trunk/core/mime-identifier/magic/src/main/java/org/semanticdesktop/aperture/mime/identifier/magic/bundle/MagicMimeIdentifierActivator.java =================================================================== --- aperture/trunk/core/mime-identifier/magic/src/main/java/org/semanticdesktop/aperture/mime/identifier/magic/bundle/MagicMimeIdentifierActivator.java (rev 0) +++ aperture/trunk/core/mime-identifier/magic/src/main/java/org/semanticdesktop/aperture/mime/identifier/magic/bundle/MagicMimeIdentifierActivator.java 2009-02-17 12:01:49 UTC (rev 1649) @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2006 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.mime.identifier.magic.bundle; + +import java.util.Hashtable; + +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceRegistration; +import org.semanticdesktop.aperture.mime.identifier.MimeTypeIdentifierFactory; +import org.semanticdesktop.aperture.mime.identifier.magic.MagicMimeTypeIdentifierFactory; + +public class MagicMimeIdentifierActivator implements BundleActivator { + + private MimeTypeIdentifierFactory factory; + + private ServiceRegistration registration; + + public void start(BundleContext context) throws Exception { + factory = new MagicMimeTypeIdentifierFactory(); + registration = context.registerService(MimeTypeIdentifierFactory.class.getName(), factory, + new Hashtable()); + } + + public void stop(BundleContext context) throws Exception { + registration.unregister(); + } +} Deleted: aperture/trunk/core/mime-identifier/magic/src/main/java/org/semanticdesktop/aperture/mime/identifier/magic/mimetypes.xml =================================================================== --- aperture/trunk/core/mime-identifier/magic/src/main/java/org/semanticdesktop/aperture/mime/identifier/magic/mimetypes.xml 2009-02-17 11:50:43 UTC (rev 1648) +++ aperture/trunk/core/mime-identifier/magic/src/main/java/org/semanticdesktop/aperture/mime/identifier/magic/mimetypes.xml 2009-02-17 12:01:49 UTC (rev 1649) @@ -1,1182 +0,0 @@ -<?xml version='1.0' encoding='UTF-8'?> - -<mimeTypes> - -<!-- - -COPYRIGHT -========= - -Copyright (c) 2005 - 2008 Aduna. -All rights reserved. - -Licensed under the Aperture BSD-style license. - - -CONTENTS -======== - -This file describes typical magic number and file extensions of a variety of document formats. - -Below is a list of description elements. Each description element describes a way to identify a -MIME type of a binary resource, based on magic number sequences and/or file extentions heuristics. - -A description can refer to a parent description. This means that besides the requirements -description, a resource should also match the requirements of the parent type (recursively) -in order to match the child description. Examples are OpenOffice documents which are a -special type of zip files and therefore have application/zip as parent type. - -This file denotes a preferential order: when a resource matches several descriptions, -the one listed first overrules all others. This does not apply to the case where one -description has the other as parent description, in that case the most specific description -is preferred. - -Each description element has the following contents: - -* mimeType: the MIME type whose characteristics are described. This element is mandatory. - Please use the most standard MIME type for this category. This is NOT the place to list - all alternative equivalent MIME types. - -* parentType: the parent type that must also be detected in order for this description to match. - This element is optional and defaults to no parent type. - -* extensions: a comma-separated list of common file extensions used for this type, e.g. "html,htm". - This element is optional and defaults to an empty list. - -* allowsLeadingWhiteSpace: a boolean ("true"/"false") that indicates whether the file format allows - white space before the identifying parts described in the condition occurs. A typical example is - text/html, which allows a file to start with white space before the <html> element. - This element is optional and defaults to "false". - -* magicNumber: a byte sequence that is indicative for the described MIME type. There can be zero - or more magicNumber elements. - -* magicString: a character sequence that is indicative for the described MIME type. There can be zero - or more magicString elelements. - -The magicNumber element has the byte sequence as text content. The encoding is specified in the -mandatory encoding attribute. Use "hex" as encoding type to indicate that the element content -contains the byte sequence in hexadecimal encoding, e.g. "ca fe ba be 00" (without the quotes). -Use "string" as encoding type to indicate that the element content contains the bytes in UTF-8 -encoding, e.g. "PK" (without the quotes) for the application/zip MIME type. - -The magicString element has a character sequence as text content. The difference between a magic -number and a magic string is that magic numbers are always tested using byte comparisons, whereas -the MIME type identifier may use some additional encoding interpretation to test for magic strings. -This makes it possible to classify a file starting with "<html>" as a text/html file, regardless -of whether the file is saved as ASCII, UTF-8 or UTF-16. - -The magicNumber element has an optional offset attribute, indicating the position -in the binary stream where the sequence should occur. This attribute defaults to "0". - -The allowsLeadingWhiteSpace property is probably only meaningful for magic strings. Nevertheless, -it can also be specified for magic bytes. - -It is possible to have multiple descriptions describing the same MIME type. This is for example -necessary in the application/presentations case, which has multiple, mutually exclusive parent -types. - - -ALGORITHM -========= - -In short: - -- find a matching description: - - - determine the list of descriptions without a parent type - - - if UTF BOM detected: convert bytes to chars, loop over descriptions to find matching magic string - - - if no BOM detected or no match found: loop to find matching magic byte array - - - if still no match, find a description based on extension - -- when a match is found: - - - repeat process on list of child descriptions. If this yields a result, this overrules the - previous match, else the previous match is returned. - - -Detailed explanation: - -The MIME type of a resource is determined as follows. - -First we determine the list of all descriptions that have no parent type, i.e. that are not dependent -on another description. - -Then we test whether the specified bytes start with a UTF Byte Order Mark. If so, then the -bytes are converted to characters according to this encoding, yielding a string. All descriptions -found in the previous step are looped over to find whether any of them has a magic string that matches -the constructed string. More precisely, it tests whether the magic string occurs at its specified -offset in the constructed string. - -If this did not result in a matching description (either because the byte array did not start with a BOM -or because there was no matching magic string), we perform the same loop, this time testing for magic -numbers. Note that magic strings are also tested as magic numbers, the magic byte array used in -that case is simply the byte representation of the magic string in UTF-8 encoding without a BOM. - -If this also did not result in a matching description, a final loop is performed, testing on file name -extension. - -When no description is found, 'null' is returned. - -When this process did find a matching description, the algorithm is recursively repeated on the list -of descriptions whose parent type equal the found type. If this yields a result, the child type is -returned, else the parent type is returned. - - -LINKS -===== - -See http://www.filext.com/ for an online database of MIME types and magic numbers. - -See also http://www.garykessler.net/library/file_sigs.html for magic numbers -(still need to merge this info with our list). - -See http://www.wotsit.org/ for an online database of file format descriptions. - ---> - -<!-- ================== Archive Types ================== --> - -<description> - <mimeType>application/zip</mimeType> - <extensions>zip</extensions> - <magicNumber encoding="string">PK</magicNumber> -</description> - -<description> - <mimeType>application/gzip</mimeType> - <extensions>gz,tgz</extensions> - <magicNumber encoding="hex">1f 8b 08</magicNumber> -</description> - -<description> - <mimeType>application/x-compress</mimeType> - <extensions>z</extensions> - <magicNumber encoding="hex">1f 9d 90</magicNumber> -</description> - -<description> - <mimeType>application/bzip2</mimeType> - <extensions>bz2,tbz2</extensions> - <magicNumber encoding="hex">42 5a 68 39 31</magicNumber> -</description> - -<description> - <mimeType>application/x-tar</mimeType> - <magicNumber encoding="string" offset="257">ustar</magicNumber> - <extensions>tar</extensions> -</description> - -<description> - <mimeType>application/x-rar-compressed</mimeType> - <extensions>rar</extensions> - <magicNumber encoding="hex">52 61 72 21 1a</magicNumber> -</description> - -<description> - <mimeType>application/stuffit</mimeType> - <extensions>sit</extensions> - <magicNumber encoding="string">SIT!</magicNumber> -</description> - -<description> - <mimeType>application/binhex</mimeType> - <extensions>hqx</extensions> -</description> - -<description> - <mimeType>application/vnd.ms-cab-compressed</mimeType> - <extensions>cab</extensions> - <magicNumber encoding="string">MSCF</magicNumber> -</description> - -<description> - <mimeType>application/x-installshield-compressedfile</mimeType> - <magicNumber encoding="string">ISc(</magicNumber> -</description> - -<!-- ================== Web Types ================== --> - -<description> - <mimeType>text/html</mimeType> - <extensions>html,htm,htc,shtml,jsp,jspf,php,asp,xhtml</extensions> - <allowsLeadingWhiteSpace>true</allowsLeadingWhiteSpace> - <magicString caseSensitive="false"><HTML</magicString> - <magicString caseSensitive="false"><HEAD</magicString> - <magicString caseSensitive="false"><BODY</magicString> - <magicString caseSensitive="false"><!DOCTYPE HTML</magicString> - <magicString caseSensitive="false"><!--</magicString> - <magicString caseSensitive="false"><TITLE</magicString> - <magicString caseSensitive="false"><H1></magicString> -</description> - -<description> - <mimeType>text/xml</mimeType> - <extensions>xml</extensions> - <magicString><?xml</magicString> -</description> - -<description> - <!-- This description is necessary to prevent XHTML files starting with <?xml... - rather than <!DOCTYPE... to be reported as text/xml. Still, this only works when - they *have* a file name extension. --> - <mimeType>application/xhtml+xml</mimeType> - <extensions>html,htm,htc,shtml,jsp,jspf,php,asp,xhtml</extensions> - <parentType>text/xml</parentType> -</description> - -<description> - <mimeType>application/xslt+xml</mimeType> - <extensions>xsl,xslt</extensions> - <parentType>text/xml</parentType> -</description> - -<description> - <mimeType>text/vnd.wap.wml</mimeType> - <extensions>wml</extensions> - <parentType>text/xml</parentType> -</description> - -<description> - <mimeType>application/rdf+xml</mimeType> - <extensions>rdf,rdfs</extensions> - <parentType>text/xml</parentType> -</description> - -<description> - <mimeType>application/owl+xml</mimeType> - <extensions>owl</extensions> - <parentType>text/xml</parentType> -</description> - -<description> - <mimeType>application/trix</mimeType> - <extensions>trix</extensions> - <parentType>text/xml</parentType> -</description> - -<description> - <mimeType>application/x-turtle</mimeType> - <extensions>ttl</extensions> -</description> - -<description> - <mimeType>text/rdf+n3</mimeType> - <extensions>n3</extensions> -</description> - -<description> - <mimeType>text/css</mimeType> - <extensions>css</extensions> -</description> - -<description> - <mimeType>text/javascript</mimeType> - <extensions>js</extensions> -</description> - -<description> - <mimeType>application/java-archive</mimeType> - <extensions>jar</extensions> - <parentType>application/zip</parentType> -</description> - -<description> - <mimeType>application/x-java-webarchive</mimeType> - <extensions>war</extensions> - <parentType>application/zip</parentType> -</description> - -<description> - <mimeType>application/x-java-enterprisearchive</mimeType> - <extensions>ear</extensions> - <parentType>application/zip</parentType> -</description> - -<description> - <mimeType>application/x-url</mimeType> - <magicString>[InternetShortcut]</magicString> - <extensions>url</extensions> -</description> - -<description> - <mimeType>application/vnd.adobe.air-application-installer-package+zip</mimeType> - <extensions>air</extensions> - <parentType>application/zip</parentType> -</description> - -<!-- ================== OpenOffice 1.x/StarOffice 6.x-7.x Types ================== --> - -<description> - <mimeType>application/vnd.sun.xml.calc</mimeType> - <parentType>application/zip</parentType> - <extensions>sxc</extensions> -</description> - -<description> - <mimeType>application/vnd.sun.xml.draw</mimeType> - <parentType>application/zip</parentType> - <extensions>sxd</extensions> -</description> - -<description> - <mimeType>application/vnd.sun.xml.impress</mimeType> - <parentType>application/zip</parentType> - <extensions>sxi</extensions> -</description> - -<description> - <mimeType>application/vnd.sun.xml.writer</mimeType> - <parentType>application/zip</parentType> - <extensions>sxw</extensions> -</description> - -<description> - <mimeType>application/vnd.sun.xml.math</mimeType> - <parentType>application/zip</parentType> - <extensions>sxm</extensions> -</description> - -<description> - <mimeType>application/vnd.sun.xml.calc.template</mimeType> - <parentType>application/zip</parentType> - <extensions>stc</extensions> -</description> - -<description> - <mimeType>application/vnd.sun.xml.draw.template</mimeType> - <parentType>application/zip</parentType> - <extensions>std</extensions> -</description> - -<description> - <mimeType>application/vnd.sun.xml.impress.template</mimeType> - <parentType>application/zip</parentType> - <extensions>sti</extensions> -</description> - -<description> - <mimeType>application/vnd.sun.xml.writer.template</mimeType> - <parentType>application/zip</parentType> - <extensions>stw</extensions> -</description> - -<!-- ================== OpenDocument Types ================== --> - -<description> - <mimeType>application/vnd.oasis.opendocument.spreadsheet</mimeType> - <parentType>application/zip</parentType> - <extensions>ods</extensions> -</description> - -<description> - <mimeType>application/vnd.oasis.opendocument.graphics</mimeType> - <parentType>application/zip</parentType> - <extensions>odg</extensions> -</description> - -<description> - <mimeType>application/vnd.oasis.opendocument.presentation</mimeType> - <parentType>application/zip</parentType> - <extensions>odp</extensions> -</description> - -<description> - <mimeType>application/vnd.oasis.opendocument.text</mimeType> - <parentType>application/zip</parentType> - <extensions>odt</extensions> -</description> - -<description> - <mimeType>application/vnd.oasis.opendocument.formula</mimeType> - <parentType>application/zip</parentType> - <extensions>odf</extensions> -</description> - -<description> - <mimeType>application/vnd.oasis.opendocument.spreadsheet-template</mimeType> - <parentType>application/zip</parentType> - <extensions>ots</extensions> -</description> - -<description> - <mimeType>application/vnd.oasis.opendocument.graphics-template</mimeType> - <parentType>application/zip</parentType> - <extensions>otg</extensions> -</description> - -<description> - <mimeType>application/vnd.oasis.opendocument.presentation-template</mimeType> - <parentType>application/zip</parentType> - <extensions>otp</extensions> -</description> - -<description> - <mimeType>application/vnd.oasis.opendocument.text-template</mimeType> - <parentType>application/zip</parentType> - <extensions>ott</extensions> -</description> - -<!-- ================== MS Office Types (up to MS Office 2003, excluding the XML-based ones) ================== --> -<!-- some research with xvi32 seems to indicate that actually the first 32 --> -<!-- bytes of MS Office files are always the same --> - -<description> - <mimeType>application/vnd.ms-office</mimeType> - <magicNumber encoding="hex">d0 cf 11 e0 a1 b1 1a e1 00 00 00 00 00 00 00 00</magicNumber> -</description> - -<description> - <mimeType>application/vnd.ms-word</mimeType> - <parentType>application/vnd.ms-office</parentType> - <extensions>doc,dot</extensions> -</description> - -<description> - <mimeType>application/vnd.ms-excel</mimeType> - <parentType>application/vnd.ms-office</parentType> - <extensions>xls,xlt</extensions> -</description> - -<description> - <mimeType>application/vnd.ms-powerpoint</mimeType> - <parentType>application/vnd.ms-office</parentType> - <extensions>ppt,pot,pps</extensions> -</description> - -<description> - <mimeType>application/vnd.visio</mimeType> - <parentType>application/vnd.ms-office</parentType> - <extensions>vsd,vst,vss</extensions> - - <!-- Note: there are also .vdx, .vsx and .vtx files (XML for Visio - Drawing/Stencil/Template Files) but these are XML files, not binary Office files. - As long as the Extractor handling application/vnd.visio does not support these - formats, we're actually better off treating those files as general XML documents. - See e.g. http://msdn2.microsoft.com/en-us/library/aa218409(office.10).aspx for - a description of the VDX format. --> -</description> - -<description> - <mimeType>application/x-mspublisher</mimeType> - <parentType>application/vnd.ms-office</parentType> - <extensions>pub</extensions> -</description> - -<description> - <mimeType>application/x-slk</mimeType> - <extensions>slk,sylk</extensions> -</description> - -<!-- ================== MS Office 2007/OpenXML/XPS Types ================== --> - -<description> - <mimeType>application/vnd.openxmlformats-officedocument.wordprocessingml</mimeType> - <parentType>application/zip</parentType> - <extensions>docx,docm,dotx,dotm</extensions> -</description> - -<description> - <mimeType>application/vnd.openxmlformats-officedocument.spreadsheetml</mimeType> - <parentType>application/zip</parentType> - <extensions>xlsx,xlsm,xltx,xltm,xlsb,xlam</extensions> -</description> - -<description> - <mimeType>application/vnd.openxmlformats-officedocument.presentationml</mimeType> - <parentType>application/zip</parentType> - <extensions>pptx,pptm,potx,potm,ppam,ppsx,ppsm</extensions> -</description> - -<description> - <mimeType>application/vnd.ms-xpsdocument</mimeType> - <parentType>application/zip</parentType> - <extensions>xps</extensions> -</description> - -<!-- ================== StarOffice 5.x Types ================== --> -<!-- they have the same magic number as MSOffice --> - -<description> - <mimeType>application/vnd.stardivision.impress</mimeType> - <parentType>application/vnd.ms-office</parentType> - <extensions>sdd</extensions> -</description> - -<description> - <mimeType>application/vnd.stardivision.draw</mimeType> - <parentType>application/vnd.ms-office</parentType> - <extensions>sda</extensions> -</description> - -<description> - <mimeType>application/vnd.stardivision.writer</mimeType> - <parentType>application/vnd.ms-office</parentType> - <extensions>sdw</extensions> -</description> - -<description> - <mimeType>application/vnd.stardivision.calc</mimeType> - <parentType>application/vnd.ms-office</parentType> - <extensions>sdc</extensions> -</description> - -<!-- ================== MS Works Types ================== --> -<!-- has either MS Office's magic number or its own --> - -<description> - <mimeType>application/vnd.ms-works</mimeType> <!-- wps = Works documents, xlr = newer Works spreadsheets --> - <parentType>application/vnd.ms-office</parentType> - <extensions>wps,xlr</extensions> -</description> - -<description> - <mimeType>application/vnd.ms-works</mimeType> <!-- older Works Spreadsheets --> - <extensions>wks</extensions> - <magicNumber encoding="hex">ff 00 02 00 04 04 05 54 02 00</magicNumber> -</description> - -<description> - <mimeType>application/vnd.ms-works-db</mimeType> - <parentType>application/vnd.ms-office</parentType> - <extensions>wdb</extensions> -</description> - -<!-- ================== Corel Types ================== --> - -<description> - <mimeType>application/vnd.wordperfect</mimeType> - <extensions>wp,wpd,wpf,wpt,wpw,wp5,wp51,wp6,w60,w61</extensions> - <magicNumber encoding="hex">ff 57 50 43</magicNumber> -</description> - -<description> - <mimeType>application/x-quattropro</mimeType> <!-- user for Quattro Pro 7+ --> - <parentType>application/vnd.ms-office</parentType> - <extensions>qpw,wb3</extensions> -</description> - -<description> - <mimeType>application/wb2</mimeType> <!-- used for a.o. Quattro Pro 6 --> - <extensions>wb2</extensions> - <magicNumber encoding="hex">00 00 02 00</magicNumber> -</description> - -<description> - <!-- Presentations files either have the MS Office or WordPerfect magic number --> - <mimeType>application/presentations</mimeType> - <parentType>application/vnd.ms-office</parentType> - <extensions>shw</extensions> -</description> - -<description> - <mimeType>application/presentations</mimeType> - <parentType>application/vnd.wordperfect</parentType> - <extensions>shw</extensions> -</description> - -<!-- ================== E-mail and News Types ================== --> - -<description> - <mimeType>message/rfc822</mimeType> - <extensions>eml,mht,mhtml</extensions> - - <!-- note: magic numbers, not magic strings: MIME messages are always in US-ASCII --> - <magicNumber encoding="string">Return-Path:</magicNumber> - <magicNumber encoding="string">From:</magicNumber> - <magicNumber encoding="string">Date:</magicNumber> - <magicNumber encoding="string">Forward to</magicNumber> - <magicNumber encoding="string">Pipe to</magicNumber> - <magicNumber encoding="string">Relay-Version:</magicNumber> - <magicNumber encoding="string">#! rnews</magicNumber> - <magicNumber encoding="string">N#! rnews</magicNumber> - - <!-- the following could have been a "message/news" description, but we've - decided to label them also as message/rfc822, as the distinction is very - small, apps can typically treat both equally and they are - very hard to differentiate using magic numbers anyway --> - <magicNumber encoding="string">Path:</magicNumber> - <magicNumber encoding="string">Xref:</magicNumber> - <magicNumber encoding="string">Article</magicNumber> -</description> - -<description> - <mimeType>application/mbox</mimeType> - <magicNumber encoding="string">From </magicNumber> -</description> - -<description> - <mimeType>application/vnd.ms-outlook</mimeType> - <extensions>pst</extensions> - <magicNumber encoding="hex">21 42 44 4e</magicNumber> -</description> - -<description> - <mimeType>application/vnd.ms-outlookexpress</mimeType> - <extensions>dbx</extensions> - <magicNumber encoding="hex">4a 4d 46 36 03 00 10 00</magicNumber> - <magicNumber encoding="hex">cf ad 12 fe c5 fd 74 6f 66 e3 d1 11 9a 4e 00 c0</magicNumber> -</description> - -<!-- ================== Other Document Types ================== --> - -<description> - <mimeType>text/plain</mimeType> - <extensions>txt,1st,me,text,ans,asc,csv,tsv,faq,c,h,tex,latex,pv,log,nt</extensions> -</description> - -<description> - <mimeType>text/java</mimeType> - <extensions>java</extensions> -</description> - -<description> - <mimeType>application/x-java-manifest</mimeType> - <magicString>Manifest-Version:</magicString> -</description> - -<description> - <mimeType>text/rtf</mimeType> - <extensions>rtf</extensions> - <magicNumber encoding="string">{\rtf</magicNumber> -</description> - -<description> - <mimeType>application/pdf</mimeType> - <extensions>pdf</extensions> - <magicNumber encoding="string">%PDF-</magicNumber> -</description> - -<description> - <mimeType>application/x-framemaker</mimeType> - <extensions>book,fm,mif,mf</extensions> - <magicNumber encoding="string"><MakerFile</magicNumber> - <magicNumber encoding="string"><MIFFile</magicNumber> - <magicNumber encoding="string"><MakerDictionary</magicNumber> - <magicNumber encoding="string"><MakerScreenFont</magicNumber> - <magicNumber encoding="string"><MML</magicNumber> - <magicNumber encoding="string"><BookFile</magicNumber> - <magicNumber encoding="string"><Maker</magicNumber> -</description> - -<description> - <mimeType>application/postscript</mimeType> - <extensions>ps</extensions> - <magicNumber encoding="string">%!</magicNumber> -</description> - -<description> - <mimeType>application/winhlp</mimeType> - <extensions>hlp</extensions> - <magicNumber encoding="string">?_</magicNumber> -</description> - -<description> - <mimeType>application/x-chm</mimeType> - <extensions>chm</extensions> - <magicNumber encoding="string">ITSF</magicNumber> -</description> - -<description> - <mimeType>application/x-freemind</mimeType> - <extensions>mm</extensions> - <magicNumber encoding="string"><map version</magicNumber> -</description> - -<!-- ================== Executables and similar stuff ================== --> - -<description> - <mimeType>application/x-ms-dos-executable</mimeType> - <extensions>exe</extensions> - <magicNumber encoding="string">MZ</magicNumber> -</description> - -<description> - <mimeType>application/x-ms-scr</mimeType> - <parentType>application/x-ms-dos-executable</parentType> - <extensions>scr</extensions> -</description> - -<description> - <mimeType>application/x-ms-shortcut</mimeType> - <extensions>lnk</extensions> - <magicNumber encoding="hex">4c 00 00 00 01 14 02 00 00 00 00 00 c0 00 00 00 00 00 00 46</magicNumber> -</description> - -<description> - <mimeType>application/bat</mimeType> - <extensions>bat</extensions> -</description> - -<description> - <mimeType>application/x-java-class</mimeType> - <extensions>class</extensions> - <magicNumber encoding="hex">ca fe ba be</magicNumber> -</description> - -<description> - <mimeType>application/x-sh</mimeType> - <extensions>sh</extensions> - <magicString>#!/bin/sh</magicString> - <magicString>#!/usr/bin/sh</magicString> -</description> - -<description> - <mimeType>application/x-csh</mimeType> - <extensions>csh</extensions> - <magicString>#!/bin/csh</magicString> - <magicString>#!/usr/bin/csh</magicString> -</description> - -<description> - <mimeType>application/x-bash</mimeType> - <extensions>bash</extensions> - <magicString>#!/bin/bash</magicString> - <magicString>#!/usr/bin/bash</magicString> -</description> - -<description> - <mimeType>application/x-ksh</mimeType> - <extensions>ksh</extensions> - <magicString>#!/bin/ksh</magicString> - <magicString>#!/usr/bin/ksh</magicString> -</description> - -<description> - <mimeType>application/x-tsh</mimeType> - <extensions>tsh</extensions> - <magicString>#!/bin/tsh</magicString> - <magicString>#!/usr/bin/tsh</magicString> -</description> - -<description> - <mimeType>application/x-applescript</mimeType> - <extensions>scpt</extensions> -</description> - -<!-- ================== Image Types ================== --> - -<description> - <mimeType>image/bmp</mimeType> - <extensions>bmp</extensions> - <magicNumber encoding="string">BM</magicNumber> -</description> - -<description> - <mimeType>image/gif</mimeType> - <extensions>gif</extensions> - <magicNumber encoding="string">GIF8</magicNumber> -</description> - -<description> - <mimeType>image/jpeg</mimeType> - <extensions>jpg,jpeg</extensions> - <magicNumber encoding="hex">ff d8 ff</magicNumber> -</description> - -<description> - <mimeType>image/png</mimeType> - <extensions>png</extensions> - <magicNumber encoding="hex">89 50 4e 47 0d 0a 1a</magicNumber> -</description> - -<description> - <mimeType>image/svg+xml</mimeType> - <extensions>svg</extensions> - <parentType>text/xml</parentType> -</description> - -<description> - <mimeType>image/x-icon</mimeType> - <extensions>ico</extensions> - <magicNumber encoding="hex">00 00 01 00</magicNumber> -</description> - -<description> - <mimeType>image/x-raw</mimeType> - <extensions>raw</extensions> -</description> - -<description> - <mimeType>image/x-tga</mimeType> - <extensions>tga</extensions> -</description> - -<description> - <mimeType>image/x-portable-bitmap</mimeType> - <extensions>pbm</extensions> - <magicNumber encoding="string">P1</magicNumber> - <magicNumber encoding="string">P4</magicNumber> -</description> - -<description> - <mimeType>image/x-portable-greymap</mimeType> - <extensions>pgm</extensions> - <magicNumber encoding="string">P2</magicNumber> - <magicNumber encoding="string">P5</magicNumber> -</description> - -<description> - <mimeType>image/x-portable-pixmap</mimeType> - <extensions>ppm</extensions> - <magicNumber encoding="string">P3</magicNumber> - <magicNumber encoding="string">P6</magicNumber> -</description> - -<description> - <mimeType>image/tiff</mimeType> - <extensions>tif,tiff</extensions> - <magicNumber encoding="hex">4d 4d 00 2a</magicNumber> - <magicNumber encoding="hex">49 49 2a 00</magicNumber> -</description> - -<description> - <mimeType>image/dng</mimeType> - <extensions>dng</extensions> - <parentType>image/tiff</parentType> -</description> - -<description> - <mimeType>image/x-paintshoppro</mimeType> - <extensions>psp</extensions> - <magicNumber encoding="string">Paint Shop Pro Image File</magicNumber> -</description> - -<description> - <mimeType>image/xcf</mimeType> - <extensions>xcf</extensions> - <magicNumber encoding="hex">67 69 6d 70 20 78 63 66 20</magicNumber> -</description> - -<description> - <mimeType>application/vnd.corel-draw</mimeType> - <extensions>cdr</extensions> - <magicNumber encoding="string" offset="8">CDRA</magicNumber> -</description> - -<description> - <mimeType>image/x-xfig</mimeType> - <extensions>fig</extensions> - <magicNumber encoding="string">#FIG</magicNumber> -</description> - -<description> - <mimeType>image/wmf</mimeType> - <extensions>wmf</extensions> - <magicNumber encoding="hex">d7 cd c6 9a 00 00</magicNumber> - <magicNumber encoding="hex">01 00 09 00 00 03</magicNumber> -</description> - -<description> - <mimeType>image/x-xbitmap</mimeType> - <extensions>xbm</extensions> -</description> - -<description> - <mimeType>image/xpm</mimeType> - <extensions>xpm</extensions> - <magicNumber encoding="hex">2f 2a 20 58 50 4d 20 2a 2f 0a</magicNumber> -</description> - -<description> - <mimeType>image/x-dwf</mimeType> - <extensions>dwf</extensions> - <magicNumber encoding="string">(DWF</magicNumber> -</description> - -<description> - <mimeType>image/x-dwg</mimeType> - <extensions>dwg</extensions> - <magicNumber encoding="string">AC</magicNumber> -</description> - -<description> - <mimeType>image/x-dxf</mimeType> - <extensions>dxf</extensions> -</description> - -<description> - <mimeType>image/x-itunes-albumartwork</mimeType> - <extensions>itc</extensions> - <magicNumber encoding="string" offset="4">itch</magicNumber> -</description> - -<!-- ================== Multimedia Types ================== --> - -<description> - <mimeType>video/x-ms-asf</mimeType> - <extensions>asf</extensions> - <magicNumber encoding="hex">30 26 b2 75 8e 66 cf 11 a6 d9 00 aa 00 62 ce 6c</magicNumber> -</description> - -<description> - <mimeType>video/x-ms-asx</mimeType> - <extensions>asx</extensions> - <magicString><asx</magicString> - <magicString><ASX</magicString> -</description> - -<description> - <mimeType>audio/x-ms-wax</mimeType> - <extensions>wax</extensions> -</description> - -<description> - <mimeType>video/x-ms-wvx</mimeType> - <extensions>wvx</extensions> -</description> - -<description> - <mimeType>video/x-ms-wmx</mimeType> - <extensions>wmx</extensions> -</description> - -<description> - <mimeType>video/x-msvideo</mimeType> - <extensions>avi</extensions> - <magicNumber encoding="hex" offset="8">41 56 49 20</magicNumber> -</description> - -<description> - <!-- This MIME type was invented to let the wmv and wma media types - share the magic number. Differentiation between these two files - is only possible based on file name extension. --> - - <mimeType>application/x-ms-wm</mimeType> - <magicNumber encoding="hex">30 26 b2 75 8e 66 cf 11 a6 d9 00 aa 00 62 ce 6c</magicNumber> -</description> - -<description> - <mimeType>audio/x-ms-wma</mimeType> - <parentType>application/x-ms-wm</parentType> - <extensions>wma</extensions> -</description> - -<description> - <mimeType>video/x-ms-wmv</mimeType> - <parentType>application/x-ms-wm</parentType> - <extensions>wmv,wm</extensions> -</description> - -<description> - <mimeType>video/quicktime</mimeType> - <extensions>mov</extensions> - <magicNumber encoding="string" offset="4">moov</magicNumber> -</description> - -<description> - <mimeType>video/mpeg</mimeType> - <extensions>mpg,mpeg</extensions> - <magicNumber encoding="hex">00 00 01 b3</magicNumber> - <magicNumber encoding="hex">00 00 01 ba</magicNumber> -</description> - -<description> - <mimeType>application/x-shockwave-flash</mimeType> - <extensions>swf</extensions> - <magicNumber encoding="hex">46 57 53</magicNumber> -</description> - -<description> - <mimeType>application/x-ogg</mimeType> - <extensions>ogg</extensions> - <magicNumber encoding="string">OggS</magicNumber> -</description> - -<description> - <mimeType>application/vnd.rn-realmedia</mimeType> - <extensions>rm,ram</extensions> - <magicNumber encoding="string">.RMF</magicNumber> - <magicNumber encoding="string">rtsp://</magicNumber> -</description> - -<description> - <mimeType>audio/x-wav</mimeType> - <extensions>wav</extensions> - <magicNumber encoding="string" offset="8">WAVE</magicNumber> -</description> - -<description> - <mimeType>audio/mpeg</mimeType> - <extensions>mp3,mp2</extensions> - <magicNumber encoding="string">ID3</magicNumber> -</description> - -<description> - <mimeType>audio/midi</mimeType> - <extensions>mid,midi,rmi</extensions> - <magicNumber encoding="string">MThd</magicNumber> <!-- for regular MIDI files --> - <magicNumber encoding="string" offset="8">RMI</magicNumber> <!-- for .rmi files --> -</description> - -<description> - <mimeType>video/x-msvideo</mimeType> - <extensions>avi</extensions> - <magicNumber encoding="hex" offset="8">41 56 49 20</magicNumber> -</description> - -<description> - <mimeType>video/mp4</mimeType> - <extensions>mp4,mpg4,m4v,mp4v,divx,xvid,264</extensions> -</description> - -<description> - <mimeType>audio/mp4</mimeType> - <extensions>m4a,m4p</extensions> -</description> - -<description> - <mimeType>video/3gpp</mimeType> - <extensions>3gp,3g2</extensions> -</description> - -<description> - <mimeType>audio/x-aiff</mimeType> - <extensions>aiff</extensions> - <magicNumber encoding="string">FORM</magicNumber> -</description> - -<description> - <mimeType>application/x-ms-wmd</mimeType> - <extensions>wmd</extensions> - <parentType>application/zip</parentType> -</description> - -<description> - <mimeType>video/x-flv</mimeType> - <extensions>flv</extensions> - <magicNumber encoding="string">FLV</magicNumber> -</description> - -<description> - <mimeType>audio/flac</mimeType> - <extensions>flac</extensions> - <magicNumber encoding="hex">66 4c 61 43 00 00 00 22</magicNumber> -</description> - -<description> - <mimeType>application/smil</mimeType> - <extensions>smi,smil</extensions> -</description> - -<!-- ================== Play List Types ================== --> - -<description> - <mimeType>application/x-winamp-playlist</mimeType> - <extensions>m3u</extensions> - <magicNumber encoding="string">#EXTM3U</magicNumber> -</description> - -<description> - <mimeType>audio/x-b4s</mimeType> - <parentType>text/xml</parentType> - <extensions>b4s</extensions> -</description> - -<description> - <mimeType>application/xspf+xml</mimeType> - <parentType>text/xml</parentType> - <extensions>xspf</extensions> -</description> - -<description> - <mimeType>audio/x-scpls</mimeType> - <extensions>pls</extensions> - <magicNumber encoding="string">[playlist]</magicNumber> -</description> - -<description> - <mimeType>audio/x-kpl</mimeType> - <extensions>kpl</extensions> - <magicNumber encoding="string">[Metadata] artist=</magicNumber> -</description> - -<description> - <mimeType>audio/x-kapsule</mimeType> - <parentType>text/xml</parentType> - <extensions>p2p</extensions> -</description> - -<description> - <mimeType>audio/x-magma</mimeType> - <extensions>magma</extensions> - <magicString>#MAGMA</magicString> -</description> - -<description> - <mimeType>vnd.ms-wpl</mimeType> - <extensions>wpl</extensions> - <magicNumber encoding="string"><?wpl</magicNumber> -</description> - -<!-- ================== Security & Integrity ================== --> - -<description> - <mimeType>application/pgp-signature</mimeType> - <magicNumber encoding="string">-----BEGIN PGP SIGNATURE-----</magicNumber> -</description> - -<description> - <mimeType>application/x-md5</mimeType> - <extensions>md5</extensions> - <magicNumber encoding="string">MD5</magicNumber> -</description> - -<description> - <mimeType>application/x-sha</mimeType> - <extensions>sha,sha0,sha1,sha2,sha256,sha512</extensions> -</description> - -<description> - <mimeType>application/x-axcrypt</mimeType> - <extensions>axx</extensions> - <magicNumber encoding="hex">c0 b9 07 2e 4f 93 f1 46 a0 15 79 2c a1 d9 e8 21 15 00 00 00 02</magicNumber> -</description> - -<!-- ================== Miscellaneous Types ================== --> - -<description> - <mimeType>text/calendar</mimeType> - <extensions>ics</extensions> - <magicNumber encoding="string">BEGIN:VCALENDAR</magicNumber> -</description> - -<description> - <mimeType>application/x-mozilla-addressbook</mimeType> - <extensions>mab</extensions> -</description> - -<description> - <mimeType>application/x-ms-registry</mimeType> - <extensions>reg</extensions> - <magicNumber encoding="string">regf</magicNumber> -</description> - -<description> - <mimeType>application/x-bittorrent</mimeType> - <extensions>torrent</extensions> - <magicNumber encoding="string">d8:announce</magicNumber> -</description> - -<description> - <mimeType>application/x-pom</mimeType> - <extensions>pom</extensions> - <magicNumber encoding="string"><project></magicNumber> -</description> - -<description> - <mimeType>application/x-ms-wmz</mimeType> - <extensions>wmz</extensions> - <parentType>application/zip</parentType> -</description> - -<description> - <mimeType>text/x-vcard</mimeType> - <extensions>vcf,vcard</extensions> - <magicString>BEGIN:VCARD</magicString> -</description> - -</mimeTypes> \ No newline at end of file Copied: aperture/trunk/core/mime-identifier/magic/src/main/resources/org/semanticdesktop/aperture/mime/identifier/magic/mimetypes.xml (from rev 1647, aperture/trunk/core/mime-identifier/magic/src/main/java/org/semanticdesktop/aperture/mime/identifier/magic/mimetypes.xml) =================================================================== --- aperture/trunk/core/mime-identifier/magic/src/main/resources/org/semanticdesktop/aperture/mime/identifier/magic/mimetypes.xml (rev 0) +++ aperture/trunk/core/mime-identifier/magic/src/main/resources/org/semanticdesktop/aperture/mime/identifier/magic/mimetypes.xml 2009-02-17 12:01:49 UTC (rev 1649) @@ -0,0 +1,1182 @@ +<?xml version='1.0' encoding='UTF-8'?> + +<mimeTypes> + +<!-- + +COPYRIGHT +========= + +Copyright (c) 2005 - 2008 Aduna. +All rights reserved. + +Licensed under the Aperture BSD-style license. + + +CONTENTS +======== + +This file describes typical magic number and file extensions of a variety of document formats. + +Below is a list of description elements. Each description element describes a way to identify a +MIME type of a binary resource, based on magic number sequences and/or file extentions heuristics. + +A description can refer to a parent description. This means that besides the requirements +description, a resource should also match the requirements of the parent type (recursively) +in order to match the child description. Examples are OpenOffice documents which are a +special type of zip files and therefore have application/zip as parent type. + +This file denotes a preferential order: when a resource matches several descriptions, +the one listed first overrules all others. This does not apply to the case where one +description has the other as parent description, in that case the most specific description +is preferred. + +Each description element has the following contents: + +* mimeType: the MIME type whose characteristics are described. This element is mandatory. + Please use the most standard MIME type for this category. This is NOT the place to list + all alternative equivalent MIME types. + +* parentType: the parent type that must also be detected in order for this description to match. + This element is optional and defaults to no parent type. + +* extensions: a comma-separated list of common file extensions used for this type, e.g. "html,htm". + This element is optional and defaults to an empty list. + +* allowsLeadingWhiteSpace: a boolean ("true"/"false") that indicates whether the file format allows + white space before the identifying parts described in the condition occurs. A typical example is + text/html, which allows a file to start with white space before the <html> element. + This element is optional and defaults to "false". + +* magicNumber: a byte sequence that is indicative for the described MIME type. There can be zero + or more magicNumber elements. + +* magicString: a character sequence that is indicative for the described MIME type. There can be zero + or more magicString elelements. + +The magicNumber element has the byte sequence as text content. The encoding is specified in the +mandatory encoding attribute. Use "hex" as encoding type to indicate that the element content +contains the byte sequence in hexadecimal encoding, e.g. "ca fe ba be 00" (without the quotes). +Use "string" as encoding type to indicate that the element content contains the bytes in UTF-8 +encoding, e.g. "PK" (without the quotes) for the application/zip MIME type. + +The magicString element has a character sequence as text content. The difference between... [truncated message content] |
From: <her...@us...> - 2009-02-17 13:48:52
|
Revision: 1654 http://aperture.svn.sourceforge.net/aperture/?rev=1654&view=rev Author: herko_ter_horst Date: 2009-02-17 13:48:48 +0000 (Tue, 17 Feb 2009) Log Message: ----------- Mavenized accessor implementations. Modified Paths: -------------- aperture/trunk/core/accessor/file/pom.xml aperture/trunk/core/accessor/http/pom.xml aperture/trunk/core/accessor/pom.xml aperture/trunk/default/pom.xml Added Paths: ----------- aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/bundle/AccessorServiceActivator.java aperture/trunk/core/accessor/file/src/main/java/org/semanticdesktop/aperture/accessor/file/bundle/ aperture/trunk/core/accessor/file/src/main/java/org/semanticdesktop/aperture/accessor/file/bundle/FileAccessorActivator.java aperture/trunk/core/accessor/http/src/main/java/org/semanticdesktop/aperture/accessor/http/bundle/ aperture/trunk/core/accessor/http/src/main/java/org/semanticdesktop/aperture/accessor/http/bundle/HttpAccessorActivator.java aperture/trunk/default/accessor/ aperture/trunk/default/accessor/pom.xml aperture/trunk/default/accessor/src/ aperture/trunk/default/accessor/src/main/ aperture/trunk/default/accessor/src/main/java/ aperture/trunk/default/accessor/src/main/java/org/ aperture/trunk/default/accessor/src/main/java/org/semanticdesktop/ aperture/trunk/default/accessor/src/main/java/org/semanticdesktop/aperture/ aperture/trunk/default/accessor/src/main/java/org/semanticdesktop/aperture/accessor/ aperture/trunk/default/accessor/src/main/java/org/semanticdesktop/aperture/accessor/bundle/ aperture/trunk/default/accessor/src/main/java/org/semanticdesktop/aperture/accessor/bundle/DefaultAccessorServiceActivator.java aperture/trunk/default/accessor/src/main/java/org/semanticdesktop/aperture/accessor/impl/ aperture/trunk/default/accessor/src/main/java/org/semanticdesktop/aperture/accessor/impl/DefaultDataAccessorRegistry.java aperture/trunk/default/accessor/src/main/resources/ aperture/trunk/default/accessor/src/main/resources/org/ aperture/trunk/default/accessor/src/main/resources/org/semanticdesktop/ aperture/trunk/default/accessor/src/main/resources/org/semanticdesktop/aperture/ aperture/trunk/default/accessor/src/main/resources/org/semanticdesktop/aperture/accessor/ aperture/trunk/default/accessor/src/main/resources/org/semanticdesktop/aperture/accessor/impl/ aperture/trunk/default/accessor/src/main/resources/org/semanticdesktop/aperture/accessor/impl/defaults.xml aperture/trunk/default/accessor/src/test/ aperture/trunk/default/accessor/src/test/java/ aperture/trunk/default/accessor/src/test/java/org/ aperture/trunk/default/accessor/src/test/java/org/semanticdesktop/ aperture/trunk/default/accessor/src/test/java/org/semanticdesktop/aperture/ Removed Paths: ------------- aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/impl/DefaultDataAccessorRegistry.java aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/impl/defaults.xml Property Changed: ---------------- aperture/trunk/core/accessor/file/ aperture/trunk/core/accessor/http/ Added: aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/bundle/AccessorServiceActivator.java =================================================================== --- aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/bundle/AccessorServiceActivator.java (rev 0) +++ aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/bundle/AccessorServiceActivator.java 2009-02-17 13:48:48 UTC (rev 1654) @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2006 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.accessor.bundle; + +import java.util.Hashtable; + +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceEvent; +import org.osgi.framework.ServiceListener; +import org.osgi.framework.ServiceReference; +import org.osgi.framework.ServiceRegistration; +import org.semanticdesktop.aperture.accessor.DataAccessorFactory; +import org.semanticdesktop.aperture.accessor.DataAccessorRegistry; +import org.semanticdesktop.aperture.accessor.impl.DataAccessorRegistryImpl; + +public class AccessorServiceActivator implements BundleActivator, ServiceListener { + + private BundleContext bc = null; + + private ServiceRegistration registration; + + private DataAccessorRegistry registry; + + public void start(BundleContext context) throws Exception { + + bc = context; + registry = new DataAccessorRegistryImpl(); + registration = bc.registerService(DataAccessorRegistry.class.getName(), registry, + new Hashtable()); + + String filter = "(objectclass=" + DataAccessorFactory.class.getName() + ")"; + bc.addServiceListener(this, filter); + + ServiceReference references[] = bc.getServiceReferences(null, filter); + + for (int i = 0; references != null && i < references.length; i++) { + this.serviceChanged(new ServiceEvent(ServiceEvent.REGISTERED, references[i])); + } + + + } + + public void stop(BundleContext context) throws Exception { + registration.unregister(); + registration = null; + bc = null; + } + + public void serviceChanged(ServiceEvent event) { + DataAccessorFactory factory; + switch (event.getType()) { + case ServiceEvent.REGISTERED: + factory = (DataAccessorFactory) bc.getService(event + .getServiceReference()); + registry.add(factory); + break; + case ServiceEvent.MODIFIED: + factory = (DataAccessorFactory) bc.getService(event + .getServiceReference()); + registry.remove(factory); + registry.add(factory); + break; + case ServiceEvent.UNREGISTERING: + factory = (DataAccessorFactory) bc.getService(event + .getServiceReference()); + registry.remove(factory); + break; + } + } +} Deleted: aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/impl/DefaultDataAccessorRegistry.java =================================================================== --- aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/impl/DefaultDataAccessorRegistry.java 2009-02-17 13:27:12 UTC (rev 1653) +++ aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/impl/DefaultDataAccessorRegistry.java 2009-02-17 13:48:48 UTC (rev 1654) @@ -1,125 +0,0 @@ -/* - * Copyright (c) 2005 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. - * All rights reserved. - * - * Licensed under the Aperture BSD-style license. - */ -package org.semanticdesktop.aperture.accessor.impl; - -import java.io.BufferedInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.Map; - -import javax.xml.parsers.ParserConfigurationException; - -import org.semanticdesktop.aperture.accessor.DataAccessorFactory; -import org.semanticdesktop.aperture.util.ResourceUtil; -import org.semanticdesktop.aperture.util.SimpleSAXAdapter; -import org.semanticdesktop.aperture.util.SimpleSAXParser; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.xml.sax.SAXException; - -/** - * DefaultDataAccessorRegistry provides the complete set of DataAccessorFactories available in Aperture. - * - * <p> - * The main purpose of this class is to be able to conveniently access the set of DataAccessorFactories in - * non-OSGi applications, which take care of this initialization in a different way. A single line of code - * gives you the entire set without requiring further setup. - * - * <p> - * The set of factory class names are loaded from an XML file which can optionally be specified to the - * constructor. This class requires all the listed classes to have a no-argument constructor. - */ -public class DefaultDataAccessorRegistry extends DataAccessorRegistryImpl { - - private static final String DEFAULT_FILE = "org/semanticdesktop/aperture/accessor/impl/defaults.xml"; - - private static final String ACCESSOR_FACTORY_TAG = "dataAccessorFactory"; - - private static final String NAME_TAG = "name"; - - public DefaultDataAccessorRegistry() { - try { - InputStream stream = ResourceUtil.getInputStream(DEFAULT_FILE, DefaultDataAccessorRegistry.class); - BufferedInputStream buffer = new BufferedInputStream(stream); - parse(buffer); - buffer.close(); - } - catch (IOException e) { - throw new RuntimeException("unable to parse " + DEFAULT_FILE, e); - } - } - - public DefaultDataAccessorRegistry(InputStream stream) throws IOException { - parse(stream); - } - - private void parse(InputStream stream) throws IOException { - try { - // Parse the document - SimpleSAXParser parser = new SimpleSAXParser(); - parser.setListener(new DataAccessorParser()); - parser.parse(stream); - } - catch (ParserConfigurationException e) { - IOException ie = new IOException(e.getMessage()); - ie.initCause(e); - throw ie; - } - catch (SAXException e) { - IOException ie = new IOException(e.getMessage()); - ie.initCause(e); - throw ie; - } - } - - private class DataAccessorParser extends SimpleSAXAdapter { - - private Logger logger = LoggerFactory.getLogger(getClass()); - - private boolean insideFactoryElement = false; - - public void startTag(String tagName, Map atts, String text) throws SAXException { - if (ACCESSOR_FACTORY_TAG.equals(tagName)) { - insideFactoryElement = true; - } - else if (NAME_TAG.equals(tagName) && insideFactoryElement && text != null) { - processClassName(text); - } - } - - public void endTag(String tagName) { - if (ACCESSOR_FACTORY_TAG.equals(tagName)) { - insideFactoryElement = false; - } - } - - private void processClassName(String className) { - className = className.trim(); - if (!className.equals("")) { - try { - Class<?> clazz = Class.forName(className); - Object instance = clazz.newInstance(); - DataAccessorFactory factory = (DataAccessorFactory) instance; - add(factory); - } - catch (ClassNotFoundException e) { - logger.warn("unable to find class " + className + ", ignoring", e); - } - catch (InstantiationException e) { - logger.warn("unable to instantiate class " + className + ", ignoring", e); - } - catch (IllegalAccessException e) { - logger.warn("unable to access class " + className + ", ignoring", e); - } - catch (ClassCastException e) { - logger.warn("unable to cast instance to " + DataAccessorFactory.class.getName() - + ", ignoring", e); - } - } - } - } -} Deleted: aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/impl/defaults.xml =================================================================== --- aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/impl/defaults.xml 2009-02-17 13:27:12 UTC (rev 1653) +++ aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/impl/defaults.xml 2009-02-17 13:48:48 UTC (rev 1654) @@ -1,14 +0,0 @@ -<?xml version='1.0' encoding='UTF-8'?> - -<dataAccessorFactories> - <dataAccessorFactory> - <name>org.semanticdesktop.aperture.accessor.file.FileAccessorFactory</name> - </dataAccessorFactory> - <dataAccessorFactory> - <name>org.semanticdesktop.aperture.accessor.http.HttpAccessorFactory</name> - </dataAccessorFactory> - <dataAccessorFactory> - <!-- Note: this class implements both AccessorFactory and CrawlerFactory --> - <name>org.semanticdesktop.aperture.crawler.imap.ImapCrawlerFactory</name> - </dataAccessorFactory> -</dataAccessorFactories> \ No newline at end of file Property changes on: aperture/trunk/core/accessor/file ___________________________________________________________________ Added: svn:ignore + .classpath .project .settings target Modified: aperture/trunk/core/accessor/file/pom.xml =================================================================== --- aperture/trunk/core/accessor/file/pom.xml 2009-02-17 13:27:12 UTC (rev 1653) +++ aperture/trunk/core/accessor/file/pom.xml 2009-02-17 13:48:48 UTC (rev 1654) @@ -16,4 +16,67 @@ <name>Aperture Core: Accessor - File</name> <description>File system accessor</description> + <dependencies> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-accessor-core</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-datasource-core</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-rdf</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-vocabulary-core</artifactId> + </dependency> + + <dependency> + <groupId>org.semweb4j</groupId> + <artifactId>rdf2go.api</artifactId> + </dependency> + + <dependency> + <groupId>org.osgi</groupId> + <artifactId>osgi_R4_core</artifactId> + </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Export-Package>org.semanticdesktop.aperture.accessor.file</Export-Package> + <Private-Package>org.semanticdesktop.aperture.accessor.file.bundle</Private-Package> + <Bundle-Activator>org.semanticdesktop.aperture.accessor.file.bundle.FileAccessorActivator</Bundle-Activator> + </instructions> + </configuration> + </plugin> + </plugins> + </build> </project> Added: aperture/trunk/core/accessor/file/src/main/java/org/semanticdesktop/aperture/accessor/file/bundle/FileAccessorActivator.java =================================================================== --- aperture/trunk/core/accessor/file/src/main/java/org/semanticdesktop/aperture/accessor/file/bundle/FileAccessorActivator.java (rev 0) +++ aperture/trunk/core/accessor/file/src/main/java/org/semanticdesktop/aperture/accessor/file/bundle/FileAccessorActivator.java 2009-02-17 13:48:48 UTC (rev 1654) @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2006 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.accessor.file.bundle; + +import java.util.Hashtable; + +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceRegistration; +import org.semanticdesktop.aperture.accessor.DataAccessorFactory; +import org.semanticdesktop.aperture.accessor.file.FileAccessorFactory; + +public class FileAccessorActivator implements BundleActivator { + + private FileAccessorFactory factory; + + private ServiceRegistration registration; + + public void start(BundleContext context) throws Exception { + + factory = new FileAccessorFactory(); + registration = context.registerService(DataAccessorFactory.class.getName(), factory, + new Hashtable()); + } + + public void stop(BundleContext context) throws Exception { + registration.unregister(); + } +} Property changes on: aperture/trunk/core/accessor/http ___________________________________________________________________ Added: svn:ignore + .classpath .project .settings target Modified: aperture/trunk/core/accessor/http/pom.xml =================================================================== --- aperture/trunk/core/accessor/http/pom.xml 2009-02-17 13:27:12 UTC (rev 1653) +++ aperture/trunk/core/accessor/http/pom.xml 2009-02-17 13:48:48 UTC (rev 1654) @@ -16,4 +16,71 @@ <name>Aperture Core: Accessor - HTTP</name> <description>HTTP system accessor</description> + <dependencies> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-accessor-core</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-datasource-core</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-rdf</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-util</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-vocabulary-core</artifactId> + </dependency> + + <dependency> + <groupId>org.semweb4j</groupId> + <artifactId>rdf2go.api</artifactId> + </dependency> + + <dependency> + <groupId>org.osgi</groupId> + <artifactId>osgi_R4_core</artifactId> + </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Export-Package>org.semanticdesktop.aperture.accessor.http</Export-Package> + <Private-Package>org.semanticdesktop.aperture.accessor.http.bundle</Private-Package> + <Bundle-Activator>org.semanticdesktop.aperture.accessor.http.bundle.HttpAccessorActivator</Bundle-Activator> + </instructions> + </configuration> + </plugin> + </plugins> + </build> </project> Added: aperture/trunk/core/accessor/http/src/main/java/org/semanticdesktop/aperture/accessor/http/bundle/HttpAccessorActivator.java =================================================================== --- aperture/trunk/core/accessor/http/src/main/java/org/semanticdesktop/aperture/accessor/http/bundle/HttpAccessorActivator.java (rev 0) +++ aperture/trunk/core/accessor/http/src/main/java/org/semanticdesktop/aperture/accessor/http/bundle/HttpAccessorActivator.java 2009-02-17 13:48:48 UTC (rev 1654) @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2006 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.accessor.http.bundle; + +import java.util.Hashtable; + +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceRegistration; +import org.semanticdesktop.aperture.accessor.DataAccessorFactory; +import org.semanticdesktop.aperture.accessor.http.HttpAccessorFactory; + + +public class HttpAccessorActivator implements BundleActivator { + + private HttpAccessorFactory factory; + + private ServiceRegistration registration; + + public void start(BundleContext context) throws Exception { + factory = new HttpAccessorFactory(); + registration = context.registerService(DataAccessorFactory.class.getName(), factory, + new Hashtable()); + } + + public void stop(BundleContext context) throws Exception { + registration.unregister(); + } + +} Modified: aperture/trunk/core/accessor/pom.xml =================================================================== --- aperture/trunk/core/accessor/pom.xml 2009-02-17 13:27:12 UTC (rev 1653) +++ aperture/trunk/core/accessor/pom.xml 2009-02-17 13:48:48 UTC (rev 1654) @@ -19,5 +19,7 @@ <modules> <module>core</module> + <module>file</module> + <module>http</module> </modules> </project> \ No newline at end of file Property changes on: aperture/trunk/default/accessor ___________________________________________________________________ Added: svn:ignore + .classpath .project .settings target Added: aperture/trunk/default/accessor/pom.xml =================================================================== --- aperture/trunk/default/accessor/pom.xml (rev 0) +++ aperture/trunk/default/accessor/pom.xml 2009-02-17 13:48:48 UTC (rev 1654) @@ -0,0 +1,67 @@ +<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> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-default</artifactId> + <version>1.3.0-SNAPSHOT</version> + </parent> + + <artifactId>aperture-default-accessor</artifactId> + + <name>Aperture Default: Accessors</name> + <description>Accessor API and default implementation</description> + + <dependencies> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-accessor-core</artifactId> + <version>${aperture.version}</version> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-accessor-file</artifactId> + <version>${aperture.version}</version> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-accessor-http</artifactId> + <version>${aperture.version}</version> + </dependency> + + <dependency> + <groupId>org.osgi</groupId> + <artifactId>osgi_R4_core</artifactId> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Export-Package>!org.semanticdesktop.aperture.accessor.bundle,!org.semanticdesktop.aperture.accessor.*.bundle,!org.semanticdesktop.aperture.accessor.impl,org.semanticdesktop.aperture.accessor.*</Export-Package> + <Private-Package>org.semanticdesktop.aperture.accessor.bundle;-split-package:=first,org.semanticdesktop.aperture.accessor.*.bundle,org.semanticdesktop.aperture.accessor.impl;-split-package:=merge-first</Private-Package> + <Bundle-Activator>org.semanticdesktop.aperture.accessor.bundle.DefaultAccessorServiceActivator</Bundle-Activator> + </instructions> + </configuration> + </plugin> + </plugins> + </build> + +</project> Added: aperture/trunk/default/accessor/src/main/java/org/semanticdesktop/aperture/accessor/bundle/DefaultAccessorServiceActivator.java =================================================================== --- aperture/trunk/default/accessor/src/main/java/org/semanticdesktop/aperture/accessor/bundle/DefaultAccessorServiceActivator.java (rev 0) +++ aperture/trunk/default/accessor/src/main/java/org/semanticdesktop/aperture/accessor/bundle/DefaultAccessorServiceActivator.java 2009-02-17 13:48:48 UTC (rev 1654) @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2006 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.accessor.bundle; + +import java.util.Hashtable; + +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceEvent; +import org.osgi.framework.ServiceListener; +import org.osgi.framework.ServiceReference; +import org.osgi.framework.ServiceRegistration; +import org.semanticdesktop.aperture.accessor.DataAccessorFactory; +import org.semanticdesktop.aperture.accessor.DataAccessorRegistry; +import org.semanticdesktop.aperture.accessor.impl.DefaultDataAccessorRegistry; + +public class DefaultAccessorServiceActivator implements BundleActivator, ServiceListener { + + private BundleContext bc = null; + + private ServiceRegistration registration; + + private DataAccessorRegistry registry; + + public void start(BundleContext context) throws Exception { + + bc = context; + registry = new DefaultDataAccessorRegistry(); + registration = bc.registerService(DataAccessorRegistry.class.getName(), registry, + new Hashtable()); + + String filter = "(objectclass=" + DataAccessorFactory.class.getName() + ")"; + bc.addServiceListener(this, filter); + + ServiceReference references[] = bc.getServiceReferences(null, filter); + + for (int i = 0; references != null && i < references.length; i++) { + this.serviceChanged(new ServiceEvent(ServiceEvent.REGISTERED, references[i])); + } + + + } + + public void stop(BundleContext context) throws Exception { + registration.unregister(); + registration = null; + bc = null; + } + + public void serviceChanged(ServiceEvent event) { + DataAccessorFactory factory; + switch (event.getType()) { + case ServiceEvent.REGISTERED: + factory = (DataAccessorFactory) bc.getService(event + .getServiceReference()); + registry.add(factory); + break; + case ServiceEvent.MODIFIED: + factory = (DataAccessorFactory) bc.getService(event + .getServiceReference()); + registry.remove(factory); + registry.add(factory); + break; + case ServiceEvent.UNREGISTERING: + factory = (DataAccessorFactory) bc.getService(event + .getServiceReference()); + registry.remove(factory); + break; + } + } +} Copied: aperture/trunk/default/accessor/src/main/java/org/semanticdesktop/aperture/accessor/impl/DefaultDataAccessorRegistry.java (from rev 1653, aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/impl/DefaultDataAccessorRegistry.java) =================================================================== --- aperture/trunk/default/accessor/src/main/java/org/semanticdesktop/aperture/accessor/impl/DefaultDataAccessorRegistry.java (rev 0) +++ aperture/trunk/default/accessor/src/main/java/org/semanticdesktop/aperture/accessor/impl/DefaultDataAccessorRegistry.java 2009-02-17 13:48:48 UTC (rev 1654) @@ -0,0 +1,125 @@ +/* + * Copyright (c) 2005 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.accessor.impl; + +import java.io.BufferedInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.Map; + +import javax.xml.parsers.ParserConfigurationException; + +import org.semanticdesktop.aperture.accessor.DataAccessorFactory; +import org.semanticdesktop.aperture.util.ResourceUtil; +import org.semanticdesktop.aperture.util.SimpleSAXAdapter; +import org.semanticdesktop.aperture.util.SimpleSAXParser; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.xml.sax.SAXException; + +/** + * DefaultDataAccessorRegistry provides the complete set of DataAccessorFactories available in Aperture. + * + * <p> + * The main purpose of this class is to be able to conveniently access the set of DataAccessorFactories in + * non-OSGi applications, which take care of this initialization in a different way. A single line of code + * gives you the entire set without requiring further setup. + * + * <p> + * The set of factory class names are loaded from an XML file which can optionally be specified to the + * constructor. This class requires all the listed classes to have a no-argument constructor. + */ +public class DefaultDataAccessorRegistry extends DataAccessorRegistryImpl { + + private static final String DEFAULT_FILE = "org/semanticdesktop/aperture/accessor/impl/defaults.xml"; + + private static final String ACCESSOR_FACTORY_TAG = "dataAccessorFactory"; + + private static final String NAME_TAG = "name"; + + public DefaultDataAccessorRegistry() { + try { + InputStream stream = ResourceUtil.getInputStream(DEFAULT_FILE, DefaultDataAccessorRegistry.class); + BufferedInputStream buffer = new BufferedInputStream(stream); + parse(buffer); + buffer.close(); + } + catch (IOException e) { + throw new RuntimeException("unable to parse " + DEFAULT_FILE, e); + } + } + + public DefaultDataAccessorRegistry(InputStream stream) throws IOException { + parse(stream); + } + + private void parse(InputStream stream) throws IOException { + try { + // Parse the document + SimpleSAXParser parser = new SimpleSAXParser(); + parser.setListener(new DataAccessorParser()); + parser.parse(stream); + } + catch (ParserConfigurationException e) { + IOException ie = new IOException(e.getMessage()); + ie.initCause(e); + throw ie; + } + catch (SAXException e) { + IOException ie = new IOException(e.getMessage()); + ie.initCause(e); + throw ie; + } + } + + private class DataAccessorParser extends SimpleSAXAdapter { + + private Logger logger = LoggerFactory.getLogger(getClass()); + + private boolean insideFactoryElement = false; + + public void startTag(String tagName, Map atts, String text) throws SAXException { + if (ACCESSOR_FACTORY_TAG.equals(tagName)) { + insideFactoryElement = true; + } + else if (NAME_TAG.equals(tagName) && insideFactoryElement && text != null) { + processClassName(text); + } + } + + public void endTag(String tagName) { + if (ACCESSOR_FACTORY_TAG.equals(tagName)) { + insideFactoryElement = false; + } + } + + private void processClassName(String className) { + className = className.trim(); + if (!className.equals("")) { + try { + Class<?> clazz = Class.forName(className); + Object instance = clazz.newInstance(); + DataAccessorFactory factory = (DataAccessorFactory) instance; + add(factory); + } + catch (ClassNotFoundException e) { + logger.warn("unable to find class " + className + ", ignoring", e); + } + catch (InstantiationException e) { + logger.warn("unable to instantiate class " + className + ", ignoring", e); + } + catch (IllegalAccessException e) { + logger.warn("unable to access class " + className + ", ignoring", e); + } + catch (ClassCastException e) { + logger.warn("unable to cast instance to " + DataAccessorFactory.class.getName() + + ", ignoring", e); + } + } + } + } +} Copied: aperture/trunk/default/accessor/src/main/resources/org/semanticdesktop/aperture/accessor/impl/defaults.xml (from rev 1653, aperture/trunk/core/accessor/core/src/main/java/org/semanticdesktop/aperture/accessor/impl/defaults.xml) =================================================================== --- aperture/trunk/default/accessor/src/main/resources/org/semanticdesktop/aperture/accessor/impl/defaults.xml (rev 0) +++ aperture/trunk/default/accessor/src/main/resources/org/semanticdesktop/aperture/accessor/impl/defaults.xml 2009-02-17 13:48:48 UTC (rev 1654) @@ -0,0 +1,14 @@ +<?xml version='1.0' encoding='UTF-8'?> + +<dataAccessorFactories> + <dataAccessorFactory> + <name>org.semanticdesktop.aperture.accessor.file.FileAccessorFactory</name> + </dataAccessorFactory> + <dataAccessorFactory> + <name>org.semanticdesktop.aperture.accessor.http.HttpAccessorFactory</name> + </dataAccessorFactory> + <dataAccessorFactory> + <!-- Note: this class implements both AccessorFactory and CrawlerFactory --> + <name>org.semanticdesktop.aperture.crawler.imap.ImapCrawlerFactory</name> + </dataAccessorFactory> +</dataAccessorFactories> \ No newline at end of file Modified: aperture/trunk/default/pom.xml =================================================================== --- aperture/trunk/default/pom.xml 2009-02-17 13:27:12 UTC (rev 1653) +++ aperture/trunk/default/pom.xml 2009-02-17 13:48:48 UTC (rev 1654) @@ -18,10 +18,10 @@ <description>Default functionality</description> <modules> + <module>accessor</module> <module>datasource</module> <module>mime-identifier</module> <!-- - <module>accessor</module> <module>crawler</module> <module>extractor</module> --> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <her...@us...> - 2009-02-17 14:37:07
|
Revision: 1655 http://aperture.svn.sourceforge.net/aperture/?rev=1655&view=rev Author: herko_ter_horst Date: 2009-02-17 14:37:03 +0000 (Tue, 17 Feb 2009) Log Message: ----------- Crawler module skeletons. Modified Paths: -------------- aperture/trunk/core/crawler/core/pom.xml aperture/trunk/pom.xml Added Paths: ----------- aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/bundle/CrawlerServiceActivator.java aperture/trunk/core/crawler/filesystem/ aperture/trunk/core/crawler/filesystem/pom.xml aperture/trunk/core/crawler/filesystem/src/ aperture/trunk/core/crawler/filesystem/src/main/ aperture/trunk/core/crawler/filesystem/src/main/java/ aperture/trunk/core/crawler/filesystem/src/main/java/org/ aperture/trunk/core/crawler/filesystem/src/main/java/org/semanticdesktop/ aperture/trunk/core/crawler/filesystem/src/main/java/org/semanticdesktop/aperture/ aperture/trunk/core/crawler/filesystem/src/main/java/org/semanticdesktop/aperture/crawler/ aperture/trunk/core/crawler/filesystem/src/test/ aperture/trunk/core/crawler/filesystem/src/test/java/ aperture/trunk/core/crawler/filesystem/src/test/java/org/ aperture/trunk/core/crawler/filesystem/src/test/java/org/semanticdesktop/ aperture/trunk/core/crawler/filesystem/src/test/java/org/semanticdesktop/aperture/ aperture/trunk/core/crawler/ical/ aperture/trunk/core/crawler/ical/pom.xml aperture/trunk/core/crawler/ical/src/ aperture/trunk/core/crawler/ical/src/main/ aperture/trunk/core/crawler/ical/src/main/java/ aperture/trunk/core/crawler/ical/src/main/java/org/ aperture/trunk/core/crawler/ical/src/main/java/org/semanticdesktop/ aperture/trunk/core/crawler/ical/src/main/java/org/semanticdesktop/aperture/ aperture/trunk/core/crawler/ical/src/main/java/org/semanticdesktop/aperture/crawler/ aperture/trunk/core/crawler/ical/src/test/ aperture/trunk/core/crawler/ical/src/test/java/ aperture/trunk/core/crawler/ical/src/test/java/org/ aperture/trunk/core/crawler/ical/src/test/java/org/semanticdesktop/ aperture/trunk/core/crawler/ical/src/test/java/org/semanticdesktop/aperture/ aperture/trunk/core/crawler/imap/ aperture/trunk/core/crawler/imap/pom.xml aperture/trunk/core/crawler/imap/src/ aperture/trunk/core/crawler/imap/src/main/ aperture/trunk/core/crawler/imap/src/main/java/ aperture/trunk/core/crawler/imap/src/main/java/org/ aperture/trunk/core/crawler/imap/src/main/java/org/semanticdesktop/ aperture/trunk/core/crawler/imap/src/main/java/org/semanticdesktop/aperture/ aperture/trunk/core/crawler/imap/src/main/java/org/semanticdesktop/aperture/crawler/ aperture/trunk/core/crawler/imap/src/test/ aperture/trunk/core/crawler/imap/src/test/java/ aperture/trunk/core/crawler/imap/src/test/java/org/ aperture/trunk/core/crawler/imap/src/test/java/org/semanticdesktop/ aperture/trunk/core/crawler/imap/src/test/java/org/semanticdesktop/aperture/ aperture/trunk/core/crawler/mail/ aperture/trunk/core/crawler/mail/pom.xml aperture/trunk/core/crawler/mail/src/ aperture/trunk/core/crawler/mail/src/main/ aperture/trunk/core/crawler/mail/src/main/java/ aperture/trunk/core/crawler/mail/src/main/java/org/ aperture/trunk/core/crawler/mail/src/main/java/org/semanticdesktop/ aperture/trunk/core/crawler/mail/src/main/java/org/semanticdesktop/aperture/ aperture/trunk/core/crawler/mail/src/main/java/org/semanticdesktop/aperture/crawler/ aperture/trunk/core/crawler/mail/src/test/ aperture/trunk/core/crawler/mail/src/test/java/ aperture/trunk/core/crawler/mail/src/test/java/org/ aperture/trunk/core/crawler/mail/src/test/java/org/semanticdesktop/ aperture/trunk/core/crawler/mail/src/test/java/org/semanticdesktop/aperture/ aperture/trunk/core/crawler/mbox/ aperture/trunk/core/crawler/mbox/pom.xml aperture/trunk/core/crawler/mbox/src/ aperture/trunk/core/crawler/mbox/src/main/ aperture/trunk/core/crawler/mbox/src/main/java/ aperture/trunk/core/crawler/mbox/src/main/java/org/ aperture/trunk/core/crawler/mbox/src/main/java/org/semanticdesktop/ aperture/trunk/core/crawler/mbox/src/main/java/org/semanticdesktop/aperture/ aperture/trunk/core/crawler/mbox/src/main/java/org/semanticdesktop/aperture/crawler/ aperture/trunk/core/crawler/mbox/src/test/ aperture/trunk/core/crawler/mbox/src/test/java/ aperture/trunk/core/crawler/mbox/src/test/java/org/ aperture/trunk/core/crawler/mbox/src/test/java/org/semanticdesktop/ aperture/trunk/core/crawler/mbox/src/test/java/org/semanticdesktop/aperture/ aperture/trunk/core/crawler/web/ aperture/trunk/core/crawler/web/pom.xml aperture/trunk/core/crawler/web/src/ aperture/trunk/core/crawler/web/src/main/ aperture/trunk/core/crawler/web/src/main/java/ aperture/trunk/core/crawler/web/src/main/java/org/ aperture/trunk/core/crawler/web/src/main/java/org/semanticdesktop/ aperture/trunk/core/crawler/web/src/main/java/org/semanticdesktop/aperture/ aperture/trunk/core/crawler/web/src/main/java/org/semanticdesktop/aperture/crawler/ aperture/trunk/core/crawler/web/src/test/ aperture/trunk/core/crawler/web/src/test/java/ aperture/trunk/core/crawler/web/src/test/java/org/ aperture/trunk/core/crawler/web/src/test/java/org/semanticdesktop/ aperture/trunk/core/crawler/web/src/test/java/org/semanticdesktop/aperture/ Modified: aperture/trunk/core/crawler/core/pom.xml =================================================================== --- aperture/trunk/core/crawler/core/pom.xml 2009-02-17 13:48:48 UTC (rev 1654) +++ aperture/trunk/core/crawler/core/pom.xml 2009-02-17 14:37:03 UTC (rev 1655) @@ -19,7 +19,7 @@ <dependencies> <dependency> <groupId>org.semanticdesktop.aperture</groupId> - <artifactId>aperture-rdf</artifactId> + <artifactId>aperture-accessor-core</artifactId> </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> @@ -27,20 +27,16 @@ </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> - <artifactId>aperture-util</artifactId> + <artifactId>aperture-rdf</artifactId> </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> - <artifactId>aperture-vocabulary-core</artifactId> + <artifactId>aperture-util</artifactId> </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> - <artifactId>aperture-accessor-core</artifactId> + <artifactId>aperture-vocabulary-core</artifactId> </dependency> - <dependency> - <groupId>org.semanticdesktop.aperture</groupId> - <artifactId>aperture-extractor-core</artifactId> - </dependency> <dependency> <groupId>org.semweb4j</groupId> @@ -84,7 +80,7 @@ <extensions>true</extensions> <configuration> <instructions> - <Export-Package>org.semanticdesktop.aperture.crawler</Export-Package> + <Export-Package>org.semanticdesktop.aperture.crawler,org.semanticdesktop.aperture.crawler.base,org.semanticdesktop.aperture.subcrawler,org.semanticdesktop.aperture.subcrawler.base</Export-Package> <Private-Package>org.semanticdesktop.aperture.crawler.impl,org.semanticdesktop.aperture.crawler.bundle</Private-Package> <Bundle-Activator>org.semanticdesktop.aperture.crawler.bundle.CrawlerServiceActivator</Bundle-Activator> </instructions> Added: aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/bundle/CrawlerServiceActivator.java =================================================================== --- aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/bundle/CrawlerServiceActivator.java (rev 0) +++ aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/bundle/CrawlerServiceActivator.java 2009-02-17 14:37:03 UTC (rev 1655) @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2006 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.crawler.bundle; + +import java.util.Hashtable; + +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceEvent; +import org.osgi.framework.ServiceListener; +import org.osgi.framework.ServiceReference; +import org.osgi.framework.ServiceRegistration; +import org.semanticdesktop.aperture.crawler.CrawlerFactory; +import org.semanticdesktop.aperture.crawler.CrawlerRegistry; +import org.semanticdesktop.aperture.crawler.impl.CrawlerRegistryImpl; + +public class CrawlerServiceActivator implements BundleActivator, ServiceListener { + + private BundleContext bc = null; + + private ServiceRegistration registration; + + private CrawlerRegistry registry; + + public void start(BundleContext context) throws Exception { + + bc = context; + registry = new CrawlerRegistryImpl(); + registration = bc.registerService(CrawlerRegistry.class.getName(), registry, + new Hashtable()); + + String filter = "(objectclass=" + CrawlerFactory.class.getName() + ")"; + bc.addServiceListener(this, filter); + + ServiceReference references[] = bc.getServiceReferences(null, filter); + + for (int i = 0; references != null && i < references.length; i++) { + this.serviceChanged(new ServiceEvent(ServiceEvent.REGISTERED, references[i])); + } + + + } + + public void stop(BundleContext context) throws Exception { + registration.unregister(); + bc = null; + } + + public void serviceChanged(ServiceEvent event) { + CrawlerFactory factory; + switch (event.getType()) { + case ServiceEvent.REGISTERED: + factory = (CrawlerFactory) bc.getService(event + .getServiceReference()); + registry.add(factory); + break; + case ServiceEvent.MODIFIED: + factory = (CrawlerFactory) bc.getService(event + .getServiceReference()); + registry.remove(factory); + registry.add(factory); + break; + case ServiceEvent.UNREGISTERING: + factory = (CrawlerFactory) bc.getService(event + .getServiceReference()); + registry.remove(factory); + break; + } + } + + +} Property changes on: aperture/trunk/core/crawler/filesystem ___________________________________________________________________ Added: svn:ignore + .classpath .project .settings target Added: aperture/trunk/core/crawler/filesystem/pom.xml =================================================================== --- aperture/trunk/core/crawler/filesystem/pom.xml (rev 0) +++ aperture/trunk/core/crawler/filesystem/pom.xml 2009-02-17 14:37:03 UTC (rev 1655) @@ -0,0 +1,86 @@ +<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> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-crawler</artifactId> + <version>1.3.0-SNAPSHOT</version> + </parent> + + <artifactId>aperture-crawler-filesystem</artifactId> + + <name>Aperture Core: Crawler - File System</name> + <description>File system crawler</description> + + <dependencies> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-accessor-core</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-crawler-core</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-datasource-core</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-rdf</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-vocabulary-core</artifactId> + </dependency> + + <dependency> + <groupId>org.semweb4j</groupId> + <artifactId>rdf2go.api</artifactId> + </dependency> + + <dependency> + <groupId>org.osgi</groupId> + <artifactId>osgi_R4_core</artifactId> + </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Export-Package>org.semanticdesktop.aperture.crawler.file</Export-Package> + <Private-Package>org.semanticdesktop.aperture.crawler.file.bundle</Private-Package> + <Bundle-Activator>org.semanticdesktop.aperture.crawler.file.bundle.FileCrawlerActivator</Bundle-Activator> + </instructions> + </configuration> + </plugin> + </plugins> + </build> +</project> Property changes on: aperture/trunk/core/crawler/ical ___________________________________________________________________ Added: svn:ignore + .classpath .project .settings target Added: aperture/trunk/core/crawler/ical/pom.xml =================================================================== --- aperture/trunk/core/crawler/ical/pom.xml (rev 0) +++ aperture/trunk/core/crawler/ical/pom.xml 2009-02-17 14:37:03 UTC (rev 1655) @@ -0,0 +1,86 @@ +<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> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-crawler</artifactId> + <version>1.3.0-SNAPSHOT</version> + </parent> + + <artifactId>aperture-crawler-ical</artifactId> + + <name>Aperture Core: Crawler - ICal</name> + <description>ICal crawler</description> + + <dependencies> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-accessor-core</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-crawler-core</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-datasource-core</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-rdf</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-vocabulary-core</artifactId> + </dependency> + + <dependency> + <groupId>org.semweb4j</groupId> + <artifactId>rdf2go.api</artifactId> + </dependency> + + <dependency> + <groupId>org.osgi</groupId> + <artifactId>osgi_R4_core</artifactId> + </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifestICal>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestICal> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Export-Package>org.semanticdesktop.aperture.crawler.ical</Export-Package> + <Private-Package>org.semanticdesktop.aperture.crawler.ical.bundle</Private-Package> + <Bundle-Activator>org.semanticdesktop.aperture.crawler.ical.bundle.ICalCrawlerActivator</Bundle-Activator> + </instructions> + </configuration> + </plugin> + </plugins> + </build> +</project> Property changes on: aperture/trunk/core/crawler/imap ___________________________________________________________________ Added: svn:ignore + .classpath .project .settings target Added: aperture/trunk/core/crawler/imap/pom.xml =================================================================== --- aperture/trunk/core/crawler/imap/pom.xml (rev 0) +++ aperture/trunk/core/crawler/imap/pom.xml 2009-02-17 14:37:03 UTC (rev 1655) @@ -0,0 +1,90 @@ +<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> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-crawler</artifactId> + <version>1.3.0-SNAPSHOT</version> + </parent> + + <artifactId>aperture-crawler-imap</artifactId> + + <name>Aperture Core: Crawler - IMAP</name> + <description>IMAP crawler</description> + + <dependencies> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-accessor-core</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-crawler-core</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-crawler-mail</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-datasource-core</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-rdf</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-vocabulary-core</artifactId> + </dependency> + + <dependency> + <groupId>org.semweb4j</groupId> + <artifactId>rdf2go.api</artifactId> + </dependency> + + <dependency> + <groupId>org.osgi</groupId> + <artifactId>osgi_R4_core</artifactId> + </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifestIMAP>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestIMAP> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Export-Package>org.semanticdesktop.aperture.crawler.imap</Export-Package> + <Private-Package>org.semanticdesktop.aperture.crawler.imap.bundle</Private-Package> + <Bundle-Activator>org.semanticdesktop.aperture.crawler.imap.bundle.IMAPCrawlerActivator</Bundle-Activator> + </instructions> + </configuration> + </plugin> + </plugins> + </build> +</project> Property changes on: aperture/trunk/core/crawler/mail ___________________________________________________________________ Added: svn:ignore + .classpath .project .settings target Added: aperture/trunk/core/crawler/mail/pom.xml =================================================================== --- aperture/trunk/core/crawler/mail/pom.xml (rev 0) +++ aperture/trunk/core/crawler/mail/pom.xml 2009-02-17 14:37:03 UTC (rev 1655) @@ -0,0 +1,86 @@ +<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> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-crawler</artifactId> + <version>1.3.0-SNAPSHOT</version> + </parent> + + <artifactId>aperture-crawler-mail</artifactId> + + <name>Aperture Core: Crawler - Mail</name> + <description>Mail crawler base</description> + + <dependencies> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-accessor-core</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-crawler-core</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-datasource-core</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-rdf</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-vocabulary-core</artifactId> + </dependency> + + <dependency> + <groupId>org.semweb4j</groupId> + <artifactId>rdf2go.api</artifactId> + </dependency> + + <dependency> + <groupId>org.osgi</groupId> + <artifactId>osgi_R4_core</artifactId> + </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifestMail>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestMail> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Export-Package>org.semanticdesktop.aperture.crawler.mail</Export-Package> + <Private-Package>org.semanticdesktop.aperture.crawler.mail.bundle</Private-Package> + <Bundle-Activator>org.semanticdesktop.aperture.crawler.mail.bundle.MailCrawlerActivator</Bundle-Activator> + </instructions> + </configuration> + </plugin> + </plugins> + </build> +</project> Property changes on: aperture/trunk/core/crawler/mbox ___________________________________________________________________ Added: svn:ignore + .classpath .project .settings target Added: aperture/trunk/core/crawler/mbox/pom.xml =================================================================== --- aperture/trunk/core/crawler/mbox/pom.xml (rev 0) +++ aperture/trunk/core/crawler/mbox/pom.xml 2009-02-17 14:37:03 UTC (rev 1655) @@ -0,0 +1,86 @@ +<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> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-crawler</artifactId> + <version>1.3.0-SNAPSHOT</version> + </parent> + + <artifactId>aperture-crawler-mbox</artifactId> + + <name>Aperture Core: Crawler - Mbox</name> + <description>Mbox crawler</description> + + <dependencies> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-accessor-core</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-crawler-core</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-datasource-core</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-rdf</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-vocabulary-core</artifactId> + </dependency> + + <dependency> + <groupId>org.semweb4j</groupId> + <artifactId>rdf2go.api</artifactId> + </dependency> + + <dependency> + <groupId>org.osgi</groupId> + <artifactId>osgi_R4_core</artifactId> + </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifestMbox>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestMbox> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Export-Package>org.semanticdesktop.aperture.crawler.mbox</Export-Package> + <Private-Package>org.semanticdesktop.aperture.crawler.mbox.bundle</Private-Package> + <Bundle-Activator>org.semanticdesktop.aperture.crawler.mbox.bundle.MboxCrawlerActivator</Bundle-Activator> + </instructions> + </configuration> + </plugin> + </plugins> + </build> +</project> Property changes on: aperture/trunk/core/crawler/web ___________________________________________________________________ Added: svn:ignore + .classpath .project .settings target Added: aperture/trunk/core/crawler/web/pom.xml =================================================================== --- aperture/trunk/core/crawler/web/pom.xml (rev 0) +++ aperture/trunk/core/crawler/web/pom.xml 2009-02-17 14:37:03 UTC (rev 1655) @@ -0,0 +1,86 @@ +<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> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-crawler</artifactId> + <version>1.3.0-SNAPSHOT</version> + </parent> + + <artifactId>aperture-crawler-web</artifactId> + + <name>Aperture Core: Crawler - Web</name> + <description>Web crawler</description> + + <dependencies> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-accessor-core</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-crawler-core</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-datasource-core</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-rdf</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-vocabulary-core</artifactId> + </dependency> + + <dependency> + <groupId>org.semweb4j</groupId> + <artifactId>rdf2go.api</artifactId> + </dependency> + + <dependency> + <groupId>org.osgi</groupId> + <artifactId>osgi_R4_core</artifactId> + </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifestWeb>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestWeb> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Export-Package>org.semanticdesktop.aperture.crawler.web</Export-Package> + <Private-Package>org.semanticdesktop.aperture.crawler.web.bundle</Private-Package> + <Bundle-Activator>org.semanticdesktop.aperture.crawler.web.bundle.WebCrawlerActivator</Bundle-Activator> + </instructions> + </configuration> + </plugin> + </plugins> + </build> +</project> Modified: aperture/trunk/pom.xml =================================================================== --- aperture/trunk/pom.xml 2009-02-17 13:48:48 UTC (rev 1654) +++ aperture/trunk/pom.xml 2009-02-17 14:37:03 UTC (rev 1655) @@ -53,6 +53,11 @@ </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-crawler-mail</artifactId> + <version>${aperture.version}</version> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> <artifactId>aperture-datasource-core</artifactId> <version>${aperture.version}</version> </dependency> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <her...@us...> - 2009-02-17 16:59:18
|
Revision: 1668 http://aperture.svn.sourceforge.net/aperture/?rev=1668&view=rev Author: herko_ter_horst Date: 2009-02-17 16:59:14 +0000 (Tue, 17 Feb 2009) Log Message: ----------- WIP: crawler implementations and helpers. Modified Paths: -------------- aperture/trunk/core/accessor/core/pom.xml aperture/trunk/core/crawler/core/pom.xml aperture/trunk/core/crawler/filesystem/pom.xml aperture/trunk/core/crawler/ical/pom.xml aperture/trunk/core/crawler/ical/src/main/java/org/semanticdesktop/aperture/crawler/ical/IcalCrawler.java aperture/trunk/core/crawler/imap/pom.xml aperture/trunk/core/crawler/imap/src/main/java/org/semanticdesktop/aperture/crawler/imap/ImapCrawler.java aperture/trunk/core/crawler/imap/src/main/java/org/semanticdesktop/aperture/crawler/imap/ImapStreamPool.java aperture/trunk/core/crawler/mail/pom.xml aperture/trunk/core/crawler/mail/src/main/java/org/semanticdesktop/aperture/crawler/mail/AbstractJavaMailCrawler.java aperture/trunk/core/crawler/mail/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java aperture/trunk/core/crawler/mbox/pom.xml aperture/trunk/core/crawler/mbox/src/main/java/org/semanticdesktop/aperture/crawler/mbox/MboxCrawler.java aperture/trunk/core/crawler/web/pom.xml aperture/trunk/core/extractor/core/pom.xml aperture/trunk/core/helper/html/pom.xml aperture/trunk/core/helper/html/src/main/java/org/semanticdesktop/aperture/helper/html/HtmlParserUtil.java aperture/trunk/core/helper/poi/pom.xml aperture/trunk/core/helper/poi/src/main/java/org/semanticdesktop/aperture/helper/poi/PoiUtil.java aperture/trunk/core/pom.xml aperture/trunk/core/util/src/main/java/org/semanticdesktop/aperture/util/StringExtractor.java aperture/trunk/pom.xml Added Paths: ----------- aperture/trunk/core/crawler/mail/src/main/java/org/semanticdesktop/aperture/crawler/mail/MessageDataObject.java aperture/trunk/core/crawler/mail/src/main/java/org/semanticdesktop/aperture/crawler/mail/base/ aperture/trunk/core/crawler/mail/src/main/java/org/semanticdesktop/aperture/crawler/mail/base/MessageDataObjectBase.java aperture/trunk/core/helper/html/src/main/java/org/semanticdesktop/aperture/helper/html/HtmlParserException.java Property Changed: ---------------- aperture/trunk/core/helper/html/ aperture/trunk/core/helper/poi/ Modified: aperture/trunk/core/accessor/core/pom.xml =================================================================== --- aperture/trunk/core/accessor/core/pom.xml 2009-02-17 16:58:48 UTC (rev 1667) +++ aperture/trunk/core/accessor/core/pom.xml 2009-02-17 16:59:14 UTC (rev 1668) @@ -51,6 +51,7 @@ <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-jdk14</artifactId> + <scope>test</scope> </dependency> <dependency> Modified: aperture/trunk/core/crawler/core/pom.xml =================================================================== --- aperture/trunk/core/crawler/core/pom.xml 2009-02-17 16:58:48 UTC (rev 1667) +++ aperture/trunk/core/crawler/core/pom.xml 2009-02-17 16:59:14 UTC (rev 1668) @@ -55,6 +55,7 @@ <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-jdk14</artifactId> + <scope>test</scope> </dependency> <dependency> Modified: aperture/trunk/core/crawler/filesystem/pom.xml =================================================================== --- aperture/trunk/core/crawler/filesystem/pom.xml 2009-02-17 16:58:48 UTC (rev 1667) +++ aperture/trunk/core/crawler/filesystem/pom.xml 2009-02-17 16:59:14 UTC (rev 1668) @@ -27,7 +27,7 @@ </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> - <artifactId>aperture-datasource-core</artifactId> + <artifactId>aperture-datasource-filesystem</artifactId> </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> Modified: aperture/trunk/core/crawler/ical/pom.xml =================================================================== --- aperture/trunk/core/crawler/ical/pom.xml 2009-02-17 16:58:48 UTC (rev 1667) +++ aperture/trunk/core/crawler/ical/pom.xml 2009-02-17 16:59:14 UTC (rev 1668) @@ -13,7 +13,7 @@ <artifactId>aperture-crawler-ical</artifactId> - <name>Aperture Core: Crawler - ICal</name> + <name>Aperture Core: Crawler - iCalendar</name> <description>ICal crawler</description> <dependencies> @@ -27,7 +27,7 @@ </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> - <artifactId>aperture-datasource-core</artifactId> + <artifactId>aperture-datasource-ical</artifactId> </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> @@ -39,6 +39,11 @@ </dependency> <dependency> + <groupId>ical4j</groupId> + <artifactId>ical4j</artifactId> + </dependency> + + <dependency> <groupId>org.semweb4j</groupId> <artifactId>rdf2go.api</artifactId> </dependency> @@ -52,6 +57,10 @@ <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>jcl-over-slf4j</artifactId> + </dependency> <dependency> <groupId>junit</groupId> Modified: aperture/trunk/core/crawler/ical/src/main/java/org/semanticdesktop/aperture/crawler/ical/IcalCrawler.java =================================================================== --- aperture/trunk/core/crawler/ical/src/main/java/org/semanticdesktop/aperture/crawler/ical/IcalCrawler.java 2009-02-17 16:58:48 UTC (rev 1667) +++ aperture/trunk/core/crawler/ical/src/main/java/org/semanticdesktop/aperture/crawler/ical/IcalCrawler.java 2009-02-17 16:59:14 UTC (rev 1668) @@ -74,6 +74,7 @@ import org.semanticdesktop.aperture.crawler.base.CrawlerBase; import org.semanticdesktop.aperture.datasource.ical.IcalDataSource; import org.semanticdesktop.aperture.rdf.RDFContainer; +import org.semanticdesktop.aperture.rdf.util.ModelUtil; import org.semanticdesktop.aperture.util.StringUtil; import org.semanticdesktop.aperture.util.UriUtil; import org.semanticdesktop.aperture.vocabulary.GEO; @@ -3602,7 +3603,7 @@ } private Resource generateAnonymousNode(RDFContainer rdfContainer) { - return UriUtil.generateRandomResource(rdfContainer.getModel()); + return ModelUtil.generateRandomResource(rdfContainer.getModel()); } private URI generateAttachmentUri(URI describedUri) { Modified: aperture/trunk/core/crawler/imap/pom.xml =================================================================== --- aperture/trunk/core/crawler/imap/pom.xml 2009-02-17 16:58:48 UTC (rev 1667) +++ aperture/trunk/core/crawler/imap/pom.xml 2009-02-17 16:59:14 UTC (rev 1668) @@ -31,7 +31,7 @@ </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> - <artifactId>aperture-datasource-core</artifactId> + <artifactId>aperture-datasource-imap</artifactId> </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> Modified: aperture/trunk/core/crawler/imap/src/main/java/org/semanticdesktop/aperture/crawler/imap/ImapCrawler.java =================================================================== --- aperture/trunk/core/crawler/imap/src/main/java/org/semanticdesktop/aperture/crawler/imap/ImapCrawler.java 2009-02-17 16:58:48 UTC (rev 1667) +++ aperture/trunk/core/crawler/imap/src/main/java/org/semanticdesktop/aperture/crawler/imap/ImapCrawler.java 2009-02-17 16:59:14 UTC (rev 1668) @@ -47,17 +47,16 @@ import org.semanticdesktop.aperture.accessor.AccessData; import org.semanticdesktop.aperture.accessor.DataAccessor; import org.semanticdesktop.aperture.accessor.DataObject; -import org.semanticdesktop.aperture.accessor.MessageDataObject; import org.semanticdesktop.aperture.accessor.RDFContainerFactory; import org.semanticdesktop.aperture.accessor.UrlNotFoundException; import org.semanticdesktop.aperture.crawler.ExitCode; import org.semanticdesktop.aperture.crawler.mail.AbstractJavaMailCrawler; import org.semanticdesktop.aperture.crawler.mail.DataObjectFactory; +import org.semanticdesktop.aperture.crawler.mail.MessageDataObject; import org.semanticdesktop.aperture.datasource.DataSource; import org.semanticdesktop.aperture.datasource.imap.ImapDataSource; import org.semanticdesktop.aperture.datasource.imap.ImapDataSource.ConnectionSecurity; import org.semanticdesktop.aperture.rdf.RDFContainer; -import org.semanticdesktop.aperture.security.trustmanager.standard.StandardTrustManager; import org.semanticdesktop.aperture.util.HttpClientUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; Modified: aperture/trunk/core/crawler/imap/src/main/java/org/semanticdesktop/aperture/crawler/imap/ImapStreamPool.java =================================================================== --- aperture/trunk/core/crawler/imap/src/main/java/org/semanticdesktop/aperture/crawler/imap/ImapStreamPool.java 2009-02-17 16:58:48 UTC (rev 1667) +++ aperture/trunk/core/crawler/imap/src/main/java/org/semanticdesktop/aperture/crawler/imap/ImapStreamPool.java 2009-02-17 16:59:14 UTC (rev 1668) @@ -18,8 +18,8 @@ import javax.mail.internet.MimeMessage; import org.ontoware.rdf2go.model.node.URI; -import org.semanticdesktop.aperture.accessor.MessageDataObject; -import org.semanticdesktop.aperture.accessor.base.MessageDataObjectBase; +import org.semanticdesktop.aperture.crawler.mail.MessageDataObject; +import org.semanticdesktop.aperture.crawler.mail.base.MessageDataObjectBase; import org.semanticdesktop.aperture.datasource.DataSource; import org.semanticdesktop.aperture.rdf.RDFContainer; import org.slf4j.Logger; Modified: aperture/trunk/core/crawler/mail/pom.xml =================================================================== --- aperture/trunk/core/crawler/mail/pom.xml 2009-02-17 16:58:48 UTC (rev 1667) +++ aperture/trunk/core/crawler/mail/pom.xml 2009-02-17 16:59:14 UTC (rev 1668) @@ -31,6 +31,10 @@ </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-helper-html</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> <artifactId>aperture-rdf</artifactId> </dependency> <dependency> @@ -39,6 +43,15 @@ </dependency> <dependency> + <groupId>javax.mail</groupId> + <artifactId>mail</artifactId> + </dependency> + <dependency> + <groupId>com.beetstra.jutf7</groupId> + <artifactId>jutf7</artifactId> + </dependency> + + <dependency> <groupId>org.semweb4j</groupId> <artifactId>rdf2go.api</artifactId> </dependency> Modified: aperture/trunk/core/crawler/mail/src/main/java/org/semanticdesktop/aperture/crawler/mail/AbstractJavaMailCrawler.java =================================================================== --- aperture/trunk/core/crawler/mail/src/main/java/org/semanticdesktop/aperture/crawler/mail/AbstractJavaMailCrawler.java 2009-02-17 16:58:48 UTC (rev 1667) +++ aperture/trunk/core/crawler/mail/src/main/java/org/semanticdesktop/aperture/crawler/mail/AbstractJavaMailCrawler.java 2009-02-17 16:59:14 UTC (rev 1668) @@ -11,6 +11,7 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.Set; +import java.util.concurrent.ExecutorService; import javax.mail.Flags; import javax.mail.Folder; @@ -27,12 +28,11 @@ import org.semanticdesktop.aperture.accessor.AccessData; import org.semanticdesktop.aperture.accessor.DataObject; import org.semanticdesktop.aperture.accessor.FolderDataObject; -import org.semanticdesktop.aperture.accessor.MessageDataObject; import org.semanticdesktop.aperture.accessor.RDFContainerFactory; import org.semanticdesktop.aperture.accessor.base.FolderDataObjectBase; -import org.semanticdesktop.aperture.accessor.base.MessageDataObjectBase; import org.semanticdesktop.aperture.crawler.base.CrawlerBase; import org.semanticdesktop.aperture.crawler.mail.DataObjectFactory.PartStreamFactory; +import org.semanticdesktop.aperture.crawler.mail.base.MessageDataObjectBase; import org.semanticdesktop.aperture.datasource.DataSource; import org.semanticdesktop.aperture.rdf.RDFContainer; import org.semanticdesktop.aperture.vocabulary.NFO; Modified: aperture/trunk/core/crawler/mail/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java =================================================================== --- aperture/trunk/core/crawler/mail/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java 2009-02-17 16:58:48 UTC (rev 1667) +++ aperture/trunk/core/crawler/mail/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java 2009-02-17 16:59:14 UTC (rev 1668) @@ -36,16 +36,15 @@ import org.ontoware.rdf2go.model.node.impl.URIImpl; import org.ontoware.rdf2go.vocabulary.RDF; import org.semanticdesktop.aperture.accessor.DataObject; -import org.semanticdesktop.aperture.accessor.MessageDataObject; import org.semanticdesktop.aperture.accessor.RDFContainerFactory; import org.semanticdesktop.aperture.accessor.base.FileDataObjectBase; -import org.semanticdesktop.aperture.accessor.base.MessageDataObjectBase; +import org.semanticdesktop.aperture.crawler.mail.base.MessageDataObjectBase; import org.semanticdesktop.aperture.datasource.DataSource; -import org.semanticdesktop.aperture.extractor.ExtractorException; -import org.semanticdesktop.aperture.extractor.util.HtmlParserUtil; +import org.semanticdesktop.aperture.helper.html.HtmlParserException; +import org.semanticdesktop.aperture.helper.html.HtmlParserUtil; import org.semanticdesktop.aperture.rdf.RDFContainer; +import org.semanticdesktop.aperture.rdf.util.ModelUtil; import org.semanticdesktop.aperture.subcrawler.SubCrawlerUtil; -import org.semanticdesktop.aperture.util.UriUtil; import org.semanticdesktop.aperture.vocabulary.NFO; import org.semanticdesktop.aperture.vocabulary.NIE; import org.semanticdesktop.aperture.vocabulary.NMO; @@ -679,7 +678,7 @@ try { HtmlParserUtil.parse(stream, null, extractor); } - catch (ExtractorException e) { + catch (HtmlParserException e) { return ""; } @@ -1306,7 +1305,7 @@ for (String header : headers) { String [] subheaders = header.split("\\s+"); for (String subheader : subheaders) { - Resource res = UriUtil.generateRandomResource(model); + Resource res = ModelUtil.generateRandomResource(model); model.addStatement(res,NMO.messageId,subheader); model.addStatement(res,RDF.type,NMO.Email); model.addStatement(metadata.getDescribedUri(),predicate,res); Added: aperture/trunk/core/crawler/mail/src/main/java/org/semanticdesktop/aperture/crawler/mail/MessageDataObject.java =================================================================== --- aperture/trunk/core/crawler/mail/src/main/java/org/semanticdesktop/aperture/crawler/mail/MessageDataObject.java (rev 0) +++ aperture/trunk/core/crawler/mail/src/main/java/org/semanticdesktop/aperture/crawler/mail/MessageDataObject.java 2009-02-17 16:59:14 UTC (rev 1668) @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.crawler.mail; + +import javax.mail.internet.MimeMessage; + +import org.semanticdesktop.aperture.accessor.DataObject; + +/** + * A general interface for DataObjects that encapsulate an instance of a javax.mail.internet.MimeMessage + */ +public interface MessageDataObject extends DataObject { + + /** + * Gets an instance of the MimeMessage encapsulated by this DataObject. + * + * @return an instance of the MimeMessage encapsulated by this MessageDataObject + */ + public MimeMessage getMimeMessage(); + + /** + * Sets the MimeMessage that is to be encapsulated by this DataObject. + * @param message the MimeMessage to set + */ + public void setMimeMessage(MimeMessage message); +} Added: aperture/trunk/core/crawler/mail/src/main/java/org/semanticdesktop/aperture/crawler/mail/base/MessageDataObjectBase.java =================================================================== --- aperture/trunk/core/crawler/mail/src/main/java/org/semanticdesktop/aperture/crawler/mail/base/MessageDataObjectBase.java (rev 0) +++ aperture/trunk/core/crawler/mail/src/main/java/org/semanticdesktop/aperture/crawler/mail/base/MessageDataObjectBase.java 2009-02-17 16:59:14 UTC (rev 1668) @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.crawler.mail.base; + +import javax.mail.internet.MimeMessage; + +import org.ontoware.rdf2go.model.node.URI; +import org.semanticdesktop.aperture.accessor.base.DataObjectBase; +import org.semanticdesktop.aperture.crawler.mail.MessageDataObject; +import org.semanticdesktop.aperture.datasource.DataSource; +import org.semanticdesktop.aperture.rdf.RDFContainer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * <p> + * A trivial default implementation of a MessageDataObject. + * </p> + * + * <p> + * This implementation needs an ExecutorService in order to work properly. Here's an explanation why is it + * so:. + * <ol> + * <li>The requirement was to get a stream of bytes EXACTLY as they appear in an .eml file, with ALL headers + * and such + * <li>there is no way to get the raw bytes of the message with all headers <br/> + * - getRawInputStream returns the raw input stream of the CONTENT <br/> + * - getContentStream obviously returns the CONTENT input stream, converted to 'intended' byte values according + * to the "Content-Transfer-Encoding" header if such header is present <br/> + * - tried subclassing the MimeMessage to fool java into giving me access to the protected byte[] content + * field, but java won't do it + * <li>I don't want to copy the message content for each MessageDataObject because it the memory consumption + * will skyrocket + * <li>The only method that returns the desired data is writeTo, but it accepts an OutputStream, while I need + * to return an InputStream, that's why I need to use PipedInputStream and PipedOutputStream, the writeTo + * method has to be invoked by a separate thread, so that the client can read from the returned input stream + * <li>I don't want to create a separate thread for each new MessageDataObjectBase instance, because + * performance will suck, therefore a shared thread pool with pre-created threads is a much better idea + * </ol> + * </p> + */ +public class MessageDataObjectBase extends DataObjectBase implements MessageDataObject { + + private Logger logger = LoggerFactory.getLogger(getClass()); + private MimeMessage message; + + /** + * Constructor accepting a message. It will use an exclusive single-thread executor service. Therefore + * when you create a MessageDataObjectBase instance with this constructor and then call getContent() on it + * a new thread will be created. It may incur a significant performance overhead. Wherever feasible, + * please set up a shared executor service and use the other constructor instead. + * + * @param id URI of the data object (obligatory) + * @param dataSource the data source where this data object came from (optional) + * @param metadata the metadata for this data object (optional) + * @param message the MimeMessage + */ + public MessageDataObjectBase(URI id, DataSource dataSource, RDFContainer metadata, MimeMessage message){ + super(id,dataSource,metadata); + this.message = message; + } + + public void setMimeMessage(MimeMessage message) { + this.message = message; + } + + public MimeMessage getMimeMessage() { + return message; + } +} \ No newline at end of file Modified: aperture/trunk/core/crawler/mbox/pom.xml =================================================================== --- aperture/trunk/core/crawler/mbox/pom.xml 2009-02-17 16:58:48 UTC (rev 1667) +++ aperture/trunk/core/crawler/mbox/pom.xml 2009-02-17 16:59:14 UTC (rev 1668) @@ -27,10 +27,14 @@ </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> - <artifactId>aperture-datasource-core</artifactId> + <artifactId>aperture-crawler-mail</artifactId> </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-datasource-mbox</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> <artifactId>aperture-rdf</artifactId> </dependency> <dependency> @@ -39,6 +43,11 @@ </dependency> <dependency> + <groupId>mstor</groupId> + <artifactId>mstor</artifactId> + </dependency> + + <dependency> <groupId>org.semweb4j</groupId> <artifactId>rdf2go.api</artifactId> </dependency> Modified: aperture/trunk/core/crawler/mbox/src/main/java/org/semanticdesktop/aperture/crawler/mbox/MboxCrawler.java =================================================================== --- aperture/trunk/core/crawler/mbox/src/main/java/org/semanticdesktop/aperture/crawler/mbox/MboxCrawler.java 2009-02-17 16:58:48 UTC (rev 1667) +++ aperture/trunk/core/crawler/mbox/src/main/java/org/semanticdesktop/aperture/crawler/mbox/MboxCrawler.java 2009-02-17 16:59:14 UTC (rev 1668) @@ -11,7 +11,6 @@ import java.net.URLEncoder; import java.util.Enumeration; import java.util.Properties; -import java.util.concurrent.Executors; import javax.mail.Folder; import javax.mail.Header; Modified: aperture/trunk/core/crawler/web/pom.xml =================================================================== --- aperture/trunk/core/crawler/web/pom.xml 2009-02-17 16:58:48 UTC (rev 1667) +++ aperture/trunk/core/crawler/web/pom.xml 2009-02-17 16:59:14 UTC (rev 1668) @@ -27,10 +27,14 @@ </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> - <artifactId>aperture-datasource-core</artifactId> + <artifactId>aperture-datasource-web</artifactId> </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-mime-identifier-core</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> <artifactId>aperture-rdf</artifactId> </dependency> <dependency> Modified: aperture/trunk/core/extractor/core/pom.xml =================================================================== --- aperture/trunk/core/extractor/core/pom.xml 2009-02-17 16:58:48 UTC (rev 1667) +++ aperture/trunk/core/extractor/core/pom.xml 2009-02-17 16:59:14 UTC (rev 1668) @@ -47,6 +47,7 @@ <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-jdk14</artifactId> + <scope>test</scope> </dependency> <dependency> Property changes on: aperture/trunk/core/helper/html ___________________________________________________________________ Added: svn:ignore + .classpath .project .settings target Modified: aperture/trunk/core/helper/html/pom.xml =================================================================== --- aperture/trunk/core/helper/html/pom.xml 2009-02-17 16:58:48 UTC (rev 1667) +++ aperture/trunk/core/helper/html/pom.xml 2009-02-17 16:59:14 UTC (rev 1668) @@ -18,6 +18,11 @@ <dependencies> <dependency> + <groupId>org.htmlparser</groupId> + <artifactId>htmlparser</artifactId> + </dependency> + + <dependency> <groupId>org.osgi</groupId> <artifactId>osgi_R4_core</artifactId> </dependency> @@ -28,7 +33,7 @@ </dependency> <dependency> <groupId>org.slf4j</groupId> - <artifactId>slf4j-jdk14</artifactId> + <artifactId>jcl-over-slf4j</artifactId> </dependency> <dependency> Added: aperture/trunk/core/helper/html/src/main/java/org/semanticdesktop/aperture/helper/html/HtmlParserException.java =================================================================== --- aperture/trunk/core/helper/html/src/main/java/org/semanticdesktop/aperture/helper/html/HtmlParserException.java (rev 0) +++ aperture/trunk/core/helper/html/src/main/java/org/semanticdesktop/aperture/helper/html/HtmlParserException.java 2009-02-17 16:59:14 UTC (rev 1668) @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2005 - 2009 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.helper.html; + +public class HtmlParserException extends Exception { + + /** + * Constructs an HtmlParserException with no detail message. + */ + public HtmlParserException() { + super(); + } + + /** + * Constructs an HtmlParserException with the specified detail message. + * + * @param msg The detail message. + */ + public HtmlParserException(String msg) { + super(msg); + } + + /** + * Constructs an HtmlParserException with the specified detail message and cause. + * + * Note that the detail message associated with the cause is not automatically incorporated in this + * exception's detail message. + * + * @param msg The detail message. + * @param source The cause, which is saved for later retrieval by the Throwable.getCause() method. A + * null value is permitted, and indicates that the cause is nonexistent or unknown. + */ + public HtmlParserException(String msg, Throwable source) { + super(msg, source); + } + + /** + * Constructs an HtmlParserException with the specified cause and a detail message of <tt>(cause==null ? + * null : cause.toString())</tt> (which typically contains the class and detail message of cause). + * This constructor is useful for exceptions that are little more than wrappers for other throwables. + * + * @param source The cause, which is saved for later retrieval by the Throwable.getCause() method. A + * null value is permitted, and indicates that the cause is nonexistent or unknown. + */ + public HtmlParserException(Throwable source) { + super(source); + } +} Modified: aperture/trunk/core/helper/html/src/main/java/org/semanticdesktop/aperture/helper/html/HtmlParserUtil.java =================================================================== --- aperture/trunk/core/helper/html/src/main/java/org/semanticdesktop/aperture/helper/html/HtmlParserUtil.java 2009-02-17 16:58:48 UTC (rev 1667) +++ aperture/trunk/core/helper/html/src/main/java/org/semanticdesktop/aperture/helper/html/HtmlParserUtil.java 2009-02-17 16:59:14 UTC (rev 1668) @@ -4,7 +4,7 @@ * * Licensed under the Aperture BSD-style license. */ -package org.semanticdesktop.aperture.extractor.util; +package org.semanticdesktop.aperture.helper.html; import java.io.BufferedInputStream; import java.io.InputStream; @@ -26,7 +26,6 @@ import org.htmlparser.util.ParserFeedback; import org.htmlparser.util.Translate; import org.htmlparser.visitors.NodeVisitor; -import org.semanticdesktop.aperture.extractor.ExtractorException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -64,10 +63,10 @@ * @param stream The stream containing the HTML document. * @param charset The charset of the HTML document (optional); * @param extractor The extractor that is informed about encountered document parts. - * @throws ExtractorException + * @throws HtmlParserException */ public static void parse(InputStream stream, Charset charset, ContentExtractor extractor) - throws ExtractorException { + throws HtmlParserException { // the specified charset will be used to direct the parser, until it encounters a meta tag that // tells him to use a different charset String charsetName = (charset == null) ? Page.DEFAULT_CHARSET : charset.displayName(); @@ -108,11 +107,11 @@ } } catch (ParserException e) { - throw new ExtractorException(e); + throw new HtmlParserException(e); } } catch (UnsupportedEncodingException e) { - throw new ExtractorException(e); + throw new HtmlParserException(e); } } Property changes on: aperture/trunk/core/helper/poi ___________________________________________________________________ Added: svn:ignore + .classpath .project .settings target Modified: aperture/trunk/core/helper/poi/pom.xml =================================================================== --- aperture/trunk/core/helper/poi/pom.xml 2009-02-17 16:58:48 UTC (rev 1667) +++ aperture/trunk/core/helper/poi/pom.xml 2009-02-17 16:59:14 UTC (rev 1668) @@ -18,6 +18,29 @@ <dependencies> <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-rdf</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-util</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-vocabulary-core</artifactId> + </dependency> + + <dependency> + <groupId>org.apache.poi</groupId> + <artifactId>poi</artifactId> + </dependency> + + <dependency> + <groupId>org.semweb4j</groupId> + <artifactId>rdf2go.api</artifactId> + </dependency> + + <dependency> <groupId>org.osgi</groupId> <artifactId>osgi_R4_core</artifactId> </dependency> @@ -28,7 +51,7 @@ </dependency> <dependency> <groupId>org.slf4j</groupId> - <artifactId>slf4j-jdk14</artifactId> + <artifactId>jcl-over-slf4j</artifactId> </dependency> <dependency> Modified: aperture/trunk/core/helper/poi/src/main/java/org/semanticdesktop/aperture/helper/poi/PoiUtil.java =================================================================== --- aperture/trunk/core/helper/poi/src/main/java/org/semanticdesktop/aperture/helper/poi/PoiUtil.java 2009-02-17 16:58:48 UTC (rev 1667) +++ aperture/trunk/core/helper/poi/src/main/java/org/semanticdesktop/aperture/helper/poi/PoiUtil.java 2009-02-17 16:59:14 UTC (rev 1668) @@ -4,7 +4,7 @@ * * Licensed under the Aperture BSD-style license. */ -package org.semanticdesktop.aperture.extractor.util; +package org.semanticdesktop.aperture.helper.poi; import java.io.BufferedInputStream; import java.io.FilterInputStream; @@ -24,7 +24,8 @@ import org.ontoware.rdf2go.model.node.URI; import org.ontoware.rdf2go.vocabulary.RDF; import org.semanticdesktop.aperture.rdf.RDFContainer; -import org.semanticdesktop.aperture.util.UriUtil; +import org.semanticdesktop.aperture.rdf.util.ModelUtil; +import org.semanticdesktop.aperture.util.StringExtractor; import org.semanticdesktop.aperture.vocabulary.NAO; import org.semanticdesktop.aperture.vocabulary.NCO; import org.semanticdesktop.aperture.vocabulary.NFO; @@ -194,7 +195,7 @@ private static void copyContact(String name, URI property, RDFContainer container) { if (name != null) { Model model = container.getModel(); - Resource resource = UriUtil.generateRandomResource(model); + Resource resource = ModelUtil.generateRandomResource(model); model.addStatement(container.getDescribedUri(), property, resource); model.addStatement(resource, RDF.type, NCO.Contact); model.addStatement(resource, NCO.fullname, name); Modified: aperture/trunk/core/pom.xml =================================================================== --- aperture/trunk/core/pom.xml 2009-02-17 16:58:48 UTC (rev 1667) +++ aperture/trunk/core/pom.xml 2009-02-17 16:59:14 UTC (rev 1668) @@ -22,13 +22,10 @@ <module>crawler</module> <module>datasource</module> <module>extractor</module> + <module>helper</module> <module>mime-identifier</module> <module>rdf</module> <module>util</module> <module>vocabulary</module> - -<!-- - <module>test</module> ---> </modules> </project> Modified: aperture/trunk/core/util/src/main/java/org/semanticdesktop/aperture/util/StringExtractor.java =================================================================== --- aperture/trunk/core/util/src/main/java/org/semanticdesktop/aperture/util/StringExtractor.java 2009-02-17 16:58:48 UTC (rev 1667) +++ aperture/trunk/core/util/src/main/java/org/semanticdesktop/aperture/util/StringExtractor.java 2009-02-17 16:59:14 UTC (rev 1668) @@ -4,7 +4,7 @@ * * Licensed under the Aperture BSD-style license. */ -package org.semanticdesktop.aperture.extractor.util; +package org.semanticdesktop.aperture.util; import java.io.IOException; import java.io.InputStream; Modified: aperture/trunk/pom.xml =================================================================== --- aperture/trunk/pom.xml 2009-02-17 16:58:48 UTC (rev 1667) +++ aperture/trunk/pom.xml 2009-02-17 16:59:14 UTC (rev 1668) @@ -6,7 +6,7 @@ <parent> <groupId>org.semanticdesktop.aperture</groupId> <artifactId>aperture-root-pom</artifactId> - <version>1</version> + <version>2</version> </parent> <groupId>org.semanticdesktop.aperture</groupId> @@ -35,7 +35,6 @@ <aperture.tools.version>1.0.0-SNAPSHOT</aperture.tools.version> <rdf2go.version>4.7.0</rdf2go.version> <openrdf.sesame.version>2.3.0-SNAPSHOT</openrdf.sesame.version> - <slf4j.version>1.5.6</slf4j.version> </properties> <dependencyManagement> @@ -63,11 +62,46 @@ </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-datasource-filesystem</artifactId> + <version>${aperture.version}</version> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-datasource-ical</artifactId> + <version>${aperture.version}</version> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-datasource-imap</artifactId> + <version>${aperture.version}</version> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-datasource-mbox</artifactId> + <version>${aperture.version}</version> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-datasource-web</artifactId> + <version>${aperture.version}</version> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> <artifactId>aperture-extractor-core</artifactId> <version>${aperture.version}</version> </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-helper-html</artifactId> + <version>${aperture.version}</version> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-helper-poi</artifactId> + <version>${aperture.version}</version> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> <artifactId>aperture-mime-identifier-core</artifactId> <version>${aperture.version}</version> </dependency> @@ -156,7 +190,64 @@ <version>1.0</version> <scope>provided</scope> </dependency> + + <dependency> + <groupId>javax.mail</groupId> + <artifactId>mail</artifactId> + <version>1.4.1</version> + </dependency> + + <dependency> + <groupId>org.apache.poi</groupId> + <artifactId>poi</artifactId> + <version>3.2-FINAL</version> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + <exclusion> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + </exclusion> + </exclusions> + </dependency> + + <dependency> + <groupId>org.htmlparser</groupId> + <artifactId>htmlparser</artifactId> + <version>1.6</version> + </dependency> + + <dependency> + <groupId>ical4j</groupId> + <artifactId>ical4j</artifactId> + <version>1.0-beta4</version> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>mstor</groupId> + <artifactId>mstor</artifactId> + <version>0.9.11</version> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>com.beetstra.jutf7</groupId> + <artifactId>jutf7</artifactId> + <version>0.9.0</version> + </dependency> + <!-- Testing --> <dependency> <groupId>junit</groupId> @@ -171,18 +262,6 @@ <artifactId>maven-plugin-api</artifactId> <version>2.0.9</version> </dependency> - - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - <version>${slf4j.version}</version> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-jdk14</artifactId> - <version>${slf4j.version}</version> - <scope>test</scope> - </dependency> </dependencies> </dependencyManagement> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <her...@us...> - 2009-02-17 18:07:30
|
Revision: 1672 http://aperture.svn.sourceforge.net/aperture/?rev=1672&view=rev Author: herko_ter_horst Date: 2009-02-17 18:07:25 +0000 (Tue, 17 Feb 2009) Log Message: ----------- Implement default crawler and linkextractor modules. Security modules skeletons. Modified Paths: -------------- aperture/trunk/core/crawler/pom.xml aperture/trunk/core/crawler/web/pom.xml aperture/trunk/core/linkextractor/html/pom.xml aperture/trunk/core/pom.xml aperture/trunk/pom.xml Added Paths: ----------- aperture/trunk/core/security/ aperture/trunk/core/security/core/ aperture/trunk/core/security/core/pom.xml aperture/trunk/core/security/core/src/ aperture/trunk/core/security/core/src/main/ aperture/trunk/core/security/core/src/main/java/ aperture/trunk/core/security/core/src/main/java/org/ aperture/trunk/core/security/core/src/main/java/org/semanticdesktop/ aperture/trunk/core/security/core/src/main/java/org/semanticdesktop/aperture/ aperture/trunk/core/security/core/src/test/ aperture/trunk/core/security/core/src/test/java/ aperture/trunk/core/security/core/src/test/java/org/ aperture/trunk/core/security/core/src/test/java/org/semanticdesktop/ aperture/trunk/core/security/core/src/test/java/org/semanticdesktop/aperture/ aperture/trunk/core/security/pom.xml aperture/trunk/core/security/swing/ aperture/trunk/core/security/swing/pom.xml aperture/trunk/core/security/swing/src/ aperture/trunk/core/security/swing/src/main/ aperture/trunk/core/security/swing/src/main/java/ aperture/trunk/core/security/swing/src/main/java/org/ aperture/trunk/core/security/swing/src/main/java/org/semanticdesktop/ aperture/trunk/core/security/swing/src/main/java/org/semanticdesktop/aperture/ aperture/trunk/core/security/swing/src/test/ aperture/trunk/core/security/swing/src/test/java/ aperture/trunk/core/security/swing/src/test/java/org/ aperture/trunk/core/security/swing/src/test/java/org/semanticdesktop/ aperture/trunk/core/security/swing/src/test/java/org/semanticdesktop/aperture/ aperture/trunk/default/crawler/ aperture/trunk/default/crawler/pom.xml aperture/trunk/default/crawler/src/ aperture/trunk/default/crawler/src/main/ aperture/trunk/default/crawler/src/main/java/ aperture/trunk/default/crawler/src/main/java/org/ aperture/trunk/default/crawler/src/main/java/org/semanticdesktop/ aperture/trunk/default/crawler/src/main/java/org/semanticdesktop/aperture/ aperture/trunk/default/crawler/src/main/java/org/semanticdesktop/aperture/crawler/ aperture/trunk/default/crawler/src/main/java/org/semanticdesktop/aperture/crawler/bundle/ aperture/trunk/default/crawler/src/main/java/org/semanticdesktop/aperture/crawler/bundle/DefaultCrawlerServiceActivator.java aperture/trunk/default/crawler/src/main/java/org/semanticdesktop/aperture/crawler/impl/ aperture/trunk/default/crawler/src/main/java/org/semanticdesktop/aperture/crawler/impl/DefaultCrawlerRegistry.java aperture/trunk/default/crawler/src/main/resources/ aperture/trunk/default/crawler/src/test/ aperture/trunk/default/crawler/src/test/java/ aperture/trunk/default/crawler/src/test/java/org/ aperture/trunk/default/crawler/src/test/java/org/semanticdesktop/ aperture/trunk/default/crawler/src/test/java/org/semanticdesktop/aperture/ aperture/trunk/default/linkextractor/ aperture/trunk/default/linkextractor/pom.xml aperture/trunk/default/linkextractor/src/ aperture/trunk/default/linkextractor/src/main/ aperture/trunk/default/linkextractor/src/main/java/ aperture/trunk/default/linkextractor/src/main/java/org/ aperture/trunk/default/linkextractor/src/main/java/org/semanticdesktop/ aperture/trunk/default/linkextractor/src/main/java/org/semanticdesktop/aperture/ aperture/trunk/default/linkextractor/src/main/java/org/semanticdesktop/aperture/hypertext/ aperture/trunk/default/linkextractor/src/main/java/org/semanticdesktop/aperture/hypertext/linkextractor/ aperture/trunk/default/linkextractor/src/main/java/org/semanticdesktop/aperture/hypertext/linkextractor/bundle/ aperture/trunk/default/linkextractor/src/main/java/org/semanticdesktop/aperture/hypertext/linkextractor/impl/ aperture/trunk/default/linkextractor/src/main/java/org/semanticdesktop/aperture/hypertext/linkextractor/impl/DefaultLinkExtractorRegistry.java aperture/trunk/default/linkextractor/src/main/resources/ aperture/trunk/default/linkextractor/src/main/resources/org/ aperture/trunk/default/linkextractor/src/main/resources/org/semanticdesktop/ aperture/trunk/default/linkextractor/src/main/resources/org/semanticdesktop/aperture/ aperture/trunk/default/linkextractor/src/main/resources/org/semanticdesktop/aperture/hypertext/ aperture/trunk/default/linkextractor/src/main/resources/org/semanticdesktop/aperture/hypertext/linkextractor/ aperture/trunk/default/linkextractor/src/main/resources/org/semanticdesktop/aperture/hypertext/linkextractor/impl/ aperture/trunk/default/linkextractor/src/main/resources/org/semanticdesktop/aperture/hypertext/linkextractor/impl/defaults.xml aperture/trunk/default/linkextractor/src/test/ aperture/trunk/default/linkextractor/src/test/java/ aperture/trunk/default/linkextractor/src/test/java/org/ aperture/trunk/default/linkextractor/src/test/java/org/semanticdesktop/ aperture/trunk/default/linkextractor/src/test/java/org/semanticdesktop/aperture/ Removed Paths: ------------- aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/impl/DefaultCrawlerRegistry.java aperture/trunk/core/linkextractor/core/src/main/java/org/semanticdesktop/aperture/hypertext/linkextractor/impl/DefaultLinkExtractorRegistry.java aperture/trunk/core/linkextractor/core/src/main/java/org/semanticdesktop/aperture/hypertext/linkextractor/impl/defaults.xml Property Changed: ---------------- aperture/trunk/core/linkextractor/core/ aperture/trunk/core/linkextractor/html/ Deleted: aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/impl/DefaultCrawlerRegistry.java =================================================================== --- aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/impl/DefaultCrawlerRegistry.java 2009-02-17 17:42:25 UTC (rev 1671) +++ aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/impl/DefaultCrawlerRegistry.java 2009-02-17 18:07:25 UTC (rev 1672) @@ -1,125 +0,0 @@ -/* - * Copyright (c) 2005 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. - * All rights reserved. - * - * Licensed under the Aperture BSD-style license. - */ -package org.semanticdesktop.aperture.crawler.impl; - -import java.io.BufferedInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.Map; - -import javax.xml.parsers.ParserConfigurationException; - -import org.semanticdesktop.aperture.crawler.CrawlerFactory; -import org.semanticdesktop.aperture.util.ResourceUtil; -import org.semanticdesktop.aperture.util.SimpleSAXAdapter; -import org.semanticdesktop.aperture.util.SimpleSAXParser; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.xml.sax.SAXException; - -/** - * DefaultCrawlerRegistry provides the complete set of CrawlerFactories available in Aperture. - * - * <p> - * The main purpose of this class is to be able to conveniently access the set of CrawlerFactories in non-OSGi - * applications, which take care of this initialization in a different way. A single line of code gives you - * the entire set without requiring further setup. - * - * <p> - * The set of factory class names are loaded from an XML file which can optionally be specified to the - * constructor. This class requires all the listed classes to have a no-argument constructor. - */ -public class DefaultCrawlerRegistry extends CrawlerRegistryImpl { - - private static final String DEFAULT_FILE = "org/semanticdesktop/aperture/crawler/impl/defaults.xml"; - - private static final String CRAWLER_FACTORY_TAG = "crawlerFactory"; - - private static final String NAME_TAG = "name"; - - public DefaultCrawlerRegistry() { - try { - InputStream stream = ResourceUtil.getInputStream(DEFAULT_FILE, DefaultCrawlerRegistry.class); - BufferedInputStream buffer = new BufferedInputStream(stream); - parse(buffer); - buffer.close(); - } - catch (IOException e) { - throw new RuntimeException("unable to parse " + DEFAULT_FILE, e); - } - } - - public DefaultCrawlerRegistry(InputStream stream) throws IOException { - parse(stream); - } - - private void parse(InputStream stream) throws IOException { - try { - // Parse the document - SimpleSAXParser parser = new SimpleSAXParser(); - parser.setListener(new CrawlerParser()); - parser.parse(stream); - } - catch (ParserConfigurationException e) { - IOException ie = new IOException(e.getMessage()); - ie.initCause(e); - throw ie; - } - catch (SAXException e) { - IOException ie = new IOException(e.getMessage()); - ie.initCause(e); - throw ie; - } - } - - private class CrawlerParser extends SimpleSAXAdapter { - - private Logger logger = LoggerFactory.getLogger(getClass()); - - private boolean insideFactoryElement = false; - - public void startTag(String tagName, Map atts, String text) throws SAXException { - if (CRAWLER_FACTORY_TAG.equals(tagName)) { - insideFactoryElement = true; - } - else if (NAME_TAG.equals(tagName) && insideFactoryElement && text != null) { - processClassName(text); - } - } - - public void endTag(String tagName) { - if (CRAWLER_FACTORY_TAG.equals(tagName)) { - insideFactoryElement = false; - } - } - - private void processClassName(String className) { - className = className.trim(); - if (!className.equals("")) { - try { - Class clazz = Class.forName(className); - Object instance = clazz.newInstance(); - CrawlerFactory factory = (CrawlerFactory) instance; - add(factory); - } - catch (ClassNotFoundException e) { - logger.warn("unable to find class " + className + ", ignoring", e); - } - catch (InstantiationException e) { - logger.warn("unable to instantiate class " + className + ", ignoring", e); - } - catch (IllegalAccessException e) { - logger.warn("unable to access class " + className + ", ignoring", e); - } - catch (ClassCastException e) { - logger.warn( - "unable to cast instance to " + CrawlerFactory.class.getName() + ", ignoring", e); - } - } - } - } -} Modified: aperture/trunk/core/crawler/pom.xml =================================================================== --- aperture/trunk/core/crawler/pom.xml 2009-02-17 17:42:25 UTC (rev 1671) +++ aperture/trunk/core/crawler/pom.xml 2009-02-17 18:07:25 UTC (rev 1672) @@ -19,5 +19,11 @@ <modules> <module>core</module> + <module>filesystem</module> + <module>ical</module> + <module>imap</module> + <module>mail</module> + <module>mbox</module> + <module>web</module> </modules> </project> \ No newline at end of file Modified: aperture/trunk/core/crawler/web/pom.xml =================================================================== --- aperture/trunk/core/crawler/web/pom.xml 2009-02-17 17:42:25 UTC (rev 1671) +++ aperture/trunk/core/crawler/web/pom.xml 2009-02-17 18:07:25 UTC (rev 1672) @@ -31,6 +31,10 @@ </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-linkextractor-core</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> <artifactId>aperture-mime-identifier-core</artifactId> </dependency> <dependency> Property changes on: aperture/trunk/core/linkextractor/core ___________________________________________________________________ Added: svn:ignore + .classpath .project .settings target Deleted: aperture/trunk/core/linkextractor/core/src/main/java/org/semanticdesktop/aperture/hypertext/linkextractor/impl/DefaultLinkExtractorRegistry.java =================================================================== --- aperture/trunk/core/linkextractor/core/src/main/java/org/semanticdesktop/aperture/hypertext/linkextractor/impl/DefaultLinkExtractorRegistry.java 2009-02-17 17:42:25 UTC (rev 1671) +++ aperture/trunk/core/linkextractor/core/src/main/java/org/semanticdesktop/aperture/hypertext/linkextractor/impl/DefaultLinkExtractorRegistry.java 2009-02-17 18:07:25 UTC (rev 1672) @@ -1,126 +0,0 @@ -/* - * Copyright (c) 2005 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. - * All rights reserved. - * - * Licensed under the Aperture BSD-style license. - */ -package org.semanticdesktop.aperture.hypertext.linkextractor.impl; - -import java.io.BufferedInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.Map; - -import javax.xml.parsers.ParserConfigurationException; - -import org.semanticdesktop.aperture.hypertext.linkextractor.LinkExtractorFactory; -import org.semanticdesktop.aperture.util.ResourceUtil; -import org.semanticdesktop.aperture.util.SimpleSAXAdapter; -import org.semanticdesktop.aperture.util.SimpleSAXParser; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.xml.sax.SAXException; - -/** - * DefaultLinkExtractorRegistry provides the complete set of LinkExtractorFactories available in Aperture. - * - * <p> - * The main purpose of this class is to be able to conveniently access the set of LinkExtractorFactories in - * non-OSGi applications, which take care of this initialization in a different way. A single line of code - * gives you the entire set without requiring further setup. - * - * <p> - * The set of factory class names are loaded from an XML file which can optionally be specified to the - * constructor. This class requires all the listed classes to have a no-argument constructor. - */ -public class DefaultLinkExtractorRegistry extends LinkExtractorRegistryImpl { - - private static final String DEFAULT_FILE = "org/semanticdesktop/aperture/hypertext/linkextractor/impl/defaults.xml"; - - private static final String SOURCE_FACTORY_TAG = "linkExtractorFactory"; - - private static final String NAME_TAG = "name"; - - public DefaultLinkExtractorRegistry() { - try { - InputStream stream = ResourceUtil - .getInputStream(DEFAULT_FILE, DefaultLinkExtractorRegistry.class); - BufferedInputStream buffer = new BufferedInputStream(stream); - parse(buffer); - buffer.close(); - } - catch (IOException e) { - throw new RuntimeException("unable to parse " + DEFAULT_FILE, e); - } - } - - public DefaultLinkExtractorRegistry(InputStream stream) throws IOException { - parse(stream); - } - - private void parse(InputStream stream) throws IOException { - try { - // Parse the document - SimpleSAXParser parser = new SimpleSAXParser(); - parser.setListener(new LinkExtractorParser()); - parser.parse(stream); - } - catch (ParserConfigurationException e) { - IOException ie = new IOException(e.getMessage()); - ie.initCause(e); - throw ie; - } - catch (SAXException e) { - IOException ie = new IOException(e.getMessage()); - ie.initCause(e); - throw ie; - } - } - - private class LinkExtractorParser extends SimpleSAXAdapter { - - private Logger logger = LoggerFactory.getLogger(getClass()); - - private boolean insideFactoryElement = false; - - public void startTag(String tagName, Map atts, String text) throws SAXException { - if (SOURCE_FACTORY_TAG.equals(tagName)) { - insideFactoryElement = true; - } - else if (NAME_TAG.equals(tagName) && insideFactoryElement && text != null) { - processClassName(text); - } - } - - public void endTag(String tagName) { - if (SOURCE_FACTORY_TAG.equals(tagName)) { - insideFactoryElement = false; - } - } - - private void processClassName(String className) { - className = className.trim(); - if (!className.equals("")) { - try { - Class clazz = Class.forName(className); - Object instance = clazz.newInstance(); - LinkExtractorFactory factory = (LinkExtractorFactory) instance; - add(factory); - } - catch (ClassNotFoundException e) { - logger.warn("unable to find class " + className + ", ignoring", e); - } - catch (InstantiationException e) { - logger.warn("unable to instantiate class " + className + ", ignoring", e); - } - catch (IllegalAccessException e) { - logger.warn("unable to access class " + className + ", ignoring", e); - } - catch (ClassCastException e) { - logger.warn("unable to cast instance to " + LinkExtractorFactory.class.getName() - + ", ignoring", e); - } - } - } - } -} Deleted: aperture/trunk/core/linkextractor/core/src/main/java/org/semanticdesktop/aperture/hypertext/linkextractor/impl/defaults.xml =================================================================== --- aperture/trunk/core/linkextractor/core/src/main/java/org/semanticdesktop/aperture/hypertext/linkextractor/impl/defaults.xml 2009-02-17 17:42:25 UTC (rev 1671) +++ aperture/trunk/core/linkextractor/core/src/main/java/org/semanticdesktop/aperture/hypertext/linkextractor/impl/defaults.xml 2009-02-17 18:07:25 UTC (rev 1672) @@ -1,7 +0,0 @@ -<?xml version='1.0' encoding='UTF-8'?> - -<linkExtractorFactories> - <linkExtractorFactory> - <name>org.semanticdesktop.aperture.hypertext.linkextractor.html.HtmlLinkExtractorFactory</name> - </linkExtractorFactory> -</linkExtractorFactories> \ No newline at end of file Property changes on: aperture/trunk/core/linkextractor/html ___________________________________________________________________ Added: svn:ignore + .classpath .project .settings target Modified: aperture/trunk/core/linkextractor/html/pom.xml =================================================================== --- aperture/trunk/core/linkextractor/html/pom.xml 2009-02-17 17:42:25 UTC (rev 1671) +++ aperture/trunk/core/linkextractor/html/pom.xml 2009-02-17 18:07:25 UTC (rev 1672) @@ -11,10 +11,10 @@ <version>1.3.0-SNAPSHOT</version> </parent> - <artifactId>aperture-linkextractor-core</artifactId> + <artifactId>aperture-linkextractor-html</artifactId> - <name>Aperture Core: Link Extractor - Core</name> - <description>Link Extractor API</description> + <name>Aperture Core: Link Extractor - HTML</name> + <description>HTML Link Extractor</description> <dependencies> <dependency> Modified: aperture/trunk/core/pom.xml =================================================================== --- aperture/trunk/core/pom.xml 2009-02-17 17:42:25 UTC (rev 1671) +++ aperture/trunk/core/pom.xml 2009-02-17 18:07:25 UTC (rev 1672) @@ -23,8 +23,10 @@ <module>datasource</module> <module>extractor</module> <module>helper</module> + <module>linkextractor</module> <module>mime-identifier</module> <module>rdf</module> + <module>security</module> <module>util</module> <module>vocabulary</module> </modules> Added: aperture/trunk/core/security/core/pom.xml =================================================================== --- aperture/trunk/core/security/core/pom.xml (rev 0) +++ aperture/trunk/core/security/core/pom.xml 2009-02-17 18:07:25 UTC (rev 1672) @@ -0,0 +1,60 @@ +<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> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-security</artifactId> + <version>1.3.0-SNAPSHOT</version> + </parent> + + <artifactId>aperture-security-core</artifactId> + + <name>Aperture Core: Security - Core</name> + <description>Security API</description> + + <dependencies> + <dependency> + <groupId>org.osgi</groupId> + <artifactId>osgi_R4_core</artifactId> + </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Export-Package>org.semanticdesktop.aperture.security</Export-Package> + <Private-Package>org.semanticdesktop.aperture.security.impl,org.semanticdesktop.aperture.security.impl</Private-Package> + <Bundle-Activator>org.semanticdesktop.aperture.security.bundle.ExtractorServiceActivator</Bundle-Activator> + </instructions> + </configuration> + </plugin> + </plugins> + </build> +</project> Added: aperture/trunk/core/security/pom.xml =================================================================== --- aperture/trunk/core/security/pom.xml (rev 0) +++ aperture/trunk/core/security/pom.xml 2009-02-17 18:07:25 UTC (rev 1672) @@ -0,0 +1,24 @@ +<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> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-core</artifactId> + <version>1.3.0-SNAPSHOT</version> + </parent> + + <artifactId>aperture-security</artifactId> + <packaging>pom</packaging> + + <name>Aperture Core: Security</name> + <description>Security implementation</description> + + <modules> + <module>core</module> + <module>swing</module> + </modules> +</project> \ No newline at end of file Added: aperture/trunk/core/security/swing/pom.xml =================================================================== --- aperture/trunk/core/security/swing/pom.xml (rev 0) +++ aperture/trunk/core/security/swing/pom.xml 2009-02-17 18:07:25 UTC (rev 1672) @@ -0,0 +1,65 @@ +<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> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-security</artifactId> + <version>1.3.0-SNAPSHOT</version> + </parent> + + <artifactId>aperture-security-swing</artifactId> + + <name>Aperture Core: Security - Swing UI</name> + <description>Swing UI for Security</description> + + <dependencies> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-security-core</artifactId> + </dependency> + + <dependency> + <groupId>org.osgi</groupId> + <artifactId>osgi_R4_core</artifactId> + </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Export-Package>org.semanticdesktop.aperture.security</Export-Package> + <Private-Package>org.semanticdesktop.aperture.security.impl,org.semanticdesktop.aperture.security.impl</Private-Package> + <Bundle-Activator>org.semanticdesktop.aperture.security.bundle.ExtractorServiceActivator</Bundle-Activator> + </instructions> + </configuration> + </plugin> + </plugins> + </build> +</project> Property changes on: aperture/trunk/default/crawler ___________________________________________________________________ Added: svn:ignore + .classpath .project .settings target Added: aperture/trunk/default/crawler/pom.xml =================================================================== --- aperture/trunk/default/crawler/pom.xml (rev 0) +++ aperture/trunk/default/crawler/pom.xml 2009-02-17 18:07:25 UTC (rev 1672) @@ -0,0 +1,82 @@ +<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> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-default</artifactId> + <version>1.3.0-SNAPSHOT</version> + </parent> + + <artifactId>aperture-default-crawler</artifactId> + + <name>Aperture Default: Crawlers</name> + <description>Crawler API and default implementation</description> + + <dependencies> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-crawler-core</artifactId> + <version>${aperture.version}</version> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-crawler-filesystem</artifactId> + <version>${aperture.version}</version> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-crawler-ical</artifactId> + <version>${aperture.version}</version> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-crawler-imap</artifactId> + <version>${aperture.version}</version> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-crawler-mbox</artifactId> + <version>${aperture.version}</version> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-crawler-web</artifactId> + <version>${aperture.version}</version> + </dependency> + + <dependency> + <groupId>org.osgi</groupId> + <artifactId>osgi_R4_core</artifactId> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Export-Package>!org.semanticdesktop.aperture.crawler.bundle,!org.semanticdesktop.aperture.crawler.*.bundle,!org.semanticdesktop.aperture.crawler.impl,org.semanticdesktop.aperture.crawler.*</Export-Package> + <Private-Package>org.semanticdesktop.aperture.crawler.bundle;-split-package:=first,org.semanticdesktop.aperture.crawler.*.bundle,org.semanticdesktop.aperture.crawler.impl;-split-package:=merge-first</Private-Package> + <Bundle-Activator>org.semanticdesktop.aperture.crawler.bundle.DefaultCrawlerServiceActivator</Bundle-Activator> + </instructions> + </configuration> + </plugin> + </plugins> + </build> + +</project> Added: aperture/trunk/default/crawler/src/main/java/org/semanticdesktop/aperture/crawler/bundle/DefaultCrawlerServiceActivator.java =================================================================== --- aperture/trunk/default/crawler/src/main/java/org/semanticdesktop/aperture/crawler/bundle/DefaultCrawlerServiceActivator.java (rev 0) +++ aperture/trunk/default/crawler/src/main/java/org/semanticdesktop/aperture/crawler/bundle/DefaultCrawlerServiceActivator.java 2009-02-17 18:07:25 UTC (rev 1672) @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2006 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.crawler.bundle; + +import java.util.Hashtable; + +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceEvent; +import org.osgi.framework.ServiceListener; +import org.osgi.framework.ServiceReference; +import org.osgi.framework.ServiceRegistration; +import org.semanticdesktop.aperture.crawler.CrawlerFactory; +import org.semanticdesktop.aperture.crawler.CrawlerRegistry; +import org.semanticdesktop.aperture.crawler.impl.DefaultCrawlerRegistry; + +public class DefaultCrawlerServiceActivator implements BundleActivator, ServiceListener { + + private BundleContext bc = null; + + private ServiceRegistration registration; + + private CrawlerRegistry registry; + + public void start(BundleContext context) throws Exception { + + bc = context; + registry = new DefaultCrawlerRegistry(); + registration = bc.registerService(CrawlerRegistry.class.getName(), registry, + new Hashtable()); + + String filter = "(objectclass=" + CrawlerFactory.class.getName() + ")"; + bc.addServiceListener(this, filter); + + ServiceReference references[] = bc.getServiceReferences(null, filter); + + for (int i = 0; references != null && i < references.length; i++) { + this.serviceChanged(new ServiceEvent(ServiceEvent.REGISTERED, references[i])); + } + + + } + + public void stop(BundleContext context) throws Exception { + registration.unregister(); + bc = null; + } + + public void serviceChanged(ServiceEvent event) { + CrawlerFactory factory; + switch (event.getType()) { + case ServiceEvent.REGISTERED: + factory = (CrawlerFactory) bc.getService(event + .getServiceReference()); + registry.add(factory); + break; + case ServiceEvent.MODIFIED: + factory = (CrawlerFactory) bc.getService(event + .getServiceReference()); + registry.remove(factory); + registry.add(factory); + break; + case ServiceEvent.UNREGISTERING: + factory = (CrawlerFactory) bc.getService(event + .getServiceReference()); + registry.remove(factory); + break; + } + } + + +} Copied: aperture/trunk/default/crawler/src/main/java/org/semanticdesktop/aperture/crawler/impl/DefaultCrawlerRegistry.java (from rev 1671, aperture/trunk/core/crawler/core/src/main/java/org/semanticdesktop/aperture/crawler/impl/DefaultCrawlerRegistry.java) =================================================================== --- aperture/trunk/default/crawler/src/main/java/org/semanticdesktop/aperture/crawler/impl/DefaultCrawlerRegistry.java (rev 0) +++ aperture/trunk/default/crawler/src/main/java/org/semanticdesktop/aperture/crawler/impl/DefaultCrawlerRegistry.java 2009-02-17 18:07:25 UTC (rev 1672) @@ -0,0 +1,125 @@ +/* + * Copyright (c) 2005 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.crawler.impl; + +import java.io.BufferedInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.Map; + +import javax.xml.parsers.ParserConfigurationException; + +import org.semanticdesktop.aperture.crawler.CrawlerFactory; +import org.semanticdesktop.aperture.util.ResourceUtil; +import org.semanticdesktop.aperture.util.SimpleSAXAdapter; +import org.semanticdesktop.aperture.util.SimpleSAXParser; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.xml.sax.SAXException; + +/** + * DefaultCrawlerRegistry provides the complete set of CrawlerFactories available in Aperture. + * + * <p> + * The main purpose of this class is to be able to conveniently access the set of CrawlerFactories in non-OSGi + * applications, which take care of this initialization in a different way. A single line of code gives you + * the entire set without requiring further setup. + * + * <p> + * The set of factory class names are loaded from an XML file which can optionally be specified to the + * constructor. This class requires all the listed classes to have a no-argument constructor. + */ +public class DefaultCrawlerRegistry extends CrawlerRegistryImpl { + + private static final String DEFAULT_FILE = "org/semanticdesktop/aperture/crawler/impl/defaults.xml"; + + private static final String CRAWLER_FACTORY_TAG = "crawlerFactory"; + + private static final String NAME_TAG = "name"; + + public DefaultCrawlerRegistry() { + try { + InputStream stream = ResourceUtil.getInputStream(DEFAULT_FILE, DefaultCrawlerRegistry.class); + BufferedInputStream buffer = new BufferedInputStream(stream); + parse(buffer); + buffer.close(); + } + catch (IOException e) { + throw new RuntimeException("unable to parse " + DEFAULT_FILE, e); + } + } + + public DefaultCrawlerRegistry(InputStream stream) throws IOException { + parse(stream); + } + + private void parse(InputStream stream) throws IOException { + try { + // Parse the document + SimpleSAXParser parser = new SimpleSAXParser(); + parser.setListener(new CrawlerParser()); + parser.parse(stream); + } + catch (ParserConfigurationException e) { + IOException ie = new IOException(e.getMessage()); + ie.initCause(e); + throw ie; + } + catch (SAXException e) { + IOException ie = new IOException(e.getMessage()); + ie.initCause(e); + throw ie; + } + } + + private class CrawlerParser extends SimpleSAXAdapter { + + private Logger logger = LoggerFactory.getLogger(getClass()); + + private boolean insideFactoryElement = false; + + public void startTag(String tagName, Map atts, String text) throws SAXException { + if (CRAWLER_FACTORY_TAG.equals(tagName)) { + insideFactoryElement = true; + } + else if (NAME_TAG.equals(tagName) && insideFactoryElement && text != null) { + processClassName(text); + } + } + + public void endTag(String tagName) { + if (CRAWLER_FACTORY_TAG.equals(tagName)) { + insideFactoryElement = false; + } + } + + private void processClassName(String className) { + className = className.trim(); + if (!className.equals("")) { + try { + Class clazz = Class.forName(className); + Object instance = clazz.newInstance(); + CrawlerFactory factory = (CrawlerFactory) instance; + add(factory); + } + catch (ClassNotFoundException e) { + logger.warn("unable to find class " + className + ", ignoring", e); + } + catch (InstantiationException e) { + logger.warn("unable to instantiate class " + className + ", ignoring", e); + } + catch (IllegalAccessException e) { + logger.warn("unable to access class " + className + ", ignoring", e); + } + catch (ClassCastException e) { + logger.warn( + "unable to cast instance to " + CrawlerFactory.class.getName() + ", ignoring", e); + } + } + } + } +} Property changes on: aperture/trunk/default/linkextractor ___________________________________________________________________ Added: svn:ignore + .classpath .project .settings target Added: aperture/trunk/default/linkextractor/pom.xml =================================================================== --- aperture/trunk/default/linkextractor/pom.xml (rev 0) +++ aperture/trunk/default/linkextractor/pom.xml 2009-02-17 18:07:25 UTC (rev 1672) @@ -0,0 +1,72 @@ +<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> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-default</artifactId> + <version>1.3.0-SNAPSHOT</version> + </parent> + + <artifactId>aperture-default-linkextractor</artifactId> + + <name>Aperture Default: Link Extractors</name> + <description>Link Extractor API and default implementation</description> + + <dependencies> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-linkextractor-core</artifactId> + <version>${aperture.version}</version> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-linkextractor-html</artifactId> + <version>${aperture.version}</version> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-util</artifactId> + <version>${aperture.version}</version> + </dependency> + + <dependency> + <groupId>org.osgi</groupId> + <artifactId>osgi_R4_core</artifactId> + </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Export-Package>!org.semanticdesktop.aperture.linkextractor.bundle,!org.semanticdesktop.aperture.linkextractor.*.bundle,!org.semanticdesktop.aperture.linkextractor.impl,org.semanticdesktop.aperture.linkextractor.*</Export-Package> + <Private-Package>org.semanticdesktop.aperture.linkextractor.bundle;-split-package:=first,org.semanticdesktop.aperture.linkextractor.*.bundle,org.semanticdesktop.aperture.linkextractor.impl;-split-package:=merge-first</Private-Package> + <Bundle-Activator>org.semanticdesktop.aperture.linkextractor.bundle.DefaultLinkExtractorServiceActivator</Bundle-Activator> + </instructions> + </configuration> + </plugin> + </plugins> + </build> + +</project> Copied: aperture/trunk/default/linkextractor/src/main/java/org/semanticdesktop/aperture/hypertext/linkextractor/impl/DefaultLinkExtractorRegistry.java (from rev 1671, aperture/trunk/core/linkextractor/core/src/main/java/org/semanticdesktop/aperture/hypertext/linkextractor/impl/DefaultLinkExtractorRegistry.java) =================================================================== --- aperture/trunk/default/linkextractor/src/main/java/org/semanticdesktop/aperture/hypertext/linkextractor/impl/DefaultLinkExtractorRegistry.java (rev 0) +++ aperture/trunk/default/linkextractor/src/main/java/org/semanticdesktop/aperture/hypertext/linkextractor/impl/DefaultLinkExtractorRegistry.java 2009-02-17 18:07:25 UTC (rev 1672) @@ -0,0 +1,126 @@ +/* + * Copyright (c) 2005 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.hypertext.linkextractor.impl; + +import java.io.BufferedInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.Map; + +import javax.xml.parsers.ParserConfigurationException; + +import org.semanticdesktop.aperture.hypertext.linkextractor.LinkExtractorFactory; +import org.semanticdesktop.aperture.util.ResourceUtil; +import org.semanticdesktop.aperture.util.SimpleSAXAdapter; +import org.semanticdesktop.aperture.util.SimpleSAXParser; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.xml.sax.SAXException; + +/** + * DefaultLinkExtractorRegistry provides the complete set of LinkExtractorFactories available in Aperture. + * + * <p> + * The main purpose of this class is to be able to conveniently access the set of LinkExtractorFactories in + * non-OSGi applications, which take care of this initialization in a different way. A single line of code + * gives you the entire set without requiring further setup. + * + * <p> + * The set of factory class names are loaded from an XML file which can optionally be specified to the + * constructor. This class requires all the listed classes to have a no-argument constructor. + */ +public class DefaultLinkExtractorRegistry extends LinkExtractorRegistryImpl { + + private static final String DEFAULT_FILE = "org/semanticdesktop/aperture/hypertext/linkextractor/impl/defaults.xml"; + + private static final String SOURCE_FACTORY_TAG = "linkExtractorFactory"; + + private static final String NAME_TAG = "name"; + + public DefaultLinkExtractorRegistry() { + try { + InputStream stream = ResourceUtil + .getInputStream(DEFAULT_FILE, DefaultLinkExtractorRegistry.class); + BufferedInputStream buffer = new BufferedInputStream(stream); + parse(buffer); + buffer.close(); + } + catch (IOException e) { + throw new RuntimeException("unable to parse " + DEFAULT_FILE, e); + } + } + + public DefaultLinkExtractorRegistry(InputStream stream) throws IOException { + parse(stream); + } + + private void parse(InputStream stream) throws IOException { + try { + // Parse the document + SimpleSAXParser parser = new SimpleSAXParser(); + parser.setListener(new LinkExtractorParser()); + parser.parse(stream); + } + catch (ParserConfigurationException e) { + IOException ie = new IOException(e.getMessage()); + ie.initCause(e); + throw ie; + } + catch (SAXException e) { + IOException ie = new IOException(e.getMessage()); + ie.initCause(e); + throw ie; + } + } + + private class LinkExtractorParser extends SimpleSAXAdapter { + + private Logger logger = LoggerFactory.getLogger(getClass()); + + private boolean insideFactoryElement = false; + + public void startTag(String tagName, Map atts, String text) throws SAXException { + if (SOURCE_FACTORY_TAG.equals(tagName)) { + insideFactoryElement = true; + } + else if (NAME_TAG.equals(tagName) && insideFactoryElement && text != null) { + processClassName(text); + } + } + + public void endTag(String tagName) { + if (SOURCE_FACTORY_TAG.equals(tagName)) { + insideFactoryElement = false; + } + } + + private void processClassName(String className) { + className = className.trim(); + if (!className.equals("")) { + try { + Class clazz = Class.forName(className); + Object instance = clazz.newInstance(); + LinkExtractorFactory factory = (LinkExtractorFactory) instance; + add(factory); + } + catch (ClassNotFoundException e) { + logger.warn("unable to find class " + className + ", ignoring", e); + } + catch (InstantiationException e) { + logger.warn("unable to instantiate class " + className + ", ignoring", e); + } + catch (IllegalAccessException e) { + logger.warn("unable to access class " + className + ", ignoring", e); + } + catch (ClassCastException e) { + logger.warn("unable to cast instance to " + LinkExtractorFactory.class.getName() + + ", ignoring", e); + } + } + } + } +} Copied: aperture/trunk/default/linkextractor/src/main/resources/org/semanticdesktop/aperture/hypertext/linkextractor/impl/defaults.xml (from rev 1671, aperture/trunk/core/linkextractor/core/src/main/java/org/semanticdesktop/aperture/hypertext/linkextractor/impl/defaults.xml) =================================================================== --- aperture/trunk/default/linkextractor/src/main/resources/org/semanticdesktop/aperture/hypertext/linkextractor/impl/defaults.xml (rev 0) +++ aperture/trunk/default/linkextractor/src/main/resources/org/semanticdesktop/aperture/hypertext/linkextractor/impl/defaults.xml 2009-02-17 18:07:25 UTC (rev 1672) @@ -0,0 +1,7 @@ +<?xml version='1.0' encoding='UTF-8'?> + +<linkExtractorFactories> + <linkExtractorFactory> + <name>org.semanticdesktop.aperture.hypertext.linkextractor.html.HtmlLinkExtractorFactory</name> + </linkExtractorFactory> +</linkExtractorFactories> \ No newline at end of file Modified: aperture/trunk/pom.xml =================================================================== --- aperture/trunk/pom.xml 2009-02-17 17:42:25 UTC (rev 1671) +++ aperture/trunk/pom.xml 2009-02-17 18:07:25 UTC (rev 1672) @@ -102,6 +102,11 @@ </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-linkextractor-core</artifactId> + <version>${aperture.version}</version> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> <artifactId>aperture-mime-identifier-core</artifactId> <version>${aperture.version}</version> </dependency> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <her...@us...> - 2009-02-17 19:13:18
|
Revision: 1674 http://aperture.svn.sourceforge.net/aperture/?rev=1674&view=rev Author: herko_ter_horst Date: 2009-02-17 19:13:12 +0000 (Tue, 17 Feb 2009) Log Message: ----------- Implemented crawlers and supporting modules. Modified Paths: -------------- aperture/trunk/core/crawler/filesystem/pom.xml aperture/trunk/core/crawler/ical/pom.xml aperture/trunk/core/crawler/imap/pom.xml aperture/trunk/core/crawler/imap/src/main/java/org/semanticdesktop/aperture/crawler/imap/ImapCrawler.java aperture/trunk/core/crawler/mail/pom.xml aperture/trunk/core/crawler/mbox/pom.xml aperture/trunk/core/crawler/web/pom.xml aperture/trunk/core/helper/html/pom.xml aperture/trunk/core/helper/poi/pom.xml aperture/trunk/core/security/core/pom.xml aperture/trunk/core/security/pom.xml aperture/trunk/core/security/swing/pom.xml aperture/trunk/default/pom.xml aperture/trunk/pom.xml Added Paths: ----------- aperture/trunk/core/crawler/filesystem/src/main/java/org/semanticdesktop/aperture/crawler/filesystem/bundle/ aperture/trunk/core/crawler/filesystem/src/main/java/org/semanticdesktop/aperture/crawler/filesystem/bundle/FileSystemCrawlerActivator.java aperture/trunk/core/crawler/ical/src/main/java/org/semanticdesktop/aperture/crawler/ical/bundle/ aperture/trunk/core/crawler/ical/src/main/java/org/semanticdesktop/aperture/crawler/ical/bundle/IcalCrawlerActivator.java aperture/trunk/core/crawler/imap/src/main/java/org/semanticdesktop/aperture/crawler/imap/bundle/ aperture/trunk/core/crawler/imap/src/main/java/org/semanticdesktop/aperture/crawler/imap/bundle/ImapCrawlerActivator.java aperture/trunk/core/crawler/mbox/src/main/java/org/semanticdesktop/aperture/crawler/mbox/bundle/ aperture/trunk/core/crawler/mbox/src/main/java/org/semanticdesktop/aperture/crawler/mbox/bundle/MboxCrawlerActivator.java aperture/trunk/core/crawler/web/src/main/java/org/semanticdesktop/aperture/crawler/web/bundle/ aperture/trunk/core/crawler/web/src/main/java/org/semanticdesktop/aperture/crawler/web/bundle/WebCrawlerActivator.java aperture/trunk/core/security/core/src/main/java/org/semanticdesktop/aperture/security/bundle/ aperture/trunk/core/security/core/src/main/java/org/semanticdesktop/aperture/security/bundle/SecurityServiceActivator.java aperture/trunk/core/security/standard/ aperture/trunk/core/security/standard/pom.xml aperture/trunk/core/security/standard/src/ aperture/trunk/core/security/standard/src/main/ aperture/trunk/core/security/standard/src/main/java/ aperture/trunk/core/security/standard/src/main/java/org/ aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/ aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/ aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/ aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/socketfactory/ aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/socketfactory/standard/ aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/socketfactory/standard/StandardSocketFactory.java aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/standard/ aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/standard/bundle/ aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/standard/bundle/StandardSecurityActivator.java aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/trustmanager/ aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/trustmanager/standard/ aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/trustmanager/standard/CertificateStore.java aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/trustmanager/standard/PersistentCertificateStore.java aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/trustmanager/standard/RootCertificateStore.java aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/trustmanager/standard/SessionCertificateStore.java aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/trustmanager/standard/StandardTrustManager.java aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/trustmanager/standard/StandardTrustManagerFactory.java aperture/trunk/core/security/standard/src/test/ aperture/trunk/core/security/standard/src/test/java/ aperture/trunk/core/security/standard/src/test/java/org/ aperture/trunk/core/security/standard/src/test/java/org/semanticdesktop/ aperture/trunk/core/security/standard/src/test/java/org/semanticdesktop/aperture/ aperture/trunk/core/security/swing/src/main/java/org/semanticdesktop/aperture/security/ aperture/trunk/core/security/swing/src/main/java/org/semanticdesktop/aperture/security/swing/ aperture/trunk/core/security/swing/src/main/java/org/semanticdesktop/aperture/security/swing/bundle/ aperture/trunk/core/security/swing/src/main/java/org/semanticdesktop/aperture/security/swing/bundle/SwingSecurityActivator.java aperture/trunk/core/security/swing/src/main/java/org/semanticdesktop/aperture/security/trustdecider/ aperture/trunk/core/security/swing/src/main/java/org/semanticdesktop/aperture/security/trustdecider/dialog/ aperture/trunk/core/security/swing/src/main/java/org/semanticdesktop/aperture/security/trustdecider/dialog/CertificateDialog.java aperture/trunk/core/security/swing/src/main/java/org/semanticdesktop/aperture/security/trustdecider/dialog/TrustDeciderDialog.java aperture/trunk/core/security/swing/src/main/java/org/semanticdesktop/aperture/security/trustdecider/dialog/TrustDeciderDialogFactory.java aperture/trunk/core/security/swing/src/main/resources/ aperture/trunk/core/security/swing/src/main/resources/org/ aperture/trunk/core/security/swing/src/main/resources/org/semanticdesktop/ aperture/trunk/core/security/swing/src/main/resources/org/semanticdesktop/aperture/ aperture/trunk/core/security/swing/src/main/resources/org/semanticdesktop/aperture/security/ aperture/trunk/core/security/swing/src/main/resources/org/semanticdesktop/aperture/security/trustdecider/ aperture/trunk/core/security/swing/src/main/resources/org/semanticdesktop/aperture/security/trustdecider/dialog/ aperture/trunk/core/security/swing/src/main/resources/org/semanticdesktop/aperture/security/trustdecider/dialog/check.png aperture/trunk/core/security/swing/src/main/resources/org/semanticdesktop/aperture/security/trustdecider/dialog/warning.png Removed Paths: ------------- aperture/trunk/core/security/core/src/main/java/org/semanticdesktop/aperture/security/socketfactory/ aperture/trunk/core/security/core/src/main/java/org/semanticdesktop/aperture/security/trustdecider/dialog/ aperture/trunk/core/security/core/src/main/java/org/semanticdesktop/aperture/security/trustmanager/standard/ Property Changed: ---------------- aperture/trunk/core/security/core/ aperture/trunk/core/security/swing/ Modified: aperture/trunk/core/crawler/filesystem/pom.xml =================================================================== --- aperture/trunk/core/crawler/filesystem/pom.xml 2009-02-17 18:10:28 UTC (rev 1673) +++ aperture/trunk/core/crawler/filesystem/pom.xml 2009-02-17 19:13:12 UTC (rev 1674) @@ -75,9 +75,9 @@ <extensions>true</extensions> <configuration> <instructions> - <Export-Package>org.semanticdesktop.aperture.crawler.file</Export-Package> - <Private-Package>org.semanticdesktop.aperture.crawler.file.bundle</Private-Package> - <Bundle-Activator>org.semanticdesktop.aperture.crawler.file.bundle.FileCrawlerActivator</Bundle-Activator> + <Export-Package>org.semanticdesktop.aperture.crawler.filesystem</Export-Package> + <Private-Package>org.semanticdesktop.aperture.crawler.filesystem.bundle</Private-Package> + <Bundle-Activator>org.semanticdesktop.aperture.crawler.filesystem.bundle.FileSystemCrawlerActivator</Bundle-Activator> </instructions> </configuration> </plugin> Added: aperture/trunk/core/crawler/filesystem/src/main/java/org/semanticdesktop/aperture/crawler/filesystem/bundle/FileSystemCrawlerActivator.java =================================================================== --- aperture/trunk/core/crawler/filesystem/src/main/java/org/semanticdesktop/aperture/crawler/filesystem/bundle/FileSystemCrawlerActivator.java (rev 0) +++ aperture/trunk/core/crawler/filesystem/src/main/java/org/semanticdesktop/aperture/crawler/filesystem/bundle/FileSystemCrawlerActivator.java 2009-02-17 19:13:12 UTC (rev 1674) @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.crawler.filesystem.bundle; + +import java.util.Hashtable; + +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceRegistration; +import org.semanticdesktop.aperture.crawler.filesystem.FileSystemCrawlerFactory; +import org.semanticdesktop.aperture.datasource.DataSourceFactory; + +/** + * Activator that registers the factory for this datasource with the system. + */ +public class FileSystemCrawlerActivator implements BundleActivator { + + private ServiceRegistration serviceRegistration; + + public void start(BundleContext context) throws Exception { + serviceRegistration = context.registerService(DataSourceFactory.class + .getName(), new FileSystemCrawlerFactory(), new Hashtable()); + } + + public void stop(BundleContext context) throws Exception { + if (serviceRegistration != null) { + serviceRegistration.unregister(); + serviceRegistration = null; + } + } +} \ No newline at end of file Modified: aperture/trunk/core/crawler/ical/pom.xml =================================================================== --- aperture/trunk/core/crawler/ical/pom.xml 2009-02-17 18:10:28 UTC (rev 1673) +++ aperture/trunk/core/crawler/ical/pom.xml 2009-02-17 19:13:12 UTC (rev 1674) @@ -14,7 +14,7 @@ <artifactId>aperture-crawler-ical</artifactId> <name>Aperture Core: Crawler - iCalendar</name> - <description>ICal crawler</description> + <description>iCalendar crawler</description> <dependencies> <dependency> @@ -74,7 +74,7 @@ <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> - <manifestICal>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestICal> + <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> </archive> </configuration> </plugin> @@ -86,7 +86,7 @@ <instructions> <Export-Package>org.semanticdesktop.aperture.crawler.ical</Export-Package> <Private-Package>org.semanticdesktop.aperture.crawler.ical.bundle</Private-Package> - <Bundle-Activator>org.semanticdesktop.aperture.crawler.ical.bundle.ICalCrawlerActivator</Bundle-Activator> + <Bundle-Activator>org.semanticdesktop.aperture.crawler.ical.bundle.IcalCrawlerActivator</Bundle-Activator> </instructions> </configuration> </plugin> Added: aperture/trunk/core/crawler/ical/src/main/java/org/semanticdesktop/aperture/crawler/ical/bundle/IcalCrawlerActivator.java =================================================================== --- aperture/trunk/core/crawler/ical/src/main/java/org/semanticdesktop/aperture/crawler/ical/bundle/IcalCrawlerActivator.java (rev 0) +++ aperture/trunk/core/crawler/ical/src/main/java/org/semanticdesktop/aperture/crawler/ical/bundle/IcalCrawlerActivator.java 2009-02-17 19:13:12 UTC (rev 1674) @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.crawler.ical.bundle; + +import java.util.Hashtable; + +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceRegistration; +import org.semanticdesktop.aperture.crawler.ical.IcalCrawlerFactory; +import org.semanticdesktop.aperture.datasource.DataSourceFactory; + +/** + * Activator that registers the factory for this datasource with the system. + */ +public class IcalCrawlerActivator implements BundleActivator { + + private ServiceRegistration serviceRegistration; + + public void start(BundleContext context) throws Exception { + serviceRegistration = context.registerService(DataSourceFactory.class + .getName(), new IcalCrawlerFactory(), new Hashtable()); + } + + public void stop(BundleContext context) throws Exception { + if (serviceRegistration != null) { + serviceRegistration.unregister(); + serviceRegistration = null; + } + } +} \ No newline at end of file Modified: aperture/trunk/core/crawler/imap/pom.xml =================================================================== --- aperture/trunk/core/crawler/imap/pom.xml 2009-02-17 18:10:28 UTC (rev 1673) +++ aperture/trunk/core/crawler/imap/pom.xml 2009-02-17 19:13:12 UTC (rev 1674) @@ -39,6 +39,10 @@ </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-security-standard</artifactId> + </dependency> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> <artifactId>aperture-vocabulary-core</artifactId> </dependency> @@ -69,7 +73,7 @@ <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> - <manifestIMAP>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestIMAP> + <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> </archive> </configuration> </plugin> @@ -81,7 +85,7 @@ <instructions> <Export-Package>org.semanticdesktop.aperture.crawler.imap</Export-Package> <Private-Package>org.semanticdesktop.aperture.crawler.imap.bundle</Private-Package> - <Bundle-Activator>org.semanticdesktop.aperture.crawler.imap.bundle.IMAPCrawlerActivator</Bundle-Activator> + <Bundle-Activator>org.semanticdesktop.aperture.crawler.imap.bundle.ImapCrawlerActivator</Bundle-Activator> </instructions> </configuration> </plugin> Modified: aperture/trunk/core/crawler/imap/src/main/java/org/semanticdesktop/aperture/crawler/imap/ImapCrawler.java =================================================================== --- aperture/trunk/core/crawler/imap/src/main/java/org/semanticdesktop/aperture/crawler/imap/ImapCrawler.java 2009-02-17 18:10:28 UTC (rev 1673) +++ aperture/trunk/core/crawler/imap/src/main/java/org/semanticdesktop/aperture/crawler/imap/ImapCrawler.java 2009-02-17 19:13:12 UTC (rev 1674) @@ -57,6 +57,7 @@ import org.semanticdesktop.aperture.datasource.imap.ImapDataSource; import org.semanticdesktop.aperture.datasource.imap.ImapDataSource.ConnectionSecurity; import org.semanticdesktop.aperture.rdf.RDFContainer; +import org.semanticdesktop.aperture.security.trustmanager.standard.StandardTrustManager; import org.semanticdesktop.aperture.util.HttpClientUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -958,6 +959,7 @@ public SimpleSocketFactory(File certificateFile, String password) { try { SSLContext sslcontext = SSLContext.getInstance("TLS"); + // FIXME: obtain trustmanager through TrustManagerRegistry service StandardTrustManager trustManager = new StandardTrustManager(certificateFile, password .toCharArray()); sslcontext.init(null, new TrustManager[] { trustManager }, null); Added: aperture/trunk/core/crawler/imap/src/main/java/org/semanticdesktop/aperture/crawler/imap/bundle/ImapCrawlerActivator.java =================================================================== --- aperture/trunk/core/crawler/imap/src/main/java/org/semanticdesktop/aperture/crawler/imap/bundle/ImapCrawlerActivator.java (rev 0) +++ aperture/trunk/core/crawler/imap/src/main/java/org/semanticdesktop/aperture/crawler/imap/bundle/ImapCrawlerActivator.java 2009-02-17 19:13:12 UTC (rev 1674) @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.crawler.imap.bundle; + +import java.util.Hashtable; + +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceRegistration; +import org.semanticdesktop.aperture.crawler.imap.ImapCrawlerFactory; +import org.semanticdesktop.aperture.datasource.DataSourceFactory; + +/** + * Activator that registers the factory for this datasource with the system. + */ +public class ImapCrawlerActivator implements BundleActivator { + + private ServiceRegistration serviceRegistration; + + public void start(BundleContext context) throws Exception { + serviceRegistration = context.registerService(DataSourceFactory.class + .getName(), new ImapCrawlerFactory(), new Hashtable()); + } + + public void stop(BundleContext context) throws Exception { + if (serviceRegistration != null) { + serviceRegistration.unregister(); + serviceRegistration = null; + } + } +} \ No newline at end of file Modified: aperture/trunk/core/crawler/mail/pom.xml =================================================================== --- aperture/trunk/core/crawler/mail/pom.xml 2009-02-17 18:10:28 UTC (rev 1673) +++ aperture/trunk/core/crawler/mail/pom.xml 2009-02-17 19:13:12 UTC (rev 1674) @@ -78,7 +78,7 @@ <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> - <manifestMail>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestMail> + <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> </archive> </configuration> </plugin> @@ -88,9 +88,7 @@ <extensions>true</extensions> <configuration> <instructions> - <Export-Package>org.semanticdesktop.aperture.crawler.mail</Export-Package> - <Private-Package>org.semanticdesktop.aperture.crawler.mail.bundle</Private-Package> - <Bundle-Activator>org.semanticdesktop.aperture.crawler.mail.bundle.MailCrawlerActivator</Bundle-Activator> + <Export-Package>org.semanticdesktop.aperture.crawler.mail,org.semanticdesktop.aperture.crawler.mail.base</Export-Package> </instructions> </configuration> </plugin> Modified: aperture/trunk/core/crawler/mbox/pom.xml =================================================================== --- aperture/trunk/core/crawler/mbox/pom.xml 2009-02-17 18:10:28 UTC (rev 1673) +++ aperture/trunk/core/crawler/mbox/pom.xml 2009-02-17 19:13:12 UTC (rev 1674) @@ -74,7 +74,7 @@ <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> - <manifestMbox>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestMbox> + <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> </archive> </configuration> </plugin> Added: aperture/trunk/core/crawler/mbox/src/main/java/org/semanticdesktop/aperture/crawler/mbox/bundle/MboxCrawlerActivator.java =================================================================== --- aperture/trunk/core/crawler/mbox/src/main/java/org/semanticdesktop/aperture/crawler/mbox/bundle/MboxCrawlerActivator.java (rev 0) +++ aperture/trunk/core/crawler/mbox/src/main/java/org/semanticdesktop/aperture/crawler/mbox/bundle/MboxCrawlerActivator.java 2009-02-17 19:13:12 UTC (rev 1674) @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.crawler.mbox.bundle; + +import java.util.Hashtable; + +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceRegistration; +import org.semanticdesktop.aperture.crawler.mbox.MboxCrawlerFactory; +import org.semanticdesktop.aperture.datasource.DataSourceFactory; + +/** + * Activator that registers the factory for this datasource with the system. + */ +public class MboxCrawlerActivator implements BundleActivator { + + private ServiceRegistration serviceRegistration; + + public void start(BundleContext context) throws Exception { + serviceRegistration = context.registerService(DataSourceFactory.class + .getName(), new MboxCrawlerFactory(), new Hashtable()); + } + + public void stop(BundleContext context) throws Exception { + if (serviceRegistration != null) { + serviceRegistration.unregister(); + serviceRegistration = null; + } + } +} \ No newline at end of file Modified: aperture/trunk/core/crawler/web/pom.xml =================================================================== --- aperture/trunk/core/crawler/web/pom.xml 2009-02-17 18:10:28 UTC (rev 1673) +++ aperture/trunk/core/crawler/web/pom.xml 2009-02-17 19:13:12 UTC (rev 1674) @@ -73,7 +73,7 @@ <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> - <manifestWeb>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestWeb> + <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> </archive> </configuration> </plugin> Added: aperture/trunk/core/crawler/web/src/main/java/org/semanticdesktop/aperture/crawler/web/bundle/WebCrawlerActivator.java =================================================================== --- aperture/trunk/core/crawler/web/src/main/java/org/semanticdesktop/aperture/crawler/web/bundle/WebCrawlerActivator.java (rev 0) +++ aperture/trunk/core/crawler/web/src/main/java/org/semanticdesktop/aperture/crawler/web/bundle/WebCrawlerActivator.java 2009-02-17 19:13:12 UTC (rev 1674) @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.crawler.web.bundle; + +import java.util.Hashtable; + +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceRegistration; +import org.semanticdesktop.aperture.crawler.web.WebCrawlerFactory; +import org.semanticdesktop.aperture.datasource.DataSourceFactory; + +/** + * Activator that registers the factory for this datasource with the system. + */ +public class WebCrawlerActivator implements BundleActivator { + + private ServiceRegistration serviceRegistration; + + public void start(BundleContext context) throws Exception { + serviceRegistration = context.registerService(DataSourceFactory.class + .getName(), new WebCrawlerFactory(), new Hashtable()); + } + + public void stop(BundleContext context) throws Exception { + if (serviceRegistration != null) { + serviceRegistration.unregister(); + serviceRegistration = null; + } + } +} \ No newline at end of file Modified: aperture/trunk/core/helper/html/pom.xml =================================================================== --- aperture/trunk/core/helper/html/pom.xml 2009-02-17 18:10:28 UTC (rev 1673) +++ aperture/trunk/core/helper/html/pom.xml 2009-02-17 19:13:12 UTC (rev 1674) @@ -58,9 +58,7 @@ <extensions>true</extensions> <configuration> <instructions> - <Export-Package>org.semanticdesktop.aperture.helper</Export-Package> - <Private-Package>org.semanticdesktop.aperture.helper.impl,org.semanticdesktop.aperture.helper.impl</Private-Package> - <Bundle-Activator>org.semanticdesktop.aperture.helper.bundle.ExtractorServiceActivator</Bundle-Activator> + <Export-Package>org.semanticdesktop.aperture.helper.html</Export-Package> </instructions> </configuration> </plugin> Modified: aperture/trunk/core/helper/poi/pom.xml =================================================================== --- aperture/trunk/core/helper/poi/pom.xml 2009-02-17 18:10:28 UTC (rev 1673) +++ aperture/trunk/core/helper/poi/pom.xml 2009-02-17 19:13:12 UTC (rev 1674) @@ -76,9 +76,7 @@ <extensions>true</extensions> <configuration> <instructions> - <Export-Package>org.semanticdesktop.aperture.helper</Export-Package> - <Private-Package>org.semanticdesktop.aperture.helper.impl,org.semanticdesktop.aperture.helper.impl</Private-Package> - <Bundle-Activator>org.semanticdesktop.aperture.helper.bundle.ExtractorServiceActivator</Bundle-Activator> + <Export-Package>org.semanticdesktop.aperture.helper.poi</Export-Package> </instructions> </configuration> </plugin> Property changes on: aperture/trunk/core/security/core ___________________________________________________________________ Added: svn:ignore + .classpath .project .settings target Modified: aperture/trunk/core/security/core/pom.xml =================================================================== --- aperture/trunk/core/security/core/pom.xml 2009-02-17 18:10:28 UTC (rev 1673) +++ aperture/trunk/core/security/core/pom.xml 2009-02-17 19:13:12 UTC (rev 1674) @@ -49,9 +49,9 @@ <extensions>true</extensions> <configuration> <instructions> - <Export-Package>org.semanticdesktop.aperture.security</Export-Package> - <Private-Package>org.semanticdesktop.aperture.security.impl,org.semanticdesktop.aperture.security.impl</Private-Package> - <Bundle-Activator>org.semanticdesktop.aperture.security.bundle.ExtractorServiceActivator</Bundle-Activator> + <Export-Package>org.semanticdesktop.aperture.security.trustdecider,org.semanticdesktop.aperture.security.trustmanager</Export-Package> + <Private-Package>org.semanticdesktop.aperture.security.trustdecider.impl,org.semanticdesktop.aperture.security.trustmanager.impl,org.semanticdesktop.aperture.security.bundle</Private-Package> + <Bundle-Activator>org.semanticdesktop.aperture.security.bundle.SecurityServiceActivator</Bundle-Activator> </instructions> </configuration> </plugin> Added: aperture/trunk/core/security/core/src/main/java/org/semanticdesktop/aperture/security/bundle/SecurityServiceActivator.java =================================================================== --- aperture/trunk/core/security/core/src/main/java/org/semanticdesktop/aperture/security/bundle/SecurityServiceActivator.java (rev 0) +++ aperture/trunk/core/security/core/src/main/java/org/semanticdesktop/aperture/security/bundle/SecurityServiceActivator.java 2009-02-17 19:13:12 UTC (rev 1674) @@ -0,0 +1,128 @@ +/* + * Copyright (c) 2006 - 2009 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.security.bundle; + +import java.util.Hashtable; + +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceEvent; +import org.osgi.framework.ServiceListener; +import org.osgi.framework.ServiceReference; +import org.osgi.framework.ServiceRegistration; +import org.semanticdesktop.aperture.security.trustdecider.TrustDeciderFactory; +import org.semanticdesktop.aperture.security.trustdecider.TrustDeciderRegistry; +import org.semanticdesktop.aperture.security.trustdecider.impl.TrustDeciderRegistryImpl; +import org.semanticdesktop.aperture.security.trustmanager.TrustManagerFactory; +import org.semanticdesktop.aperture.security.trustmanager.TrustManagerRegistry; +import org.semanticdesktop.aperture.security.trustmanager.impl.TrustManagerRegistryImpl; + +public class SecurityServiceActivator implements BundleActivator { + + private BundleContext bc = null; + + private ServiceRegistration deciderRegistryRegistration; + + private TrustDeciderRegistry deciderRegistry; + + private ServiceRegistration managerRegistryRegistration; + + private TrustManagerRegistry managerRegistry; + + public void start(BundleContext context) throws Exception { + + bc = context; + deciderRegistry = new TrustDeciderRegistryImpl(); + deciderRegistryRegistration = bc.registerService( + TrustDeciderRegistry.class.getName(), deciderRegistry, + new Hashtable()); + + String filter = "(objectclass=" + TrustDeciderFactory.class.getName() + + ")"; + DeciderListener deciderListener = new DeciderListener(); + bc.addServiceListener(deciderListener, filter); + + ServiceReference references[] = bc.getServiceReferences(null, filter); + + for (int i = 0; references != null && i < references.length; i++) { + deciderListener.serviceChanged(new ServiceEvent( + ServiceEvent.REGISTERED, references[i])); + } + + managerRegistry = new TrustManagerRegistryImpl(); + managerRegistryRegistration = bc.registerService( + TrustManagerRegistry.class.getName(), managerRegistry, + new Hashtable()); + + filter = "(objectclass=" + TrustManagerFactory.class.getName() + ")"; + ManagerListener managerListener = new ManagerListener(); + bc.addServiceListener(managerListener, filter); + + references = bc.getServiceReferences(null, filter); + + for (int i = 0; references != null && i < references.length; i++) { + managerListener.serviceChanged(new ServiceEvent( + ServiceEvent.REGISTERED, references[i])); + } + + } + + public void stop(BundleContext context) throws Exception { + deciderRegistryRegistration.unregister(); + managerRegistryRegistration.unregister(); + bc = null; + } + + private class ManagerListener implements ServiceListener { + public void serviceChanged(ServiceEvent event) { + TrustManagerFactory factory; + switch (event.getType()) { + case ServiceEvent.REGISTERED: + factory = (TrustManagerFactory) bc.getService(event + .getServiceReference()); + managerRegistry.add(factory); + break; + case ServiceEvent.MODIFIED: + factory = (TrustManagerFactory) bc.getService(event + .getServiceReference()); + managerRegistry.remove(factory); + managerRegistry.add(factory); + break; + case ServiceEvent.UNREGISTERING: + factory = (TrustManagerFactory) bc.getService(event + .getServiceReference()); + managerRegistry.remove(factory); + break; + } + } + } + + private class DeciderListener implements ServiceListener { + public void serviceChanged(ServiceEvent event) { + TrustDeciderFactory factory; + switch (event.getType()) { + case ServiceEvent.REGISTERED: + factory = (TrustDeciderFactory) bc.getService(event + .getServiceReference()); + deciderRegistry.add(factory); + break; + case ServiceEvent.MODIFIED: + factory = (TrustDeciderFactory) bc.getService(event + .getServiceReference()); + deciderRegistry.remove(factory); + deciderRegistry.add(factory); + break; + case ServiceEvent.UNREGISTERING: + factory = (TrustDeciderFactory) bc.getService(event + .getServiceReference()); + deciderRegistry.remove(factory); + break; + } + } + + } +} Modified: aperture/trunk/core/security/pom.xml =================================================================== --- aperture/trunk/core/security/pom.xml 2009-02-17 18:10:28 UTC (rev 1673) +++ aperture/trunk/core/security/pom.xml 2009-02-17 19:13:12 UTC (rev 1674) @@ -19,6 +19,7 @@ <modules> <module>core</module> + <module>standard</module> <module>swing</module> </modules> </project> \ No newline at end of file Property changes on: aperture/trunk/core/security/standard ___________________________________________________________________ Added: svn:ignore + .classpath .project .settings target Added: aperture/trunk/core/security/standard/pom.xml =================================================================== --- aperture/trunk/core/security/standard/pom.xml (rev 0) +++ aperture/trunk/core/security/standard/pom.xml 2009-02-17 19:13:12 UTC (rev 1674) @@ -0,0 +1,64 @@ +<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> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-security</artifactId> + <version>1.3.0-SNAPSHOT</version> + </parent> + + <artifactId>aperture-security-standard</artifactId> + + <name>Aperture Core: Security - Standard</name> + <description>Standard security implementation.</description> + + <dependencies> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-security-core</artifactId> + </dependency> + + <dependency> + <groupId>org.osgi</groupId> + <artifactId>osgi_R4_core</artifactId> + </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Export-Package>org.semanticdesktop.aperture.security.socketfactory.standard,org.semanticdesktop.aperture.security.trustmanager.standard</Export-Package> + <Bundle-Activator>org.semanticdesktop.aperture.security.standard.StandardSecurityActivator</Bundle-Activator> + </instructions> + </configuration> + </plugin> + </plugins> + </build> +</project> Copied: aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/socketfactory/standard/StandardSocketFactory.java (from rev 1673, aperture/trunk/core/security/core/src/main/java/org/semanticdesktop/aperture/security/socketfactory/standard/StandardSocketFactory.java) =================================================================== --- aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/socketfactory/standard/StandardSocketFactory.java (rev 0) +++ aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/socketfactory/standard/StandardSocketFactory.java 2009-02-17 19:13:12 UTC (rev 1674) @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2005 - 2008 Aduna. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.security.socketfactory.standard; + +import java.io.IOException; +import java.net.InetAddress; +import java.net.Socket; + +import javax.net.SocketFactory; +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSocketFactory; +import javax.net.ssl.TrustManager; + +import org.semanticdesktop.aperture.security.trustmanager.standard.StandardTrustManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * A SSLSocketFactory implementation that uses a StandardTrustManager as its TrustManager implementation. + */ +public class StandardSocketFactory extends SSLSocketFactory { + + private SSLSocketFactory factory; + + public StandardSocketFactory() { + try { + SSLContext sslcontext = SSLContext.getInstance("TLS"); + sslcontext.init(null, new TrustManager[] { new StandardTrustManager() }, null); + factory = (SSLSocketFactory) sslcontext.getSocketFactory(); + } + catch (Exception e) { + Logger logger = LoggerFactory.getLogger(getClass()); + logger.error("Exception while instantiating a StandardSocketFactory", e); + } + } + + public static SocketFactory getDefault() { + return new StandardSocketFactory(); + } + + public Socket createSocket() throws IOException { + return factory.createSocket(); + } + + public Socket createSocket(Socket socket, String host, int port, boolean flag) throws IOException { + return factory.createSocket(socket, host, port, flag); + } + + public Socket createSocket(InetAddress address, int port, InetAddress localAddress, int localPort) + throws IOException { + return factory.createSocket(address, port, localAddress, localPort); + } + + public Socket createSocket(InetAddress host, int port) throws IOException { + return factory.createSocket(host, port); + } + + public Socket createSocket(String host, int port, InetAddress localHost, int localPort) + throws IOException { + return factory.createSocket(host, port, localHost, localPort); + } + + public Socket createSocket(String host, int port) throws IOException { + return factory.createSocket(host, port); + } + + public String[] getDefaultCipherSuites() { + return factory.getDefaultCipherSuites(); + } + + public String[] getSupportedCipherSuites() { + return factory.getSupportedCipherSuites(); + } +} Added: aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/standard/bundle/StandardSecurityActivator.java =================================================================== --- aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/standard/bundle/StandardSecurityActivator.java (rev 0) +++ aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/standard/bundle/StandardSecurityActivator.java 2009-02-17 19:13:12 UTC (rev 1674) @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2006 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.security.standard.bundle; + +import java.util.Hashtable; + +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceReference; +import org.osgi.framework.ServiceRegistration; +import org.semanticdesktop.aperture.security.trustmanager.TrustManagerFactory; +import org.semanticdesktop.aperture.security.trustmanager.standard.StandardTrustManagerFactory; + +public class StandardSecurityActivator implements BundleActivator { + + private BundleContext bc; + + private TrustManagerFactory factory; + + private ServiceReference reference; + + public void start(BundleContext context) throws Exception { + + bc = context; + + factory = new StandardTrustManagerFactory(); + ServiceRegistration registration = bc.registerService( + TrustManagerFactory.class.getName(), factory, new Hashtable()); + reference = registration.getReference(); + } + + public void stop(BundleContext context) throws Exception { + + bc.ungetService(reference); + } + +} Copied: aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/trustmanager/standard/CertificateStore.java (from rev 1673, aperture/trunk/core/security/core/src/main/java/org/semanticdesktop/aperture/security/trustmanager/standard/CertificateStore.java) =================================================================== --- aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/trustmanager/standard/CertificateStore.java (rev 0) +++ aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/trustmanager/standard/CertificateStore.java 2009-02-17 19:13:12 UTC (rev 1674) @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2005 - 2008 Aduna. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.security.trustmanager.standard; + +import java.io.IOException; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.Certificate; +import java.security.cert.CertificateException; +import java.util.Iterator; + +/** + * The base interface for all certificate stores used by the StandardTrustManager. + */ +public interface CertificateStore { + + /** + * Loads all certificates belonging to this store (optional operation). + */ + public void load() throws IOException, CertificateException, KeyStoreException, NoSuchAlgorithmException; + + /** + * Saves all certificates belonging to this store (optional operation). + */ + public void save() throws IOException, CertificateException, KeyStoreException, NoSuchAlgorithmException; + + /** + * Add a Certificate to this CertificateStore (optional operation). + * + * @param certificate The Certificate to add. + */ + public void add(Certificate certificate) throws KeyStoreException; + + /** + * Remove a Certificate from this CertificateStore (optional operation); + * + * @param certificate The Certificate to remove. + */ + public void remove(Certificate certificate) throws KeyStoreException; + + /** + * Returns whether this certificate store contains the specified Certificate (optional operation). + * + * @param certificate The Certificate that is tested for presence in this CertificateStore. + * @return 'true' when this CertificateStore contains the specified Certificate, 'false' otherwise. + */ + public boolean contains(Certificate certificate) throws KeyStoreException; + + /** + * Verifies the supplied Certificate against the certificates in this store (optional operation). + * + * @param certificate The Certificate to verify. + * @return 'true' when the Certificate could successfully be verified, 'false' otherwise. + */ + public boolean verify(Certificate certificate) throws KeyStoreException; + + /** + * Returns an Iterator that iterates over all Certificates in this store. + * + * @return An Iterator returning Certificate instances. + */ + public Iterator iterator() throws KeyStoreException; +} Copied: aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/trustmanager/standard/PersistentCertificateStore.java (from rev 1673, aperture/trunk/core/security/core/src/main/java/org/semanticdesktop/aperture/security/trustmanager/standard/PersistentCertificateStore.java) =================================================================== --- aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/trustmanager/standard/PersistentCertificateStore.java (rev 0) +++ aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/trustmanager/standard/PersistentCertificateStore.java 2009-02-17 19:13:12 UTC (rev 1674) @@ -0,0 +1,195 @@ +/* + * Copyright (c) 2005 - 2008 Aduna. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.security.trustmanager.standard; + +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.security.AccessController; +import java.security.KeyStore; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.PrivilegedActionException; +import java.security.PrivilegedExceptionAction; +import java.security.cert.Certificate; +import java.security.cert.CertificateException; +import java.util.Enumeration; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Random; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * A CertificateStore that can save its certificates to and load them from a file. + * + * <p> + * PersistentCertificateStore internally used a KeyStore to contain its Certificates and optionally + * applies a password during load and save. See the KeyStore API documentation for information on how + * this password is applied. + * + * @see java.security.KeyStore + */ +public class PersistentCertificateStore implements CertificateStore { + + private Logger logger = LoggerFactory.getLogger(getClass()); + + private File certificatesFile; + + private KeyStore keyStore; + + private char[] password; + + public PersistentCertificateStore(File certificatesFile, char[] password) { + this.certificatesFile = certificatesFile; + this.password = password; + } + + public void setPassword(char[] password) { + this.password = password; + } + + public char[] getPassword() { + return password; + } + + public void load() throws IOException, CertificateException, KeyStoreException, NoSuchAlgorithmException { + try { + AccessController.doPrivileged(new PrivilegedExceptionAction() { + + public Object run() throws KeyStoreException, NoSuchAlgorithmException, CertificateException, + IOException { + // initialize the KeyStore instance + if (keyStore == null) { + keyStore = KeyStore.getInstance("JKS"); + keyStore.load(null, null); + } + + // load the certificates, if they exist + if (certificatesFile.exists()) { + FileInputStream stream = new FileInputStream(certificatesFile); + BufferedInputStream buffer = new BufferedInputStream(stream); + + keyStore.load(buffer, password); + + buffer.close(); + stream.close(); + } + + return null; + } + }); + } + catch (PrivilegedActionException e) { + Exception ex = e.getException(); + + if (ex instanceof IOException) { + throw (IOException) ex; + } + else if (ex instanceof CertificateException) { + throw (CertificateException) ex; + } + else if (ex instanceof KeyStoreException) { + throw (KeyStoreException) ex; + } + else if (ex instanceof NoSuchAlgorithmException) { + throw (NoSuchAlgorithmException) ex; + } + else { + logger.error("Unrecognized nested exception, ignoring", e); + } + } + } + + public void save() throws IOException, CertificateException, KeyStoreException, NoSuchAlgorithmException { + try { + AccessController.doPrivileged(new PrivilegedExceptionAction() { + + public Object run() throws KeyStoreException, NoSuchAlgorithmException, CertificateException, + IOException { + FileOutputStream stream = new FileOutputStream(certificatesFile); + BufferedOutputStream buffer = new BufferedOutputStream(stream); + + keyStore.store(buffer, password); + + buffer.close(); + stream.close(); + + return null; + } + }); + } + catch (PrivilegedActionException e) { + Exception ex = e.getException(); + + if (ex instanceof IOException) { + throw (IOException) ex; + } + else if (ex instanceof CertificateException) { + throw (CertificateException) ex; + } + else if (ex instanceof KeyStoreException) { + throw (KeyStoreException) ex; + } + else if (ex instanceof NoSuchAlgorithmException) { + throw (NoSuchAlgorithmException) ex; + } + else { + logger.error("Unrecognized nested exception, ignoring", e); + } + } + } + + public void add(Certificate certificate) throws KeyStoreException { + if (!contains(certificate)) { + Random rand = new Random(); + String alias = null; + + // loop until we have a unique alias that is not yet present in the store + do { + alias = "pcscert" + rand.nextLong(); + } + while (keyStore.getCertificate(alias) != null); + + keyStore.setCertificateEntry(alias, certificate); + } + } + + public void remove(Certificate certificate) throws KeyStoreException { + String alias = keyStore.getCertificateAlias(certificate); + if (alias != null) { + keyStore.deleteEntry(alias); + } + } + + public boolean contains(Certificate certificate) throws KeyStoreException { + // a certificate alias is only returned when there is a match + String alias = keyStore.getCertificateAlias(certificate); + return alias != null; + } + + public boolean verify(Certificate certificate) throws KeyStoreException { + // no-op + return false; + } + + public Iterator iterator() throws KeyStoreException { + HashSet set = new HashSet(); + Enumeration aliases = keyStore.aliases(); + + while (aliases.hasMoreElements()) { + String alias = (String) aliases.nextElement(); + set.add(keyStore.getCertificate(alias)); + } + + return set.iterator(); + } +} Copied: aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/trustmanager/standard/RootCertificateStore.java (from rev 1673, aperture/trunk/core/security/core/src/main/java/org/semanticdesktop/aperture/security/trustmanager/standard/RootCertificateStore.java) =================================================================== --- aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/trustmanager/standard/RootCertificateStore.java (rev 0) +++ aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/trustmanager/standard/RootCertificateStore.java 2009-02-17 19:13:12 UTC (rev 1674) @@ -0,0 +1,140 @@ +/* + * Copyright (c) 2005 - 2008 Aduna. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.security.trustmanager.standard; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.security.AccessController; +import java.security.KeyStore; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.PrivilegedActionException; +import java.security.PrivilegedExceptionAction; +import java.security.cert.Certificate; +import java.security.cert.CertificateException; +import java.util.Enumeration; +import java.util.HashSet; +import java.util.Iterator; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * A CertificateStore that holds the root Certificates. As this set is not mutable by the application + * itself, this class only provides functionality to load the certificates from a file. + */ +public class RootCertificateStore implements CertificateStore { + + private Logger logger = LoggerFactory.getLogger(getClass()); + + private String fileName; + + private KeyStore keyStore; + + public RootCertificateStore(String fileName) { + this.fileName = fileName; + } + + public void load() throws IOException, CertificateException, KeyStoreException, NoSuchAlgorithmException { + // initialize a KeyStore containing the root certificates + try { + AccessController.doPrivileged(new PrivilegedExceptionAction() { + + public Object run() throws KeyStoreException, NoSuchAlgorithmException, CertificateException, + IOException { + // initialize the KeyStore instance + if (keyStore == null) { + keyStore = KeyStore.getInstance("JKS"); + keyStore.load(null, null); + } + + // load the certificates, if they exist + File certFile = new File(fileName); + if (certFile.exists()) { + FileInputStream stream = new FileInputStream(certFile); + BufferedInputStream buffer = new BufferedInputStream(stream); + + keyStore.load(buffer, null); + + buffer.close(); + stream.close(); + } + + return null; + } + }); + } + catch (PrivilegedActionException e) { + Exception ex = e.getException(); + + if (ex instanceof IOException) { + throw (IOException) ex; + } + else if (ex instanceof CertificateException) { + throw (CertificateException) ex; + } + else if (ex instanceof KeyStoreException) { + throw (KeyStoreException) ex; + } + else if (ex instanceof NoSuchAlgorithmException) { + throw (NoSuchAlgorithmException) ex; + } + else { + logger.error("Unrecognized nested exception, ignoring", e); + } + } + } + + public void save() throws IOException, CertificateException, KeyStoreException, NoSuchAlgorithmException { + // no-op + } + + public void add(Certificate certificate) throws KeyStoreException { + // no-op + } + + public void remove(Certificate certificate) throws KeyStoreException { + // no-op + } + + public boolean contains(Certificate certificate) throws KeyStoreException { + // no-op + return false; + } + + public boolean verify(Certificate certificate) throws KeyStoreException { + Enumeration aliases = keyStore.aliases(); + while (aliases.hasMoreElements()) { + String alias = (String) aliases.nextElement(); + Certificate rootCertificate = keyStore.getCertificate(alias); + + try { + certificate.verify(rootCertificate.getPublicKey()); + return true; + } + catch (Exception e) { + // verification failed, ignore exception (is part of normal operation) + } + } + + return false; + } + + public Iterator iterator() throws KeyStoreException { + HashSet set = new HashSet(); + Enumeration aliases = keyStore.aliases(); + + while (aliases.hasMoreElements()) { + String alias = (String) aliases.nextElement(); + set.add(keyStore.getCertificate(alias)); + } + + return set.iterator(); + } +} Copied: aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/trustmanager/standard/SessionCertificateStore.java (from rev 1673, aperture/trunk/core/security/core/src/main/java/org/semanticdesktop/aperture/security/trustmanager/standard/SessionCertificateStore.java) =================================================================== --- aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/trustmanager/standard/SessionCertificateStore.java (rev 0) +++ aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/trustmanager/standard/SessionCertificateStore.java 2009-02-17 19:13:12 UTC (rev 1674) @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2005 - 2008 Aduna. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.security.trustmanager.standard; + +import java.io.IOException; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.Certificate; +import java.security.cert.CertificateException; +import java.util.HashSet; +import java.util.Iterator; + +/** + * A CertificateStore containing those Certificates that only need to be registered for this session. + * Typically used to hold all temporarily accepted or rejected Certificates. + */ +public class SessionCertificateStore implements CertificateStore { + + private HashSet certificates; + + public SessionCertificateStore() { + certificates = new HashSet(); + } + + public void load() throws IOException, CertificateException, KeyStoreException, NoSuchAlgorithmException { + // no-op + } + + public void save() throws IOException, CertificateException, KeyStoreException, NoSuchAlgorithmException { + // no-op + } + + public void add(Certificate certificate) throws KeyStoreException { + certificates.add(certificate); + } + + public void remove(Certificate certificate) throws KeyStoreException { + certificates.remove(certificate); + } + + public boolean contains(Certificate certificate) throws KeyStoreException { + return certificates.contains(certificate); + } + + public boolean verify(Certificate cert) throws KeyStoreException { + // we don't verify certificates, we only contain them + return false; + } + + public Iterator iterator() throws KeyStoreException { + return certificates.iterator(); + } +} Copied: aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/trustmanager/standard/StandardTrustManager.java (from rev 1673, aperture/trunk/core/security/core/src/main/java/org/semanticdesktop/aperture/security/trustmanager/standard/StandardTrustManager.java) =================================================================== --- aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/trustmanager/standard/StandardTrustManager.java (rev 0) +++ aperture/trunk/core/security/standard/src/main/java/org/semanticdesktop/aperture/security/trustmanager/standard/StandardTrustManager.java 2009-02-17 19:13:12 UTC (rev 1674) @@ -0,0 +1,255 @@ +/* + * Copyright (c) 2005 - 2008 Aduna. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.security.trustmanager.standard; + +import java.io.File; +import java.io.IOException; +import java.security.KeyStore; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.NoSuchProviderException; +import java.security.cert.CertificateException; +import java.security.cert.CertificateExpiredException; +import java.security.cert.CertificateNotYetValidException; +import java.security.cert.X509Certificate; + +import javax.net.ssl.TrustManager; +import javax.net.ssl.TrustManagerFactory; +import javax.net.ssl.X509TrustManager; + +import org.semanticdesktop.aperture.security.trustdecider.Decision; +import org.semanticdesktop.aperture.security.trustdecider.TrustDecider; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * A default implementation, well-suited for most environments, of X509TrustManager. It handles all + * certificates that can be validated by the system certificates and uses a delegate mechanism to decide + * what to do with unknown certificates. Such a delegate may for example show a dialog asking the user + * what to do, similar to what web browsers and mail readers typically do. + */ +public class StandardTrustManager implements X509TrustManager { + + private Logger logger = LoggerFactory.getLogger(getClass()); + + /** + * The file name of the standard root certificates file. + */ + private static final String R... [truncated message content] |
From: <her...@us...> - 2009-02-23 14:06:06
|
Revision: 1683 http://aperture.svn.sourceforge.net/aperture/?rev=1683&view=rev Author: herko_ter_horst Date: 2009-02-23 14:06:04 +0000 (Mon, 23 Feb 2009) Log Message: ----------- Subcrawler implementations. VCard is missing a dependency, we'll try to resolve it a.s.a.p. Modified Paths: -------------- aperture/trunk/core/crawler/archive/pom.xml aperture/trunk/core/crawler/archive/src/main/java/org/semanticdesktop/aperture/subcrawler/bzip2/BZip2SubCrawler.java aperture/trunk/core/crawler/archive/src/main/java/org/semanticdesktop/aperture/subcrawler/gzip/GZipSubCrawler.java aperture/trunk/core/crawler/archive/src/main/java/org/semanticdesktop/aperture/subcrawler/tar/TarSubCrawler.java aperture/trunk/core/crawler/mime/pom.xml aperture/trunk/core/crawler/mime/src/main/java/org/semanticdesktop/aperture/subcrawler/mime/MimeSubCrawler.java aperture/trunk/core/crawler/pom.xml aperture/trunk/core/crawler/vcard/pom.xml aperture/trunk/core/crawler/vcard/src/main/java/org/semanticdesktop/aperture/subcrawler/vcard/VcardSubCrawler.java aperture/trunk/pom.xml Added Paths: ----------- aperture/trunk/core/crawler/archive/src/main/java/org/semanticdesktop/aperture/subcrawler/archive/ aperture/trunk/core/crawler/archive/src/main/java/org/semanticdesktop/aperture/subcrawler/archive/bundle/ aperture/trunk/core/crawler/archive/src/main/java/org/semanticdesktop/aperture/subcrawler/archive/bundle/ArchiveSubCrawlerActivator.java aperture/trunk/core/crawler/mime/src/main/java/org/semanticdesktop/aperture/subcrawler/mime/bundle/ aperture/trunk/core/crawler/mime/src/main/java/org/semanticdesktop/aperture/subcrawler/mime/bundle/MimeSubCrawlerActivator.java aperture/trunk/core/crawler/vcard/src/main/java/org/semanticdesktop/aperture/subcrawler/vcard/bundle/ aperture/trunk/core/crawler/vcard/src/main/java/org/semanticdesktop/aperture/subcrawler/vcard/bundle/VcardSubCrawlerActivator.java Property Changed: ---------------- aperture/trunk/core/crawler/archive/ aperture/trunk/core/crawler/mime/ aperture/trunk/core/crawler/vcard/ Property changes on: aperture/trunk/core/crawler/archive ___________________________________________________________________ Added: svn:ignore + .classpath .project .settings target Modified: aperture/trunk/core/crawler/archive/pom.xml =================================================================== --- aperture/trunk/core/crawler/archive/pom.xml 2009-02-23 13:31:24 UTC (rev 1682) +++ aperture/trunk/core/crawler/archive/pom.xml 2009-02-23 14:06:04 UTC (rev 1683) @@ -11,26 +11,18 @@ <version>1.3.0-SNAPSHOT</version> </parent> - <artifactId>aperture-crawler-filesystem</artifactId> + <artifactId>aperture-crawler-sub-archive</artifactId> - <name>Aperture Core: Crawler - File System</name> - <description>File system crawler</description> + <name>Aperture Core: Sub-crawler - Archives</name> + <description>Archives sub-crawler</description> <dependencies> <dependency> <groupId>org.semanticdesktop.aperture</groupId> - <artifactId>aperture-accessor-core</artifactId> - </dependency> - <dependency> - <groupId>org.semanticdesktop.aperture</groupId> <artifactId>aperture-crawler-core</artifactId> </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> - <artifactId>aperture-datasource-filesystem</artifactId> - </dependency> - <dependency> - <groupId>org.semanticdesktop.aperture</groupId> <artifactId>aperture-rdf</artifactId> </dependency> <dependency> @@ -39,6 +31,11 @@ </dependency> <dependency> + <groupId>commons-compress</groupId> + <artifactId>commons-compress</artifactId> + </dependency> + + <dependency> <groupId>org.semweb4j</groupId> <artifactId>rdf2go.api</artifactId> </dependency> @@ -75,9 +72,9 @@ <extensions>true</extensions> <configuration> <instructions> - <Export-Package>org.semanticdesktop.aperture.crawler.filesystem</Export-Package> - <Private-Package>org.semanticdesktop.aperture.crawler.filesystem.bundle</Private-Package> - <Bundle-Activator>org.semanticdesktop.aperture.crawler.filesystem.bundle.FileSystemCrawlerActivator</Bundle-Activator> + <Export-Package>org.semanticdesktop.aperture.subcrawler.bzip2,org.semanticdesktop.aperture.subcrawler.gzip,org.semanticdesktop.aperture.subcrawler.tar,org.semanticdesktop.aperture.subcrawler.zip</Export-Package> + <Private-Package>org.semanticdesktop.aperture.subcrawler.archive.bundle</Private-Package> + <Bundle-Activator>org.semanticdesktop.aperture.subcrawler.archive.bundle.ArchiveSubCrawlerActivator</Bundle-Activator> </instructions> </configuration> </plugin> Added: aperture/trunk/core/crawler/archive/src/main/java/org/semanticdesktop/aperture/subcrawler/archive/bundle/ArchiveSubCrawlerActivator.java =================================================================== --- aperture/trunk/core/crawler/archive/src/main/java/org/semanticdesktop/aperture/subcrawler/archive/bundle/ArchiveSubCrawlerActivator.java (rev 0) +++ aperture/trunk/core/crawler/archive/src/main/java/org/semanticdesktop/aperture/subcrawler/archive/bundle/ArchiveSubCrawlerActivator.java 2009-02-23 14:06:04 UTC (rev 1683) @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.subcrawler.archive.bundle; + +import java.util.HashSet; +import java.util.Hashtable; +import java.util.Set; + +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceRegistration; +import org.semanticdesktop.aperture.subcrawler.SubCrawlerFactory; +import org.semanticdesktop.aperture.subcrawler.bzip2.BZip2SubCrawlerFactory; +import org.semanticdesktop.aperture.subcrawler.gzip.GZipSubCrawlerFactory; +import org.semanticdesktop.aperture.subcrawler.tar.TarSubCrawlerFactory; +import org.semanticdesktop.aperture.subcrawler.zip.ZipSubCrawlerFactory; + +public class ArchiveSubCrawlerActivator implements BundleActivator { + + private Set<ServiceRegistration> registrations = new HashSet<ServiceRegistration>(); + + public void start(BundleContext context) throws Exception { + registrations.add(context.registerService(SubCrawlerFactory.class + .getName(), new BZip2SubCrawlerFactory(), new Hashtable())); + registrations.add(context.registerService(SubCrawlerFactory.class + .getName(), new GZipSubCrawlerFactory(), new Hashtable())); + registrations.add(context.registerService(SubCrawlerFactory.class + .getName(), new TarSubCrawlerFactory(), new Hashtable())); + registrations.add(context.registerService(SubCrawlerFactory.class + .getName(), new ZipSubCrawlerFactory(), new Hashtable())); + } + + public void stop(BundleContext context) throws Exception { + for (ServiceRegistration registration : registrations) { + registration.unregister(); + } + registrations.clear(); + } +} Modified: aperture/trunk/core/crawler/archive/src/main/java/org/semanticdesktop/aperture/subcrawler/bzip2/BZip2SubCrawler.java =================================================================== --- aperture/trunk/core/crawler/archive/src/main/java/org/semanticdesktop/aperture/subcrawler/bzip2/BZip2SubCrawler.java 2009-02-23 13:31:24 UTC (rev 1682) +++ aperture/trunk/core/crawler/archive/src/main/java/org/semanticdesktop/aperture/subcrawler/bzip2/BZip2SubCrawler.java 2009-02-23 14:06:04 UTC (rev 1683) @@ -9,10 +9,10 @@ import java.io.IOException; import java.io.InputStream; -import org.apache.tools.bzip2.CBZip2InputStream; +import org.apache.commons.compress.bzip2.CBZip2InputStream; import org.ontoware.rdf2go.model.node.URI; +import org.semanticdesktop.aperture.rdf.util.ModelUtil; import org.semanticdesktop.aperture.subcrawler.base.AbstractCompressorSubCrawler; -import org.semanticdesktop.aperture.util.UriUtil; /** * A SubCrawler Implementation working with BZIP2 archives. @@ -36,7 +36,7 @@ @Override protected URI getContentUri(URI archiveUri) { - String name = UriUtil.getFileName(archiveUri); + String name = ModelUtil.getFileName(archiveUri); if (name.endsWith(".bz2")) { return createChildUri(archiveUri, name.substring(0,name.length() - 4)); } else if (name.endsWith(".tbz")) { Modified: aperture/trunk/core/crawler/archive/src/main/java/org/semanticdesktop/aperture/subcrawler/gzip/GZipSubCrawler.java =================================================================== --- aperture/trunk/core/crawler/archive/src/main/java/org/semanticdesktop/aperture/subcrawler/gzip/GZipSubCrawler.java 2009-02-23 13:31:24 UTC (rev 1682) +++ aperture/trunk/core/crawler/archive/src/main/java/org/semanticdesktop/aperture/subcrawler/gzip/GZipSubCrawler.java 2009-02-23 14:06:04 UTC (rev 1683) @@ -11,8 +11,8 @@ import java.util.zip.GZIPInputStream; import org.ontoware.rdf2go.model.node.URI; +import org.semanticdesktop.aperture.rdf.util.ModelUtil; import org.semanticdesktop.aperture.subcrawler.base.AbstractCompressorSubCrawler; -import org.semanticdesktop.aperture.util.UriUtil; /** * A SubCrawler Implementation working with GZIP archives. @@ -26,7 +26,7 @@ @Override protected URI getContentUri(URI archiveUri) { - String name = UriUtil.getFileName(archiveUri); + String name = ModelUtil.getFileName(archiveUri); if (name.endsWith(".gz")) { return createChildUri(archiveUri, name.substring(0,name.length() - 3)); } else if (name.endsWith(".tgz")) { Modified: aperture/trunk/core/crawler/archive/src/main/java/org/semanticdesktop/aperture/subcrawler/tar/TarSubCrawler.java =================================================================== --- aperture/trunk/core/crawler/archive/src/main/java/org/semanticdesktop/aperture/subcrawler/tar/TarSubCrawler.java 2009-02-23 13:31:24 UTC (rev 1682) +++ aperture/trunk/core/crawler/archive/src/main/java/org/semanticdesktop/aperture/subcrawler/tar/TarSubCrawler.java 2009-02-23 14:06:04 UTC (rev 1683) @@ -9,8 +9,8 @@ import java.io.IOException; import java.io.InputStream; -import org.apache.tools.tar.TarEntry; -import org.apache.tools.tar.TarInputStream; +import org.apache.commons.compress.tar.TarEntry; +import org.apache.commons.compress.tar.TarInputStream; import org.semanticdesktop.aperture.subcrawler.base.AbstractArchiverSubCrawler; /** Property changes on: aperture/trunk/core/crawler/mime ___________________________________________________________________ Added: svn:ignore + .classpath .project .settings target Modified: aperture/trunk/core/crawler/mime/pom.xml =================================================================== --- aperture/trunk/core/crawler/mime/pom.xml 2009-02-23 13:31:24 UTC (rev 1682) +++ aperture/trunk/core/crawler/mime/pom.xml 2009-02-23 14:06:04 UTC (rev 1683) @@ -11,10 +11,10 @@ <version>1.3.0-SNAPSHOT</version> </parent> - <artifactId>aperture-crawler-filesystem</artifactId> + <artifactId>aperture-crawler-sub-mime</artifactId> - <name>Aperture Core: Crawler - File System</name> - <description>File system crawler</description> + <name>Aperture Core: Crawler - MIME</name> + <description>MIME message sub-crawler</description> <dependencies> <dependency> @@ -27,7 +27,7 @@ </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> - <artifactId>aperture-datasource-filesystem</artifactId> + <artifactId>aperture-crawler-mail</artifactId> </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> @@ -39,6 +39,11 @@ </dependency> <dependency> + <groupId>javax.mail</groupId> + <artifactId>mail</artifactId> + </dependency> + + <dependency> <groupId>org.semweb4j</groupId> <artifactId>rdf2go.api</artifactId> </dependency> @@ -75,9 +80,9 @@ <extensions>true</extensions> <configuration> <instructions> - <Export-Package>org.semanticdesktop.aperture.crawler.filesystem</Export-Package> - <Private-Package>org.semanticdesktop.aperture.crawler.filesystem.bundle</Private-Package> - <Bundle-Activator>org.semanticdesktop.aperture.crawler.filesystem.bundle.FileSystemCrawlerActivator</Bundle-Activator> + <Export-Package>org.semanticdesktop.aperture.subcrawler.mime.*</Export-Package> + <Private-Package>org.semanticdesktop.aperture.subcrawler.mime.bundle</Private-Package> + <Bundle-Activator>org.semanticdesktop.aperture.subcrawler.mime.bundle.MimeSubCrawlerActivator</Bundle-Activator> </instructions> </configuration> </plugin> Modified: aperture/trunk/core/crawler/mime/src/main/java/org/semanticdesktop/aperture/subcrawler/mime/MimeSubCrawler.java =================================================================== --- aperture/trunk/core/crawler/mime/src/main/java/org/semanticdesktop/aperture/subcrawler/mime/MimeSubCrawler.java 2009-02-23 13:31:24 UTC (rev 1682) +++ aperture/trunk/core/crawler/mime/src/main/java/org/semanticdesktop/aperture/subcrawler/mime/MimeSubCrawler.java 2009-02-23 14:06:04 UTC (rev 1683) @@ -28,12 +28,12 @@ import org.ontoware.rdf2go.model.node.URI; import org.semanticdesktop.aperture.accessor.AccessData; import org.semanticdesktop.aperture.accessor.DataObject; -import org.semanticdesktop.aperture.accessor.MessageDataObject; import org.semanticdesktop.aperture.accessor.RDFContainerFactory; -import org.semanticdesktop.aperture.accessor.base.MessageDataObjectBase; import org.semanticdesktop.aperture.crawler.mail.AbstractJavaMailCrawler; import org.semanticdesktop.aperture.crawler.mail.DataObjectFactory; import org.semanticdesktop.aperture.crawler.mail.MailUtil; +import org.semanticdesktop.aperture.crawler.mail.MessageDataObject; +import org.semanticdesktop.aperture.crawler.mail.base.MessageDataObjectBase; import org.semanticdesktop.aperture.datasource.DataSource; import org.semanticdesktop.aperture.rdf.RDFContainer; import org.semanticdesktop.aperture.rdf.UpdateException; Added: aperture/trunk/core/crawler/mime/src/main/java/org/semanticdesktop/aperture/subcrawler/mime/bundle/MimeSubCrawlerActivator.java =================================================================== --- aperture/trunk/core/crawler/mime/src/main/java/org/semanticdesktop/aperture/subcrawler/mime/bundle/MimeSubCrawlerActivator.java (rev 0) +++ aperture/trunk/core/crawler/mime/src/main/java/org/semanticdesktop/aperture/subcrawler/mime/bundle/MimeSubCrawlerActivator.java 2009-02-23 14:06:04 UTC (rev 1683) @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2006 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.subcrawler.mime.bundle; + +import java.util.Hashtable; + +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceRegistration; +import org.semanticdesktop.aperture.subcrawler.SubCrawlerFactory; +import org.semanticdesktop.aperture.subcrawler.mime.MimeSubCrawlerFactory; + +public class MimeSubCrawlerActivator implements BundleActivator { + + private ServiceRegistration registration; + + public void start(BundleContext context) throws Exception { + registration = context.registerService(SubCrawlerFactory.class + .getName(), new MimeSubCrawlerFactory(), new Hashtable()); + } + + public void stop(BundleContext context) throws Exception { + registration.unregister(); + } +} Modified: aperture/trunk/core/crawler/pom.xml =================================================================== --- aperture/trunk/core/crawler/pom.xml 2009-02-23 13:31:24 UTC (rev 1682) +++ aperture/trunk/core/crawler/pom.xml 2009-02-23 14:06:04 UTC (rev 1683) @@ -18,12 +18,15 @@ <description>Definition of various crawlers</description> <modules> + <module>archive</module> <module>core</module> <module>filesystem</module> <module>ical</module> <module>imap</module> <module>mail</module> + <module>mime</module> <module>mbox</module> +<!-- <module>vcard</module> --> <module>web</module> </modules> </project> \ No newline at end of file Property changes on: aperture/trunk/core/crawler/vcard ___________________________________________________________________ Added: svn:ignore + .classpath .project .settings target Modified: aperture/trunk/core/crawler/vcard/pom.xml =================================================================== --- aperture/trunk/core/crawler/vcard/pom.xml 2009-02-23 13:31:24 UTC (rev 1682) +++ aperture/trunk/core/crawler/vcard/pom.xml 2009-02-23 14:06:04 UTC (rev 1683) @@ -11,26 +11,18 @@ <version>1.3.0-SNAPSHOT</version> </parent> - <artifactId>aperture-crawler-filesystem</artifactId> + <artifactId>aperture-crawler-sub-vcard</artifactId> - <name>Aperture Core: Crawler - File System</name> - <description>File system crawler</description> + <name>Aperture Core: Crawler - VCard</name> + <description>VCard sub-crawler</description> <dependencies> <dependency> <groupId>org.semanticdesktop.aperture</groupId> - <artifactId>aperture-accessor-core</artifactId> - </dependency> - <dependency> - <groupId>org.semanticdesktop.aperture</groupId> <artifactId>aperture-crawler-core</artifactId> </dependency> <dependency> <groupId>org.semanticdesktop.aperture</groupId> - <artifactId>aperture-datasource-filesystem</artifactId> - </dependency> - <dependency> - <groupId>org.semanticdesktop.aperture</groupId> <artifactId>aperture-rdf</artifactId> </dependency> <dependency> @@ -75,9 +67,9 @@ <extensions>true</extensions> <configuration> <instructions> - <Export-Package>org.semanticdesktop.aperture.crawler.filesystem</Export-Package> - <Private-Package>org.semanticdesktop.aperture.crawler.filesystem.bundle</Private-Package> - <Bundle-Activator>org.semanticdesktop.aperture.crawler.filesystem.bundle.FileSystemCrawlerActivator</Bundle-Activator> + <Export-Package>org.semanticdesktop.aperture.subcrawler.vcard.*</Export-Package> + <Private-Package>org.semanticdesktop.aperture.subcrawler.vcard.bundle</Private-Package> + <Bundle-Activator>org.semanticdesktop.aperture.subcrawler.vcard.bundle.VcardSubCrawlerActivator</Bundle-Activator> </instructions> </configuration> </plugin> Modified: aperture/trunk/core/crawler/vcard/src/main/java/org/semanticdesktop/aperture/subcrawler/vcard/VcardSubCrawler.java =================================================================== --- aperture/trunk/core/crawler/vcard/src/main/java/org/semanticdesktop/aperture/subcrawler/vcard/VcardSubCrawler.java 2009-02-23 13:31:24 UTC (rev 1682) +++ aperture/trunk/core/crawler/vcard/src/main/java/org/semanticdesktop/aperture/subcrawler/vcard/VcardSubCrawler.java 2009-02-23 14:06:04 UTC (rev 1683) @@ -41,13 +41,13 @@ import org.semanticdesktop.aperture.accessor.base.DataObjectBase; import org.semanticdesktop.aperture.datasource.DataSource; import org.semanticdesktop.aperture.rdf.RDFContainer; +import org.semanticdesktop.aperture.rdf.util.ModelUtil; import org.semanticdesktop.aperture.subcrawler.SubCrawler; import org.semanticdesktop.aperture.subcrawler.SubCrawlerException; import org.semanticdesktop.aperture.subcrawler.SubCrawlerHandler; import org.semanticdesktop.aperture.subcrawler.base.AbstractSubCrawler; import org.semanticdesktop.aperture.util.DateUtil; import org.semanticdesktop.aperture.util.StringUtil; -import org.semanticdesktop.aperture.util.UriUtil; import org.semanticdesktop.aperture.vocabulary.GEO; import org.semanticdesktop.aperture.vocabulary.NCO; import org.semanticdesktop.aperture.vocabulary.NEXIF; @@ -252,7 +252,7 @@ // that it is a PersonContact, this triple needs to be added manually model.addStatement(contactResource, RDF.type, NCO.PersonContact); - Resource affiliationResource = UriUtil.generateRandomResource(model); + Resource affiliationResource = ModelUtil.generateRandomResource(model); model.addStatement(contactResource, NCO.hasAffiliation, affiliationResource); model.addStatement(affiliationResource, RDF.type, NCO.Affiliation); addStringProperty(model, affiliationResource, NCO.role, organizationalIdentity.getRole()); @@ -265,7 +265,7 @@ } // now we know we have to create an organization resource - Resource organizationResource = UriUtil.generateRandomResource(model); + Resource organizationResource = ModelUtil.generateRandomResource(model); model.addStatement(organizationResource, RDF.type, NCO.OrganizationContact); model.addStatement(affiliationResource, NCO.org, organizationResource); @@ -320,7 +320,7 @@ private void processAddress(Model model, Address address, Resource contactResource, Resource affiliationResource, boolean preferred) { if (address != null) { - Resource addressResource = UriUtil.generateRandomResource(model); + Resource addressResource = ModelUtil.generateRandomResource(model); model.addStatement(addressResource, RDF.type, NCO.PostalAddress); addStringProperty(model, addressResource, NCO.locality, address.getCity()); addStringProperty(model, addressResource, NCO.country, address.getCountry()); @@ -374,7 +374,7 @@ else { // this means that no affiliation has been created, we need to create one now // an anonymous affiliation with an anonymous organization - affiliationResource = UriUtil.generateRandomResource(model); + affiliationResource = ModelUtil.generateRandomResource(model); model.addStatement(affiliationResource, RDF.type, NCO.Affiliation); model.addStatement(contactResource, NCO.hasAffiliation, affiliationResource); addContactMediumProperty(model, contactResource, NCO.hasPostalAddress, addressResource, @@ -423,7 +423,7 @@ private void processPhoneNumber(Model model, PhoneNumber number, Resource contactResource, Resource affiliationResource) { if (number != null) { - Resource numberResource = UriUtil.generateRandomResource(model); + Resource numberResource = ModelUtil.generateRandomResource(model); model.addStatement(numberResource, RDF.type, NCO.PhoneNumber); addStringProperty(model, numberResource, NCO.phoneNumber, number.getNumber()); if (number.isBBS()) { @@ -476,7 +476,7 @@ else { // this means that no affiliation has been created, we need to create one now // an anonymous affiliation with an anonymous organization - affiliationResource = UriUtil.generateRandomResource(model); + affiliationResource = ModelUtil.generateRandomResource(model); model.addStatement(affiliationResource, RDF.type, NCO.Affiliation); model.addStatement(contactResource, NCO.hasAffiliation, affiliationResource); addContactMediumProperty(model, contactResource, NCO.hasPhoneNumber, numberResource, @@ -501,7 +501,7 @@ // we don't support other than internet addresses anyway, I have // no idea what are these x.400 addresses // TODO solve the x.400 address type issue - Resource addressResource = UriUtil.generateRandomResource(model); + Resource addressResource = ModelUtil.generateRandomResource(model); model.addStatement(addressResource, RDF.type, NCO.EmailAddress); addStringProperty(model, addressResource, NCO.emailAddress, address.getAddress()); // due to the fact that the VCARD specs suck ass, we always attach the address @@ -513,7 +513,7 @@ private void processGeographicalInformation(Model model, Resource contactResource, URI property, GeographicalInformation geo) { if (geo != null) { - Resource geoResource = UriUtil.generateRandomResource(model); + Resource geoResource = ModelUtil.generateRandomResource(model); model.addStatement(geoResource, RDF.type, GEO.Point); model.addStatement(geoResource, GEO.lat, geo.getLatitude().toPlainString()); model.addStatement(geoResource, GEO.long_, geo.getLongitude().toPlainString()); @@ -523,7 +523,7 @@ private void processImage(Model model, Resource contactResource, URI property, Image photo) { if (photo != null) { - Resource imageResource = UriUtil.generateRandomResource(model); + Resource imageResource = ModelUtil.generateRandomResource(model); model.addStatement(imageResource, RDF.type, NEXIF.Photo); model.addStatement(imageResource, RDF.type, NFO.Attachment); model.addStatement(contactResource, property, imageResource); @@ -533,7 +533,7 @@ private void processSound(Model model, Resource contactResource, URI property, Sound sound) { if (sound != null) { - Resource soundResource = UriUtil.generateRandomResource(model); + Resource soundResource = ModelUtil.generateRandomResource(model); model.addStatement(soundResource, RDF.type, NFO.Audio); model.addStatement(soundResource, RDF.type, NFO.Attachment); model.addStatement(contactResource, property, soundResource); @@ -543,7 +543,7 @@ private void processPublicKey(Model model, Resource contactResource, URI property, Key publicKey) { if (publicKey != null) { - Resource keyResource = UriUtil.generateRandomResource(model); + Resource keyResource = ModelUtil.generateRandomResource(model); model.addStatement(keyResource, RDF.type, NIE.InformationElement); model.addStatement(keyResource, RDF.type, NFO.Attachment); model.addStatement(contactResource, property, keyResource); Added: aperture/trunk/core/crawler/vcard/src/main/java/org/semanticdesktop/aperture/subcrawler/vcard/bundle/VcardSubCrawlerActivator.java =================================================================== --- aperture/trunk/core/crawler/vcard/src/main/java/org/semanticdesktop/aperture/subcrawler/vcard/bundle/VcardSubCrawlerActivator.java (rev 0) +++ aperture/trunk/core/crawler/vcard/src/main/java/org/semanticdesktop/aperture/subcrawler/vcard/bundle/VcardSubCrawlerActivator.java 2009-02-23 14:06:04 UTC (rev 1683) @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2006 - 2008 Aduna and Deutsches Forschungszentrum fuer Kuenstliche Intelligenz DFKI GmbH. + * All rights reserved. + * + * Licensed under the Aperture BSD-style license. + */ +package org.semanticdesktop.aperture.subcrawler.vcard.bundle; + +import java.util.Hashtable; + +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceRegistration; +import org.semanticdesktop.aperture.subcrawler.SubCrawlerFactory; +import org.semanticdesktop.aperture.subcrawler.vcard.VcardSubCrawlerFactory; + +public class VcardSubCrawlerActivator implements BundleActivator { + + private ServiceRegistration registration; + + public void start(BundleContext context) throws Exception { + registration = context.registerService(SubCrawlerFactory.class + .getName(), new VcardSubCrawlerFactory(), new Hashtable()); + } + + public void stop(BundleContext context) throws Exception { + registration.unregister(); + } +} Modified: aperture/trunk/pom.xml =================================================================== --- aperture/trunk/pom.xml 2009-02-23 13:31:24 UTC (rev 1682) +++ aperture/trunk/pom.xml 2009-02-23 14:06:04 UTC (rev 1683) @@ -207,6 +207,12 @@ </dependency> <dependency> + <groupId>commons-compress</groupId> + <artifactId>commons-compress</artifactId> + <version>20050911</version> + </dependency> + + <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.1</version> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <her...@us...> - 2009-02-23 15:44:44
|
Revision: 1698 http://aperture.svn.sourceforge.net/aperture/?rev=1698&view=rev Author: herko_ter_horst Date: 2009-02-23 15:44:40 +0000 (Mon, 23 Feb 2009) Log Message: ----------- Combined some related extractor modules. Modified Paths: -------------- aperture/trunk/core/extractor/microsoft/pom.xml aperture/trunk/pom.xml Added Paths: ----------- aperture/trunk/core/extractor/corel/office/ aperture/trunk/core/extractor/corel/office/pom.xml aperture/trunk/core/extractor/corel/office/src/ Removed Paths: ------------- aperture/trunk/core/extractor/corel/office/pom.xml aperture/trunk/core/extractor/corel/office/src/ aperture/trunk/core/extractor/corel/presentations/ aperture/trunk/core/extractor/corel/wordperfect/ aperture/trunk/core/extractor/microsoft/excel/ aperture/trunk/core/extractor/microsoft/powerpoint/ aperture/trunk/core/extractor/microsoft/publisher/ aperture/trunk/core/extractor/microsoft/word/ Deleted: aperture/trunk/core/extractor/corel/office/pom.xml =================================================================== --- aperture/trunk/core/extractor/corel/wordperfect/pom.xml 2009-02-23 15:33:46 UTC (rev 1693) +++ aperture/trunk/core/extractor/corel/office/pom.xml 2009-02-23 15:44:40 UTC (rev 1698) @@ -1,25 +0,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/maven-v4_0_0.xsd"> - - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.semanticdesktop.aperture</groupId> - <artifactId>aperture-extractor-corel</artifactId> - <version>1.3.0-SNAPSHOT</version> - </parent> - - <artifactId>aperture-extractor-corel-util</artifactId> - - <name>Aperture Core: Extractor - Corel util</name> - <description>Utilities</description> - - <dependencies> - <dependency> - <groupId>org.semanticdesktop.aperture</groupId> - <artifactId>aperture-extractor-core</artifactId> - </dependency> - </dependencies> -</project> Copied: aperture/trunk/core/extractor/corel/office/pom.xml (from rev 1696, aperture/trunk/core/extractor/corel/wordperfect/pom.xml) =================================================================== --- aperture/trunk/core/extractor/corel/office/pom.xml (rev 0) +++ aperture/trunk/core/extractor/corel/office/pom.xml 2009-02-23 15:44:40 UTC (rev 1698) @@ -0,0 +1,25 @@ +<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> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-extractor-corel</artifactId> + <version>1.3.0-SNAPSHOT</version> + </parent> + + <artifactId>aperture-extractor-corel-util</artifactId> + + <name>Aperture Core: Extractor - Corel util</name> + <description>Utilities</description> + + <dependencies> + <dependency> + <groupId>org.semanticdesktop.aperture</groupId> + <artifactId>aperture-extractor-core</artifactId> + </dependency> + </dependencies> +</project> Modified: aperture/trunk/core/extractor/microsoft/pom.xml =================================================================== --- aperture/trunk/core/extractor/microsoft/pom.xml 2009-02-23 15:42:32 UTC (rev 1697) +++ aperture/trunk/core/extractor/microsoft/pom.xml 2009-02-23 15:44:40 UTC (rev 1698) @@ -18,14 +18,10 @@ <description>Extractors for Microsoft file formats</description> <modules> - <module>excel</module> <module>office</module> - <module>powerpoint</module> - <module>publisher</module> <module>quattro</module> <module>util</module> <module>visio</module> - <module>word</module> <module>works</module> </modules> </project> \ No newline at end of file Modified: aperture/trunk/pom.xml =================================================================== --- aperture/trunk/pom.xml 2009-02-23 15:42:32 UTC (rev 1697) +++ aperture/trunk/pom.xml 2009-02-23 15:44:40 UTC (rev 1698) @@ -139,7 +139,7 @@ <!-- Aperture Tools --> <dependency> <groupId>org.semanticdesktop.nepomuk</groupId> - <artifactId>aperture-tools-unionsail</artifactId> + <artifactId>aperture-tools-demork</artifactId> <version>${aperture.tools.version}</version> </dependency> <dependency> @@ -152,6 +152,11 @@ <artifactId>aperture-tools-nrlvalidator</artifactId> <version>${aperture.tools.version}</version> </dependency> + <dependency> + <groupId>org.semanticdesktop.nepomuk</groupId> + <artifactId>aperture-tools-unionsail</artifactId> + <version>${aperture.tools.version}</version> + </dependency> <!-- OpenRDF Sesame --> <dependency> @@ -198,6 +203,13 @@ </exclusions> </dependency> + <!-- JavaX --> + <dependency> + <groupId>javax.mail</groupId> + <artifactId>mail</artifactId> + <version>1.4.1</version> + </dependency> + <!-- OSGi --> <dependency> <groupId>org.osgi</groupId> @@ -206,19 +218,15 @@ <scope>provided</scope> </dependency> + <!-- Apache Commons --> <dependency> <groupId>commons-compress</groupId> <artifactId>commons-compress</artifactId> <version>20050911</version> </dependency> + <!-- Apache POI --> <dependency> - <groupId>javax.mail</groupId> - <artifactId>mail</artifactId> - <version>1.4.1</version> - </dependency> - - <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.2-FINAL</version> @@ -240,6 +248,7 @@ <version>1.6</version> </dependency> + <!-- iCal4J --> <dependency> <groupId>ical4j</groupId> <artifactId>ical4j</artifactId> @@ -251,6 +260,7 @@ </exclusion> </exclusions> </dependency> + <dependency> <groupId>mstor</groupId> <artifactId>mstor</artifactId> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |