diff --git a/CHANGES.txt b/CHANGES.txt
index 7eb8f5b2e15..f35560b2217 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,4 @@
-Lucene Change Log
+Lucene Change Log
$Id$
======================= Trunk (not yet released) =======================
@@ -283,6 +283,9 @@ Build
5. LUCENE-1051: Include javadocs in the maven artifacts. (Michael Busch)
+ 6. LUCENE-1055: Remove gdata-server from build files and its sources
+ from trunk. (Michael Busch)
+
Test Cases
======================= Release 2.2.0 2007-06-19 =======================
diff --git a/build.xml b/build.xml
index 1e816fbe36c..5f2893a74e7 100644
--- a/build.xml
+++ b/build.xml
@@ -217,16 +217,6 @@
-
-
-
-
-
-
-
-
-
-
@@ -237,9 +227,8 @@
-
-
+
@@ -264,9 +253,6 @@
-
-
-
@@ -281,7 +267,6 @@
-
diff --git a/common-build.xml b/common-build.xml
index 90c1653549f..15dfe75df39 100644
--- a/common-build.xml
+++ b/common-build.xml
@@ -56,11 +56,6 @@
-
-
-
-
-
@@ -537,3 +532,4 @@
+
diff --git a/contrib/gdata-server/CHANGES.txt b/contrib/gdata-server/CHANGES.txt
deleted file mode 100644
index 36067786e78..00000000000
--- a/contrib/gdata-server/CHANGES.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-Lucene GData-Server change log
-
-$Id:$
-
-trunk (not yet release)
-
-Build management (Ant)
-1. Changes to fetch third-party libs via maven repository
- - Added build file folder ./gdata-build
- - created macroes to fetch jar files in ./gdata-build/dependencies.xml
- - created tasks to fetch runtime, build and test relevant jar files in ./gdata-build/get-dependencies.xml
-
-2. Changed build management to create core and IoC / DI container jars to enable replacement of the container impl.
- - created default IoC container build in ./gdata-build/hivemind-build.xml
-
-3. Webarchive packageing prepared for including IoC metadata descriptors
- - including configured IoC descriptors in war distribution
- - improved dependency fetching (on demand)
- - fixed some spelling errors
-
-4. Changed project structure
- - Applied new structure of the gdata-server project.
- - All source and test-sources are located under the ./src/ folder.
- - Created GData Object Model (GOM) folder ./src/gom, Core-Folder ./src/core and ./src/hivemind
- - Sources and Tests now splitted into their "sub" projects.
-
-
-New Features
-
-1. Hessian Webservice support
- - created hessian servlet as a generic http interface for provided services
- - services can be exposed via HessianSkeletonProvider by defining a mapping key, Interface and an implementation instance.
-
-2. GData Object Model
- - The GOM will replace the Google Client API as a internal and extensible object representation.
- - GOM provides a easier extension mechanimn for creating custom GData feeds and entries
-
-Bug Fixes
-
-1. LUCENE-1005: DateFormater (sic) was not properly formatting dates on certain machines (lucene.zones.a.o). Added a
-setTimeZone() call after the instantiation of the DateFormat to set the TimeZone to GMT. (Chris Hostetter, Mike McCandless, Grant Ingersoll)
\ No newline at end of file
diff --git a/contrib/gdata-server/build.xml b/contrib/gdata-server/build.xml
deleted file mode 100644
index 1dd50c35970..00000000000
--- a/contrib/gdata-server/build.xml
+++ /dev/null
@@ -1,134 +0,0 @@
-
-
-
-
-
- Serverside Google Data API implementation
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Java 1.5 support not availabble (or prohibited by explicitly set property) ... skipping task
-
-
-
-
-
diff --git a/contrib/gdata-server/gdata-build/dependency.xml b/contrib/gdata-server/gdata-build/dependency.xml
deleted file mode 100644
index a9e468fa43b..00000000000
--- a/contrib/gdata-server/gdata-build/dependency.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-
-
-
-
-
-
-
- **************************************************************************************************
- * *
- * D O W N L O A D W A R N I N G *
- * *
- * Dependent libraries will be downloaded. These are NOT necessarily downloaded from apache.org, *
- * and may use other licences besides the Apache Software License. Dependencies will use an *
- * open-source license compatible with the ASL, such as Berkeley Software Distribution (BSD) or *
- * Mozilla Public License (MPL). *
- * *
- **************************************************************************************************
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/contrib/gdata-server/gdata-build/get-dependencies.xml b/contrib/gdata-server/gdata-build/get-dependencies.xml
deleted file mode 100644
index 0eb56336c64..00000000000
--- a/contrib/gdata-server/gdata-build/get-dependencies.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
-
-
-
-
-
- Preparing build path for external dependencies
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/contrib/gdata-server/lib/commons-beanutils.jar b/contrib/gdata-server/lib/commons-beanutils.jar
deleted file mode 100644
index e2113569e52..00000000000
--- a/contrib/gdata-server/lib/commons-beanutils.jar
+++ /dev/null
@@ -1,2 +0,0 @@
-AnyObjectId[b1b89c9c921f16af22a88db3ff28975a8e40d886] was removed in git history.
-Apache SVN contains full history.
\ No newline at end of file
diff --git a/contrib/gdata-server/lib/commons-collections-3.2.jar b/contrib/gdata-server/lib/commons-collections-3.2.jar
deleted file mode 100644
index 8071d63ea7a..00000000000
--- a/contrib/gdata-server/lib/commons-collections-3.2.jar
+++ /dev/null
@@ -1,2 +0,0 @@
-AnyObjectId[75580be255065727b20b41c2d338b14792bb35cd] was removed in git history.
-Apache SVN contains full history.
\ No newline at end of file
diff --git a/contrib/gdata-server/lib/commons-digester-1.7.jar b/contrib/gdata-server/lib/commons-digester-1.7.jar
deleted file mode 100644
index 97d5d0558a8..00000000000
--- a/contrib/gdata-server/lib/commons-digester-1.7.jar
+++ /dev/null
@@ -1,2 +0,0 @@
-AnyObjectId[1783dbea232ced6db122268f8faa5ce773c7ea42] was removed in git history.
-Apache SVN contains full history.
\ No newline at end of file
diff --git a/contrib/gdata-server/lib/commons-logging-1.1.jar b/contrib/gdata-server/lib/commons-logging-1.1.jar
deleted file mode 100644
index 03f8e20d83c..00000000000
--- a/contrib/gdata-server/lib/commons-logging-1.1.jar
+++ /dev/null
@@ -1,2 +0,0 @@
-AnyObjectId[2ff9bbd90d63f92cdffea944869ed9bea7ead49c] was removed in git history.
-Apache SVN contains full history.
\ No newline at end of file
diff --git a/contrib/gdata-server/lib/gdata-client-1.0.jar b/contrib/gdata-server/lib/gdata-client-1.0.jar
deleted file mode 100644
index 4d15eedbdf6..00000000000
--- a/contrib/gdata-server/lib/gdata-client-1.0.jar
+++ /dev/null
@@ -1,2 +0,0 @@
-AnyObjectId[311a546765c97a9bc9e60f4c56da07f1246ab3da] was removed in git history.
-Apache SVN contains full history.
\ No newline at end of file
diff --git a/contrib/gdata-server/lib/log4j-1.2.13.jar b/contrib/gdata-server/lib/log4j-1.2.13.jar
deleted file mode 100644
index 0133c7ef623..00000000000
--- a/contrib/gdata-server/lib/log4j-1.2.13.jar
+++ /dev/null
@@ -1,2 +0,0 @@
-AnyObjectId[dde9972109dd25f14f732052984b0d3719b17795] was removed in git history.
-Apache SVN contains full history.
\ No newline at end of file
diff --git a/contrib/gdata-server/lib/nekohtml.jar b/contrib/gdata-server/lib/nekohtml.jar
deleted file mode 100644
index 5b0026f109a..00000000000
--- a/contrib/gdata-server/lib/nekohtml.jar
+++ /dev/null
@@ -1,2 +0,0 @@
-AnyObjectId[ebd5b4b2a7a1d8b67c1717b364fb9affb35dca1e] was removed in git history.
-Apache SVN contains full history.
\ No newline at end of file
diff --git a/contrib/gdata-server/lib/servlet-api.jar b/contrib/gdata-server/lib/servlet-api.jar
deleted file mode 100644
index 9e7f1e85a59..00000000000
--- a/contrib/gdata-server/lib/servlet-api.jar
+++ /dev/null
@@ -1,2 +0,0 @@
-AnyObjectId[018d6effad3823d0ea59f1b58ab154fc2652f418] was removed in git history.
-Apache SVN contains full history.
\ No newline at end of file
diff --git a/contrib/gdata-server/lib/xercesImpl.jar b/contrib/gdata-server/lib/xercesImpl.jar
deleted file mode 100644
index 797b86a8d75..00000000000
--- a/contrib/gdata-server/lib/xercesImpl.jar
+++ /dev/null
@@ -1,2 +0,0 @@
-AnyObjectId[33990e8a1fdf24e15701e4cf8d9f091038394ecd] was removed in git history.
-Apache SVN contains full history.
\ No newline at end of file
diff --git a/contrib/gdata-server/src/core/build.xml b/contrib/gdata-server/src/core/build.xml
deleted file mode 100644
index d6054f602c6..00000000000
--- a/contrib/gdata-server/src/core/build.xml
+++ /dev/null
@@ -1,110 +0,0 @@
-
-
-
-
-
- Lucene gdata server core build file
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Use gdata - compile-core task
-
-
-
-
-
-
-
-
-
-
- Use gdata - compile-test task
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Distributing GData War
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/data/GDataAccount.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/data/GDataAccount.java
deleted file mode 100644
index 4674fd86238..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/data/GDataAccount.java
+++ /dev/null
@@ -1,340 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.data;
-
-import java.net.URL;
-import java.util.HashSet;
-import java.util.Set;
-
-import com.google.gdata.data.Person;
-
-/**
- * The GData-Server system provides acccount to be associated with registered
- * feed. Every feed has an owner account. The account holder is automaticaly in
- * role to modify his feeds. One account can own n feeds having m
- * entries.
- *
- * Additionally an account can be in role to modify other feeds, create accounts
- * or feeds. See {@link AccountRole} for detailed infomation about roles. One
- * account can also have more than one role. All roles in {@link AccountRole}
- * can be combined
- *
- *
- * For each account values for author name, author email and author link can be
- * set at creation time or during an update. These values will be used as the
- * corresponding values for the feed
- * {@link org.apache.lucene.gdata.data.ServerBaseFeed#addAuthor(Person)} if no
- * value for the feed has be specified.
- *
- *
- * @author Simon Willnauer
- *
- */
-public class GDataAccount {
- private String name;
-
- private String authorname;
-
- private String authorMail;
-
- private URL authorLink;
-
- private String password;
-
- private Set roles = new HashSet(4);
-
- /**
- * Creates a new GDataAccount. The default role {@link AccountRole#USER}
- * will be set.
- *
- */
- public GDataAccount() {
- this.roles.add(AccountRole.USER);
-
- }
-
- /**
- * @return - the password
- */
- public String getPassword() {
- return this.password;
- }
-
- /**
- * @param password -
- * the account Password
- */
- public void setPassword(String password) {
- this.password = password;
- }
-
- /**
- * @return - the account name
- */
- public String getName() {
- return this.name;
- }
-
- /**
- * @param name
- * The name to set.
- */
- public void setName(String name) {
- this.name = name;
- }
-
- /**
- * @return - the http link specified for the author
- */
- public URL getAuthorLink() {
- return this.authorLink;
- }
-
- /**
- * @param authorLink -
- * the http link specified for the author
- */
- public void setAuthorLink(URL authorLink) {
- this.authorLink = authorLink;
- }
-
- /**
- * @return - the authors mail address
- */
- public String getAuthorMail() {
- return this.authorMail;
- }
-
- /**
- * @param authorMail -
- * the authors mail address
- */
- public void setAuthorMail(String authorMail) {
- this.authorMail = authorMail;
- }
-
- /**
- * @return - the name specified as being the author name
- */
- public String getAuthorname() {
- return this.authorname;
- }
-
- /**
- * @param authorname -
- * the name specified as being the author name
- */
- public void setAuthorname(String authorname) {
- this.authorname = authorname;
- }
-
- /**
- * Adds the given role to the role list
- *
- * @param role -
- * the role to add to the role list
- */
- public void setRole(AccountRole role) {
- if (role == null)
- return;
- this.roles.add(role);
- }
-
- /**
- * @return - the set containing all roles
- */
- public Set getRoles() {
- return this.roles;
- }
-
- /**
- * @param role -
- * the role to check
- * @return true if the role list contains the given role
- */
- public boolean isUserInRole(AccountRole role) {
- if (role == null)
- return false;
- return this.roles.contains(role);
- }
-
- /**
- * @see GDataAccount#setRolesAsInt(int)
- * @return - the integer representation for the user roles
- */
- public int getRolesAsInt() {
- // 1 as the Userrole is always set
- int bits = 1;
- for (AccountRole role : this.roles) {
- if (role == AccountRole.ENTRYAMINISTRATOR)
- bits ^= 2;
- else if (role == AccountRole.FEEDAMINISTRATOR)
- bits ^= 4;
- else if (role == AccountRole.USERADMINISTRATOR)
- bits ^= 8;
-
- }
- return bits;
-
- }
-
- /**
- * Sets the roles from a int representation.
- *
- *
The fist bit set indicates a {@link AccountRole#USER} - int value 1
- *
The second bit set indicates a {@link AccountRole#ENTRYAMINISTRATOR} -
- * int value 2
- *
The third bit set indicates a {@link AccountRole#FEEDAMINISTRATOR} -
- * int value 4
- *
The forth bit set indicates a {@link AccountRole#USERADMINISTRATOR} -
- * int value 8
- *
- * This method will only set roles, will not remove roles! A combination of
- * roles is also possible e.g. the int value 6 combines
- * {@link AccountRole#ENTRYAMINISTRATOR} and
- * {@link AccountRole#FEEDAMINISTRATOR}.
- *
- * @param i -
- * the integer used to set the roles
- */
- public void setRolesAsInt(int i) {
-
- if ((i & 2) > 0)
- this.roles.add(AccountRole.ENTRYAMINISTRATOR);
- if ((i & 4) > 0)
- this.roles.add(AccountRole.FEEDAMINISTRATOR);
- if ((i & 8) > 0)
- this.roles.add(AccountRole.USERADMINISTRATOR);
-
- }
-
- /**
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals(Object o) {
- if(this.name == null)
- return super.equals(o);
- if(o == null)
- return false;
- if (this == o)
- return true;
- if (!(o instanceof GDataAccount))
- return false;
- GDataAccount toCompare = (GDataAccount) o;
- if (this.name.equals(toCompare.name))
- return true;
- return false;
-
- }
-
- /**
- * @see java.lang.Object#hashCode()
- */
- public int hashCode() {
- if(this.name == null)
- return super.hashCode();
- int ret = 37;
- ret = 9 * ret + this.name.hashCode();
- return ret;
- }
-
- /**
- * Checks the requiered values for creating an account are set. Required
- * values are name and password the minimum length of
- * these values is 6.
- *
- * @return true if an only if password and name are not null and the length is > 5
- */
- public boolean requiredValuesSet() {
- return (this.name != null && this.password != null
- && this.name.length() > 5 && this.password.length() > 5);
- }
-
- /**
- * @see java.lang.Object#toString()
- */
- public String toString(){
- StringBuilder builder = new StringBuilder("GdataAccount: ");
- builder.append("name: ").append(this.name);
- builder.append(" password: ").append((this.password!= null?" length: "+this.password.length():null));
- builder.append(" author: ").append(this.authorname);
- builder.append(" author email: ").append(this.authorMail);
- builder.append(" author link: ").append(this.authorLink!=null?"":this.authorLink);
- return builder.toString();
- }
-
- /**
- * checks whether the given integer matches the account role.
- * @param intRole - integer representation of a role
- * @param role - the account role to match
- * @return true if and only if the given roles match, otherwise false
- */
- public static boolean isInRole(int intRole, AccountRole role){
- if(role == AccountRole.USER)
- return (intRole&1)>0;
- if (role == AccountRole.ENTRYAMINISTRATOR)
- return (intRole&2) >0 ;
- else if (role == AccountRole.FEEDAMINISTRATOR)
- return (intRole&4) >0 ;
- else if (role == AccountRole.USERADMINISTRATOR)
- return (intRole&8) >0 ;
- return false;
- }
-
- /**
- * @return - a new Administrator account
- */
- public static final GDataAccount createAdminAccount(){
- GDataAccount retVal = new GDataAccount();
- retVal.setName("administrator");
- retVal.setPassword("password");
- retVal.setRole(AccountRole.USERADMINISTRATOR);
- retVal.setRole(AccountRole.FEEDAMINISTRATOR);
- retVal.setRole(AccountRole.ENTRYAMINISTRATOR);
- return retVal;
- }
-
-
-
- /**
- * This enum respesents all account roles an account can have.
- *
- * @author Simon Willnauer
- *
- */
- public enum AccountRole {
-
- /**
- * Can create / alter user
- */
- USERADMINISTRATOR,
-
- /**
- * Can create / alter feeds
- */
- FEEDAMINISTRATOR,
- /**
- * Can create / alter entries
- */
- ENTRYAMINISTRATOR,
- /**
- * can create / alter his own feed entries
- */
- USER
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/data/ServerBaseEntry.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/data/ServerBaseEntry.java
deleted file mode 100644
index 1f983c270b8..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/data/ServerBaseEntry.java
+++ /dev/null
@@ -1,642 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.data;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Reader;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.lucene.gdata.server.registry.ProvidedService;
-
-import com.google.gdata.client.Service;
-import com.google.gdata.data.BaseEntry;
-import com.google.gdata.data.Content;
-import com.google.gdata.data.DateTime;
-import com.google.gdata.data.Entry;
-import com.google.gdata.data.Extension;
-import com.google.gdata.data.ExtensionProfile;
-import com.google.gdata.data.Link;
-import com.google.gdata.data.Source;
-import com.google.gdata.data.TextConstruct;
-import com.google.gdata.util.ParseException;
-import com.google.gdata.util.ServiceException;
-import com.google.gdata.util.XmlBlob;
-import com.google.gdata.util.common.xml.XmlWriter;
-
-/**
- * The GData-Server uses the GDATA-Client API for an interal representation of
- * entries. These entities have dynamic elements like Links being generated
- * using the requested URL. Some components of the server also need
- * additional infomation like the service type
- * {@link org.apache.lucene.gdata.server.registry.ProvidedService} of the entry
- * and the feedid a entry belongs to. All these information are
- * encapsulated in the ServerBaseEntry decorating a concrete sub class of BaseEntry. The actual
- * {@link com.google.gdata.data.BaseEntry} will be passed to the ServerBaseEntry
- * at creation time via the constructor. To use the ServerBaseFeed for generation a provided format like
- * RSS/ATOM the corresponding {@link com.google.gdata.data.ExtensionProfile} has
- * to be provided to the generation method.
- *
For a general overview of the generic BaseFeed class see the gdata-client API documentation
- *
- * @see com.google.gdata.data.ExtensionProfile
- * @see com.google.gdata.data.BaseFeed
- *
- * @author Simon Willnauer
- *
- */
-public class ServerBaseEntry {
- private String feedId;
-
- private String serviceType;
-
- private ProvidedService serviceConfig;
- private BaseEntry entry;
- private static final int DEFAULTVERSION = 1;
- private int version;
-
-
-
- /**
- * @return - the provided service for the source entry
- */
- public ProvidedService getServiceConfig() {
- return this.serviceConfig;
- }
-
- /**
- * @param serviceConfig - the provided service for the source entry
- */
- public void setServiceConfig(ProvidedService serviceConfig) {
- this.serviceConfig = serviceConfig;
- if (serviceConfig != null)
- this.serviceType = serviceConfig.getName();
- }
-
- /**
- * @return - the name of the service related of the feed containing this entry
- */
- public String getServiceType() {
- return this.serviceType;
- }
-
- /**
- * Constructs a new ServerBaseEntry.
- * To provide a concrete entry to decorate after object creation use {@link ServerBaseEntry#setEntry(BaseEntry)}
- *
- */
- @SuppressWarnings("unchecked")
- public ServerBaseEntry() {
- this(new Entry());
-
- }
-
- /**
- * @param arg0 - the source entry
- */
- @SuppressWarnings("unchecked")
- public ServerBaseEntry(BaseEntry arg0) {
- this.entry = arg0;
- this.setVersion(DEFAULTVERSION);
- }
-
-
- /**
- * @param link - a link added to this entry
- */
- @SuppressWarnings("unchecked")
- public void addLink(final Link link) {
- this.entry.getLinks().add(link);
- }
-
- /**
- * @return - the id of the owning feed
- */
- public String getFeedId() {
- return this.feedId;
- }
-
- /**
- * @param feedId - the id of the owning feed
- */
- public void setFeedId(String feedId) {
- this.feedId = feedId;
- }
- /**
- * @return - the decorated entry
- */
- public BaseEntry getEntry(){
- return this.entry;
- }
- /**
- * @param entry - the entry to decorate
- */
- public void setEntry(BaseEntry entry){
- this.entry = entry;
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#addHtmlLink(java.lang.String, java.lang.String, java.lang.String)
- */
- public void addHtmlLink(String arg0, String arg1, String arg2) {
-
- this.entry.addHtmlLink(arg0, arg1, arg2);
- }
-
-
-
- /**
- * @see com.google.gdata.data.BaseEntry#generateAtom(com.google.gdata.util.common.xml.XmlWriter, com.google.gdata.data.ExtensionProfile)
- */
-
- public void generateAtom(XmlWriter arg0, ExtensionProfile arg1) throws IOException {
-
- this.entry.generateAtom(arg0, arg1);
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#generateRss(com.google.gdata.util.common.xml.XmlWriter, com.google.gdata.data.ExtensionProfile)
- */
-
- public void generateRss(XmlWriter arg0, ExtensionProfile arg1) throws IOException {
-
- this.entry.generateRss(arg0, arg1);
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#getAuthors()
- */
-
- public List getAuthors() {
-
- return this.entry.getAuthors();
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#getCanEdit()
- */
-
- public boolean getCanEdit() {
-
- return this.entry.getCanEdit();
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#getCategories()
- */
-
- public Set getCategories() {
-
- return this.entry.getCategories();
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#getContent()
- */
-
- public Content getContent() {
-
- return this.entry.getContent();
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#getContributors()
- */
-
- public List getContributors() {
-
- return this.entry.getContributors();
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#getEditLink()
- */
-
- public Link getEditLink() {
-
- return this.entry.getEditLink();
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#getHtmlLink()
- */
-
- public Link getHtmlLink() {
-
- return this.entry.getHtmlLink();
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#getId()
- */
-
- public String getId() {
-
- return this.entry.getId();
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#getLink(java.lang.String, java.lang.String)
- */
-
- public Link getLink(String arg0, String arg1) {
-
- return this.entry.getLink(arg0, arg1);
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#getLinks()
- */
-
- public List getLinks() {
-
- return this.entry.getLinks();
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#getPublished()
- */
-
- public DateTime getPublished() {
-
- return this.entry.getPublished();
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#getRights()
- */
-
- public TextConstruct getRights() {
-
- return this.entry.getRights();
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#getSelf()
- */
-
- public BaseEntry getSelf() throws IOException, ServiceException {
-
- return this.entry.getSelf();
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#getSelfLink()
- */
-
- public Link getSelfLink() {
-
- return this.entry.getSelfLink();
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#getService()
- */
-
- public Service getService() {
-
- return this.entry.getService();
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#getSource()
- */
-
- public Source getSource() {
-
- return this.entry.getSource();
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#getSummary()
- */
-
- public TextConstruct getSummary() {
-
- return this.entry.getSummary();
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#getTitle()
- */
-
- public TextConstruct getTitle() {
-
- return this.entry.getTitle();
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#getUpdated()
- */
-
- public DateTime getUpdated() {
-
- return this.entry.getUpdated();
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#getVersionId()
- */
-
- public String getVersionId() {
-
- return this.entry.getVersionId();
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#isDraft()
- */
-
- public boolean isDraft() {
-
- return this.entry.isDraft();
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#parseAtom(com.google.gdata.data.ExtensionProfile, java.io.InputStream)
- */
-
- public void parseAtom(ExtensionProfile arg0, InputStream arg1) throws IOException, ParseException {
-
- this.entry.parseAtom(arg0, arg1);
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#parseAtom(com.google.gdata.data.ExtensionProfile, java.io.Reader)
- */
-
- public void parseAtom(ExtensionProfile arg0, Reader arg1) throws IOException, ParseException {
-
- this.entry.parseAtom(arg0, arg1);
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#setCanEdit(boolean)
- */
-
- public void setCanEdit(boolean arg0) {
-
- this.entry.setCanEdit(arg0);
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#setContent(com.google.gdata.data.Content)
- */
-
- public void setContent(Content arg0) {
-
- this.entry.setContent(arg0);
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#setContent(com.google.gdata.data.TextConstruct)
- */
-
- public void setContent(TextConstruct arg0) {
-
- this.entry.setContent(arg0);
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#setDraft(boolean)
- */
-
- public void setDraft(boolean arg0) {
-
- this.entry.setDraft(arg0);
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#setId(java.lang.String)
- */
-
- public void setId(String arg0) {
-
- this.entry.setId(arg0);
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#setPublished(com.google.gdata.data.DateTime)
- */
-
- public void setPublished(DateTime arg0) {
-
- this.entry.setPublished(arg0);
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#setRights(com.google.gdata.data.TextConstruct)
- */
-
- public void setRights(TextConstruct arg0) {
-
- this.entry.setRights(arg0);
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#setService(com.google.gdata.client.Service)
- */
-
- public void setService(Service arg0) {
-
- this.entry.setService(arg0);
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#setSource(com.google.gdata.data.Source)
- */
-
- public void setSource(Source arg0) {
-
- this.entry.setSource(arg0);
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#setSummary(com.google.gdata.data.TextConstruct)
- */
-
- public void setSummary(TextConstruct arg0) {
-
- this.entry.setSummary(arg0);
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#setTitle(com.google.gdata.data.TextConstruct)
- */
-
- public void setTitle(TextConstruct arg0) {
-
- this.entry.setTitle(arg0);
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#setUpdated(com.google.gdata.data.DateTime)
- */
-
- public void setUpdated(DateTime arg0) {
-
- this.entry.setUpdated(arg0);
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#setVersionId(java.lang.String)
- */
-
- public void setVersionId(String arg0) {
-
- this.entry.setVersionId(arg0);
- }
-
-
- /**
- * @see com.google.gdata.data.ExtensionPoint#addExtension(com.google.gdata.data.Extension)
- */
-
- public void addExtension(Extension arg0) {
-
- this.entry.addExtension(arg0);
- }
-
- /**
- * @see com.google.gdata.data.ExtensionPoint#addRepeatingExtension(com.google.gdata.data.Extension)
- */
-
- public void addRepeatingExtension(Extension arg0) {
-
- this.entry.addRepeatingExtension(arg0);
- }
-
-
-
- /**
- * @see com.google.gdata.data.ExtensionPoint#generateCumulativeXmlBlob(com.google.gdata.data.ExtensionProfile)
- */
-
- public XmlBlob generateCumulativeXmlBlob(ExtensionProfile arg0) throws IOException {
-
- return this.entry.generateCumulativeXmlBlob(arg0);
- }
-
-
-
- /**
- * @see com.google.gdata.data.ExtensionPoint#getRepeatingExtension(java.lang.Class)
- */
-
- public List getRepeatingExtension(Class arg0) {
-
- return this.entry.getRepeatingExtension(arg0);
- }
-
- /**
- * @see com.google.gdata.data.ExtensionPoint#getXmlBlob()
- */
-
- public XmlBlob getXmlBlob() {
-
- return this.entry.getXmlBlob();
- }
-
-
-
- /**
- * @see com.google.gdata.data.ExtensionPoint#parseCumulativeXmlBlob(com.google.gdata.util.XmlBlob, com.google.gdata.data.ExtensionProfile, java.lang.Class)
- */
-
- public void parseCumulativeXmlBlob(XmlBlob arg0, ExtensionProfile arg1, Class arg2) throws IOException, ParseException {
-
- this.entry.parseCumulativeXmlBlob(arg0, arg1, arg2);
- }
-
- /**
- * @see com.google.gdata.data.ExtensionPoint#removeExtension(java.lang.Class)
- */
-
- public void removeExtension(Class arg0) {
-
- this.entry.removeExtension(arg0);
- }
-
- /**
- * @see com.google.gdata.data.ExtensionPoint#removeExtension(com.google.gdata.data.Extension)
- */
-
- public void removeExtension(Extension arg0) {
-
- this.entry.removeExtension(arg0);
- }
-
- /**
- * @see com.google.gdata.data.ExtensionPoint#removeRepeatingExtension(com.google.gdata.data.Extension)
- */
-
- public void removeRepeatingExtension(Extension arg0) {
-
- this.entry.removeRepeatingExtension(arg0);
- }
-
- /**
- * @see com.google.gdata.data.ExtensionPoint#setExtension(com.google.gdata.data.Extension)
- */
-
- public void setExtension(Extension arg0) {
-
- this.entry.setExtension(arg0);
- }
-
- /**
- * @see com.google.gdata.data.ExtensionPoint#setXmlBlob(com.google.gdata.util.XmlBlob)
- */
-
- public void setXmlBlob(XmlBlob arg0) {
-
- this.entry.setXmlBlob(arg0);
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#declareExtensions(com.google.gdata.data.ExtensionProfile)
- */
-
- public void declareExtensions(ExtensionProfile arg0) {
- this.entry.declareExtensions(arg0);
- }
-
- /**
- * @return Returns the version.
- */
- public int getVersion() {
- return this.version;
- }
-
- /**
- * @param version The version to set.
- */
- public void setVersion(int version) {
- if(version < this.version)
- throw new IllegalArgumentException("Version must be greater than the current version -- current version: "+this.version);
- this.version = version;
- setVersionId(""+this.version);
- }
-
-
-
-
-
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/data/ServerBaseFeed.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/data/ServerBaseFeed.java
deleted file mode 100644
index 5ae81a22413..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/data/ServerBaseFeed.java
+++ /dev/null
@@ -1,684 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.data;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Reader;
-import java.util.Collection;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.lucene.gdata.server.registry.ProvidedService;
-
-import com.google.gdata.client.Service;
-import com.google.gdata.data.BaseEntry;
-import com.google.gdata.data.BaseFeed;
-import com.google.gdata.data.Category;
-import com.google.gdata.data.DateTime;
-import com.google.gdata.data.Extension;
-import com.google.gdata.data.ExtensionProfile;
-import com.google.gdata.data.Feed;
-import com.google.gdata.data.Generator;
-import com.google.gdata.data.Link;
-import com.google.gdata.data.Person;
-import com.google.gdata.data.TextConstruct;
-import com.google.gdata.util.ParseException;
-import com.google.gdata.util.ServiceException;
-import com.google.gdata.util.XmlBlob;
-import com.google.gdata.util.common.xml.XmlWriter;
-
-/**
- * The GData-Server uses the GDATA-Client API for an interal representation of
- * entries. These entities have dynamic elements like Links being generated
- * using the requested URL. Some components of the server also need
- * additional infomation like the service type
- * {@link org.apache.lucene.gdata.server.registry.ProvidedService} of the feed.
- * All these information are
- * encapsulated in the ServerBaseFeed decoration a concrete subl class of BaseFeed. The type of the
- * {@link com.google.gdata.data.BaseEntry} contained it this feed will be passed to the ServerBaseFeed
- * at creation time via the constructor. To retrieve the original entry call
- * {@link ServerBaseFeed#getFeed()} returns a
- * {@link com.google.gdata.data.BaseFeed} instance which can be casted into the
- * actual type. To use the ServerBaseEntry for generation a provided format like
- * RSS/ATOM the corresponding {@link com.google.gdata.data.ExtensionProfile} has
- * to be provided to the generation method.
- *
- * @author Simon Willnauer
- *
- */
-public class ServerBaseFeed {
-
- private String serviceType;
-
- private ProvidedService serviceConfig;
-
- private GDataAccount account;
-
- private BaseFeed feed;
- /**
- * @return Returns the account.
- */
- public GDataAccount getAccount() {
- return this.account;
- }
-
- /**
- * @param account The account to set.
- */
- public void setAccount(GDataAccount account) {
- this.account = account;
- }
-
- /**
- * Creates a new ServerBaseFeed and decorates a basic instance of {@link Feed}
- */
- @SuppressWarnings("unchecked")
- public ServerBaseFeed() {
- this.feed = new Feed();
-
- }
- /**
- * @param feed - the feed to decorate
- *
- */
- @SuppressWarnings("unchecked")
- public ServerBaseFeed(BaseFeed feed) {
- this.feed = feed;
-
- }
-
- /**
- * @return Returns the feed.
- */
- public BaseFeed getFeed() {
- return this.feed;
- }
-
- /**
- * @param feed The feed to set.
- */
- public void setFeed(BaseFeed feed) {
- this.feed = feed;
- }
-
- /**
- * @see com.google.gdata.data.BaseFeed#declareExtensions(com.google.gdata.data.ExtensionProfile)
- */
- public void declareExtensions(ExtensionProfile extProfile) {
-
- this.feed.declareExtensions(extProfile);
- }
-
- /**
- * @param link -
- * a link added to the link list of the feed
- */
- @SuppressWarnings("unchecked")
- public void addLink(final Link link) {
- this.feed.getLinks().add(link);
- }
-
- /**
- * @param collection -
- * a collection of Link instance to be added to
- * the feeds link list
- */
- public void addLinks(final Collection collection) {
- this.feed.getLinks().addAll(collection);
- }
-
- /**
- * @return - the name of the service related of the feed represented by this
- * ServerBaseFeed
- */
- public String getServiceType() {
- return this.serviceType;
- }
-
- /**
- * @param serviceType -
- * the name of the service related of the feed represented by
- * this ServerBaseFeed
- */
- public void setServiceType(String serviceType) {
- this.serviceType = serviceType;
- }
-
- /**
- * @return - the provided service
- */
- public ProvidedService getServiceConfig() {
- return this.serviceConfig;
- }
-
- /**
- * @param serviceConfig - -
- * the provided service
- */
- public void setServiceConfig(ProvidedService serviceConfig) {
- this.serviceConfig = serviceConfig;
- if (serviceConfig != null)
- this.serviceType = this.serviceConfig.getName();
-
- }
-
- /**
- * @param person -
- * adds an author to the feed
- */
- public void addAuthor(final Person person) {
- this.feed.getAuthors().add(person);
- }
-
- /**
- * @see com.google.gdata.data.BaseFeed#createEntry()
- */
-
- public BaseEntry createEntry() {
-
- return this.feed.createEntry();
- }
-
- /**
- * @see com.google.gdata.data.BaseFeed#generateAtom(com.google.gdata.util.common.xml.XmlWriter, com.google.gdata.data.ExtensionProfile)
- */
-
- public void generateAtom(XmlWriter arg0, ExtensionProfile arg1) throws IOException {
-
- this.feed.generateAtom(arg0, arg1);
- }
-
- /**
- * @see com.google.gdata.data.BaseFeed#generateAtomColl(com.google.gdata.util.common.xml.XmlWriter)
- */
-
- public void generateAtomColl(XmlWriter arg0) throws IOException {
-
- this.feed.generateAtomColl(arg0);
- }
-
- /**
- * @see com.google.gdata.data.BaseFeed#generateRss(com.google.gdata.util.common.xml.XmlWriter, com.google.gdata.data.ExtensionProfile)
- */
-
- public void generateRss(XmlWriter arg0, ExtensionProfile arg1) throws IOException {
-
- this.feed.generateRss(arg0, arg1);
- }
-
- /**
- * @see com.google.gdata.data.BaseFeed#getCanPost()
- */
-
- public boolean getCanPost() {
-
- return this.feed.getCanPost();
- }
-
- /**
- * @see com.google.gdata.data.BaseFeed#getEntries()
- */
-
- public List getEntries() {
-
- return this.feed.getEntries();
- }
-
- /**
- * @see com.google.gdata.data.BaseFeed#getEntryPostLink()
- */
-
- public Link getEntryPostLink() {
-
- return this.feed.getEntryPostLink();
- }
-
- /**
- * @see com.google.gdata.data.BaseFeed#getItemsPerPage()
- */
-
- public int getItemsPerPage() {
-
- return this.feed.getItemsPerPage();
- }
-
- /**
- * @see com.google.gdata.data.BaseFeed#getSelf()
- */
-
- public BaseFeed getSelf() throws IOException, ServiceException {
-
- return this.feed.getSelf();
- }
-
- /**
- * @see com.google.gdata.data.BaseFeed#getSelfLink()
- */
-
- public Link getSelfLink() {
-
- return this.feed.getSelfLink();
- }
-
- /**
- * @see com.google.gdata.data.BaseFeed#getService()
- */
-
- public Service getService() {
-
- return this.feed.getService();
- }
-
- /**
- * @see com.google.gdata.data.BaseFeed#getStartIndex()
- */
-
- public int getStartIndex() {
-
- return this.feed.getStartIndex();
- }
-
- /**
- * @see com.google.gdata.data.BaseFeed#getTotalResults()
- */
-
- public int getTotalResults() {
-
- return this.feed.getTotalResults();
- }
-
- /**
- * @see com.google.gdata.data.BaseFeed#insert(E)
- */
-
- public BaseEntry insert(BaseEntry arg0) throws ServiceException, IOException {
-
- return this.feed.insert(arg0);
- }
-
- /**
- * @see com.google.gdata.data.BaseFeed#parseAtom(com.google.gdata.data.ExtensionProfile, java.io.InputStream)
- */
-
- public void parseAtom(ExtensionProfile arg0, InputStream arg1) throws IOException, ParseException {
-
- this.feed.parseAtom(arg0, arg1);
- }
-
- /**
- * @see com.google.gdata.data.BaseFeed#parseAtom(com.google.gdata.data.ExtensionProfile, java.io.Reader)
- */
-
- public void parseAtom(ExtensionProfile arg0, Reader arg1) throws IOException, ParseException {
-
- this.feed.parseAtom(arg0, arg1);
- }
-
- /**
- * @see com.google.gdata.data.BaseFeed#setCanPost(boolean)
- */
-
- public void setCanPost(boolean arg0) {
-
- this.feed.setCanPost(arg0);
- }
-
- /**
- * @see com.google.gdata.data.BaseFeed#setItemsPerPage(int)
- */
-
- public void setItemsPerPage(int arg0) {
-
- this.feed.setItemsPerPage(arg0);
- }
-
- /**
- * @see com.google.gdata.data.BaseFeed#setService(com.google.gdata.client.Service)
- */
-
- public void setService(Service arg0) {
-
- this.feed.setService(arg0);
- }
-
- /**
- * @see com.google.gdata.data.BaseFeed#setStartIndex(int)
- */
-
- public void setStartIndex(int arg0) {
-
- this.feed.setStartIndex(arg0);
- }
-
- /**
- * @see com.google.gdata.data.BaseFeed#setTotalResults(int)
- */
-
- public void setTotalResults(int arg0) {
-
- this.feed.setTotalResults(arg0);
- }
-
- /**
- * @see com.google.gdata.data.Source#addHtmlLink(java.lang.String, java.lang.String, java.lang.String)
- */
-
- public void addHtmlLink(String arg0, String arg1, String arg2) {
-
- this.feed.addHtmlLink(arg0, arg1, arg2);
- }
-
- /**
- * @see com.google.gdata.data.Source#getAuthors()
- */
-
- public List getAuthors() {
-
- return this.feed.getAuthors();
- }
-
- /**
- * @see com.google.gdata.data.Source#getCategories()
- */
-
- public Set getCategories() {
-
- return this.feed.getCategories();
- }
-
- /**
- * @see com.google.gdata.data.Source#getContributors()
- */
-
- public List getContributors() {
-
- return this.feed.getContributors();
- }
-
- /**
- * @see com.google.gdata.data.Source#getGenerator()
- */
-
- public Generator getGenerator() {
-
- return this.feed.getGenerator();
- }
-
- /**
- * @see com.google.gdata.data.Source#getHtmlLink()
- */
-
- public Link getHtmlLink() {
-
- return this.feed.getHtmlLink();
- }
-
- /**
- * @see com.google.gdata.data.Source#getIcon()
- */
-
- public String getIcon() {
-
- return this.feed.getIcon();
- }
-
- /**
- * @see com.google.gdata.data.Source#getId()
- */
-
- public String getId() {
-
- return this.feed.getId();
- }
-
- /**
- * @see com.google.gdata.data.Source#getLink(java.lang.String, java.lang.String)
- */
-
- public Link getLink(String arg0, String arg1) {
-
- return this.feed.getLink(arg0, arg1);
- }
-
- /**
- * @see com.google.gdata.data.Source#getLinks()
- */
-
- public List getLinks() {
-
- return this.feed.getLinks();
- }
-
- /**
- * @see com.google.gdata.data.Source#getLogo()
- */
-
- public String getLogo() {
-
- return this.feed.getLogo();
- }
-
- /**
- * @see com.google.gdata.data.Source#getRights()
- */
-
- public TextConstruct getRights() {
-
- return this.feed.getRights();
- }
-
- /**
- * @see com.google.gdata.data.Source#getSubtitle()
- */
-
- public TextConstruct getSubtitle() {
-
- return this.feed.getSubtitle();
- }
-
- /**
- * @see com.google.gdata.data.Source#getTitle()
- */
-
- public TextConstruct getTitle() {
-
- return this.feed.getTitle();
- }
-
- /**
- * @see com.google.gdata.data.Source#getUpdated()
- */
-
- public DateTime getUpdated() {
-
- return this.feed.getUpdated();
- }
-
- /**
- * @see com.google.gdata.data.Source#setGenerator(com.google.gdata.data.Generator)
- */
-
- public void setGenerator(Generator arg0) {
-
- this.feed.setGenerator(arg0);
- }
-
- /**
- * @see com.google.gdata.data.Source#setIcon(java.lang.String)
- */
-
- public void setIcon(String arg0) {
-
- this.feed.setIcon(arg0);
- }
-
- /**
- * @see com.google.gdata.data.Source#setId(java.lang.String)
- */
-
- public void setId(String arg0) {
-
- this.feed.setId(arg0);
- }
-
- /**
- * @see com.google.gdata.data.Source#setLogo(java.lang.String)
- */
-
- public void setLogo(String arg0) {
-
- this.feed.setLogo(arg0);
- }
-
- /**
- * @see com.google.gdata.data.Source#setRights(com.google.gdata.data.TextConstruct)
- */
-
- public void setRights(TextConstruct arg0) {
-
- this.feed.setRights(arg0);
- }
-
- /**
- * @see com.google.gdata.data.Source#setSubtitle(com.google.gdata.data.TextConstruct)
- */
-
- public void setSubtitle(TextConstruct arg0) {
-
- this.feed.setSubtitle(arg0);
- }
-
- /**
- * @see com.google.gdata.data.Source#setTitle(com.google.gdata.data.TextConstruct)
- */
-
- public void setTitle(TextConstruct arg0) {
-
- this.feed.setTitle(arg0);
- }
-
- /**
- * @see com.google.gdata.data.Source#setUpdated(com.google.gdata.data.DateTime)
- */
-
- public void setUpdated(DateTime arg0) {
-
- this.feed.setUpdated(arg0);
- }
-
- /**
- * @see com.google.gdata.data.ExtensionPoint#addExtension(com.google.gdata.data.Extension)
- */
-
- public void addExtension(Extension arg0) {
-
- this.feed.addExtension(arg0);
- }
-
- /**
- * @see com.google.gdata.data.ExtensionPoint#addRepeatingExtension(com.google.gdata.data.Extension)
- */
-
- public void addRepeatingExtension(Extension arg0) {
-
- this.feed.addRepeatingExtension(arg0);
- }
-
- /**
- * @see com.google.gdata.data.ExtensionPoint#getExtension(java.lang.Class)
- */
-
- public T getExtension(Class arg0) {
-
- return this.feed.getExtension(arg0);
- }
-
- /**
- * @see com.google.gdata.data.ExtensionPoint#getRepeatingExtension(java.lang.Class)
- */
-
- public List getRepeatingExtension(Class arg0) {
-
- return this.feed.getRepeatingExtension(arg0);
- }
-
- /**
- * @see com.google.gdata.data.ExtensionPoint#getXmlBlob()
- */
-
- public XmlBlob getXmlBlob() {
-
- return this.feed.getXmlBlob();
- }
-
- /**
- * @see com.google.gdata.data.ExtensionPoint#parseCumulativeXmlBlob(com.google.gdata.util.XmlBlob, com.google.gdata.data.ExtensionProfile, java.lang.Class)
- */
-
- public void parseCumulativeXmlBlob(XmlBlob arg0, ExtensionProfile arg1, Class arg2) throws IOException, ParseException {
-
- this.feed.parseCumulativeXmlBlob(arg0, arg1, arg2);
- }
-
- /**
- * @see com.google.gdata.data.ExtensionPoint#removeExtension(java.lang.Class)
- */
-
- public void removeExtension(Class arg0) {
-
- this.feed.removeExtension(arg0);
- }
-
- /**
- * @see com.google.gdata.data.ExtensionPoint#removeExtension(com.google.gdata.data.Extension)
- */
-
- public void removeExtension(Extension arg0) {
-
- this.feed.removeExtension(arg0);
- }
-
- /**
- * @see com.google.gdata.data.ExtensionPoint#removeRepeatingExtension(com.google.gdata.data.Extension)
- */
-
- public void removeRepeatingExtension(Extension arg0) {
-
- this.feed.removeRepeatingExtension(arg0);
- }
-
- /**
- * @see com.google.gdata.data.ExtensionPoint#setExtension(com.google.gdata.data.Extension)
- */
-
- public void setExtension(Extension arg0) {
-
- this.feed.setExtension(arg0);
- }
-
- /**
- * @see com.google.gdata.data.ExtensionPoint#setXmlBlob(com.google.gdata.util.XmlBlob)
- */
-
- public void setXmlBlob(XmlBlob arg0) {
-
- this.feed.setXmlBlob(arg0);
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/data/package.html b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/data/package.html
deleted file mode 100644
index 10c3ef5ab7e..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/data/package.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-Contains classes for the internal representation of GData feeds and entries.
-
-
\ No newline at end of file
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/package.html b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/package.html
deleted file mode 100644
index 0ea30d29735..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/package.html
+++ /dev/null
@@ -1 +0,0 @@
-Top-level package.
\ No newline at end of file
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/GDataSearcher.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/GDataSearcher.java
deleted file mode 100755
index 39077bb8ef1..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/GDataSearcher.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search;
-
-import java.io.IOException;
-import java.util.List;
-
-import org.apache.lucene.search.Query;
-
-/**
- *
- * @param
- *
- */
-public interface GDataSearcher {
-
- /**
- * executes an Query and returns a list of defined return values of type T
- * @param query - the query to apply to the searcher
- * @param hitcount - the amount of hits returned by this search
- * @param offset - the hit count offset
- * @param feedId
- * @return List of T
- * @throws IOException - if the underlying lucene searcher throws an IO Exception
- */
- public List search(Query query,int hitcount, int offset, String feedId)throws IOException;
- /**
- * Destroys this Searcher
- */
- public abstract void close();
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/SearchComponent.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/SearchComponent.java
deleted file mode 100755
index 3805b918c06..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/SearchComponent.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.search;
-
-import org.apache.lucene.gdata.server.registry.ProvidedService;
-import org.apache.lucene.gdata.server.registry.ServerComponent;
-
-/**
- * TODO document this when Search comes into play
- *
- *
- *
- */
-public interface SearchComponent extends ServerComponent {
- /**
- * TODO document this when Search comes into play
- *
- * @param service
- *
- * @return a GDataSearcher
- */
- public abstract GDataSearcher getServiceSearcher(ProvidedService service);
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/StandardGdataSearcher.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/StandardGdataSearcher.java
deleted file mode 100755
index ed4d5ab2064..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/StandardGdataSearcher.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.search;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
-import org.apache.lucene.gdata.search.index.IndexDocument;
-import org.apache.lucene.gdata.utils.ReferenceCounter;
-import org.apache.lucene.index.Term;
-import org.apache.lucene.search.Hits;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.QueryFilter;
-import org.apache.lucene.search.TermQuery;
-
-/**
- * Standard implementation of
- * {@link org.apache.lucene.gdata.search.GDataSearcher}
- *
- *
- *
- */
-public class StandardGdataSearcher implements GDataSearcher {
- private final AtomicBoolean isClosed = new AtomicBoolean(false);
-
- private final ReferenceCounter searcher;
-
- private static final Map queryFilterCache = new HashMap();
-
- /** constructs a new GdataSearcher
- * @param searcher - the current lucene searcher instance
- */
- public StandardGdataSearcher(ReferenceCounter searcher) {
- if (searcher == null)
- throw new IllegalArgumentException("searcher must not be null");
-
- this.searcher = searcher;
-
- }
-
- /**
- * @see org.apache.lucene.gdata.search.GDataSearcher#search(org.apache.lucene.search.Query,
- * int, int, java.lang.String)
- */
- public List search(Query query, int hitcount, int offset,
- String feedId) throws IOException {
- if (hitcount < 0 || offset < 0)
- throw new IllegalArgumentException(
- "hit count and offset must not be less than 0");
- if (this.isClosed.get())
- throw new IllegalStateException("Searcher is closed");
- if (query == null)
- throw new RuntimeException("query is null can not apply search");
- if (feedId == null)
- throw new IllegalArgumentException("feed id must not be null");
- QueryFilter filter = null;
- synchronized (queryFilterCache) {
- filter = queryFilterCache.get(feedId);
-
- if (filter == null)
- filter = new QueryFilter(new TermQuery(new Term(
- IndexDocument.FIELD_FEED_ID, feedId)));
- queryFilterCache.put(feedId, filter);
- }
- IndexSearcher indexSearcher = this.searcher.get();
- Hits hits = indexSearcher.search(query, filter);
-
- return collectHits(hits, hitcount, offset);
-
- }
-
- protected List collectHits(Hits hits, int hitcount, int offset)
- throws IOException {
- int hitLength = hits.length();
- if (hitLength < offset || hitLength == 0)
- return new ArrayList(0);
- if (offset > 0)
- --offset;
- /*
- * include the offset
- */
- int remainingHits = hitLength - offset;
- int returnSize = remainingHits > hitcount ? hitcount : remainingHits;
- List retVal = new ArrayList(returnSize);
- for (int i = 0; i < returnSize; i++) {
- Document doc = hits.doc(offset++);
- /*
- * the entry id is sufficient to retrieve the entry from the
- * storage. the result will be ordered by score (default)
- */
- Field field = doc.getField(IndexDocument.FIELD_ENTRY_ID);
- retVal.add(i, field.stringValue());
- }
- return retVal;
-
- }
-
- /**
- * @see org.apache.lucene.gdata.search.GDataSearcher#close()
- */
- public void close() {
- this.isClosed.set(true);
- this.searcher.decrementRef();
-
- }
-
- static void flushFilterCache() {
- synchronized (queryFilterCache) {
- queryFilterCache.clear();
- }
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/ContentStrategy.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/ContentStrategy.java
deleted file mode 100755
index 27d49041508..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/ContentStrategy.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.analysis;
-
-import org.apache.lucene.document.Field;
-import org.apache.lucene.document.Field.Index;
-import org.apache.lucene.document.Field.Store;
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.search.config.IndexSchemaField;
-import org.apache.lucene.gdata.search.config.IndexSchemaField.ContentType;
-import org.apache.lucene.gdata.search.index.GdataIndexerException;
-import org.apache.lucene.gdata.utils.ReflectionUtils;
-import org.w3c.dom.Node;
-
-/**
- * Creating Indexable document requires processing of incoming entities as
- * GData Entries. Entries in the GData protocol might have very different
- * structures and content. They all have on thing in common as they are atom xml
- * format. To retrieve the configured elements of the atom format and process the
- * actual content might differ from element to element.
- *
- * Each predefined ContentStrategy can be used to retrieve certain content from
- * the defined element. Which element to process is defined using a XPath
- * expression in the gdata-config.xml file.
- *
- *
- * ContentStrategy implementation should not be accessed directly. To
- * get a ContentStrategy for a specific
- * {@link org.apache.lucene.gdata.search.config.IndexSchemaField.ContentType}
- * use the {@link ContentStrategy#getFieldStrategy} factory method. This method
- * expects a IndexSchemaField instance with a set ContentType. The
- * return value is a new ContentStrategy instance for the defined
- * ContentType.
- *
- *
- * @see org.apache.lucene.gdata.search.config.IndexSchemaField.ContentType
- * @see org.apache.lucene.gdata.search.index.IndexDocumentBuilder
- *
- *
- */
-public abstract class ContentStrategy {
- protected final Store store;
-
- protected final Index index;
-
- protected final IndexSchemaField config;
-
- protected String content;
-
- protected String fieldName;
-
- protected ContentStrategy(IndexSchemaField fieldConfiguration) {
- this(null, null, fieldConfiguration);
- }
-
- protected ContentStrategy(Index index, Store store,
- IndexSchemaField fieldConfig) {
- if(fieldConfig == null)
- throw new IllegalArgumentException("IndexSchemaField must not be null");
- this.config = fieldConfig;
- this.fieldName = fieldConfig.getName();
- if (index != null) {
- this.index = index;
- } else {
- this.index = fieldConfig.getIndex() == null ? IndexSchemaField.DEFAULT_INDEX_STRATEGY
- : fieldConfig.getIndex();
- }
- if (store != null) {
- this.store = store;
- } else {
- this.store = fieldConfig.getStore() == null ? IndexSchemaField.DEFAULT_STORE_STRATEGY
- : fieldConfig.getStore();
- }
-
- }
-
- /**
- * @param indexable
- * @throws NotIndexableException
- */
- public abstract void processIndexable(
- Indexable extends Node, ? extends ServerBaseEntry> indexable)
- throws NotIndexableException;
-
- /**
- * This method creates a lucene field from the retrieved content of the
- * entity. Values for Field.Index, Field.Store, the field name and the boost
- * factor are configured in the IndexSchemaField passed by the
- * constructor e.g the factory method. This method might be overwritten by
- * subclasses.
- *
- * @return the Lucene {@link Field}
- */
- public Field[] createLuceneField() {
- /*
- * should I test the content for being empty?!
- * does that make any difference if empty fields are indexed?!
- */
- if(this.fieldName==null|| this.content == null)
- throw new GdataIndexerException("Required field not set fieldName: "+this.fieldName+" content: "+this.content);
- if(this.content.length()==0){
- return new Field[0];
- }
- Field retValue = new Field(this.fieldName, this.content, this.store,
- this.index);
- float boost = this.config.getBoost();
- if (boost != 1.0f)
- retValue.setBoost(boost);
- return new Field[]{retValue};
-
- }
-
- /**
- * This factory method creates the ContentStrategy corresponding
- * to the set ContentType value in the IndexSchemaField
- * passed to the method as the single parameter.
- *
- * The ContentType must not be null
- *
- *
- * @param fieldConfig -
- * the field config to use to identify the corresponding
- * ContentStrategy
- * @return - a new ContentStrategy instance
- */
- public static ContentStrategy getFieldStrategy(IndexSchemaField fieldConfig) {
- if (fieldConfig == null)
- throw new IllegalArgumentException(
- "field configuration must not be null");
- ContentType type = fieldConfig.getContentType();
- if (type == null)
- throw new IllegalArgumentException(
- "ContentType in IndexSchemaField must not be null");
- fieldConfig.getAnalyzerClass();
-
- switch (type) {
- case CATEGORY:
- return new GdataCategoryStrategy(fieldConfig);
- case HTML:
- return new HTMLStrategy(fieldConfig);
- case XHTML:
- return new XHtmlStrategy(fieldConfig);
- case GDATADATE:
- return new GdataDateStrategy(fieldConfig);
- case TEXT:
- return new PlainTextStrategy(fieldConfig);
- case KEYWORD:
- return new KeywordStrategy(fieldConfig);
- case CUSTOM:
- /*
- * check if this class can be created with default constructor is checked
- * in IndexSchemaField#setFieldClass and throws RuntimeEx if not. So
- * server can not start up.
- */
- return ReflectionUtils.getDefaultInstance(fieldConfig
- .getFieldClass());
- case MIXED:
- return new MixedContentStrategy(fieldConfig);
- default:
- throw new RuntimeException("No content strategy found for " + type);
- }
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/DomIndexable.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/DomIndexable.java
deleted file mode 100755
index 1f265f90784..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/DomIndexable.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.analysis;
-
-import java.io.IOException;
-import java.io.StringReader;
-import java.io.StringWriter;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.xpath.XPath;
-import javax.xml.xpath.XPathConstants;
-import javax.xml.xpath.XPathExpressionException;
-import javax.xml.xpath.XPathFactory;
-
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-import com.google.gdata.data.ExtensionProfile;
-import com.google.gdata.util.common.xml.XmlWriter;
-
-/**
- * Indexable implementation using the W3C Dom API and JAXP XPath
- * engine
- *
- *
- * @param -
- * a subtype of {@link org.w3c.dom.Node} returned by the applyPath
- * method
- * @param -
- * a subtype of {@link org.apache.lucene.gdata.data.ServerBaseEntry}
- */
-public class DomIndexable extends
- Indexable {
- private final Document document;
-
- private final XPath xPath;
-
- /**
- * @param applyAble
- * @throws NotIndexableException
- */
- public DomIndexable(I applyAble) throws NotIndexableException {
- super(applyAble);
- if (this.applyAble.getServiceConfig() == null)
- throw new NotIndexableException("ServiceConfig is not set");
- try {
- this.document = buildDomDocument();
- } catch (ParserConfigurationException e) {
- throw new NotIndexableException("Can not create document builder",
- e);
-
- } catch (IOException e) {
- throw new NotIndexableException(
- "IO Exception occurred while building indexable", e);
-
- } catch (SAXException e) {
- throw new NotIndexableException("Can not parse entry", e);
-
- }
- this.xPath = XPathFactory.newInstance().newXPath();
-
- }
-
- private Document buildDomDocument() throws ParserConfigurationException,
- IOException, SAXException {
- StringWriter stringWriter = new StringWriter();
- ExtensionProfile profile = this.applyAble.getServiceConfig()
- .getExtensionProfile();
- if (profile == null)
- throw new IllegalStateException("ExtensionProfile is not set");
- XmlWriter writer = new XmlWriter(stringWriter);
- this.applyAble.generateAtom(writer, profile);
- DocumentBuilder builder = DocumentBuilderFactory.newInstance()
- .newDocumentBuilder();
- return builder.parse(new InputSource(new StringReader(stringWriter
- .toString())));
-
- }
-
- /**
- * @see org.apache.lucene.gdata.search.analysis.Indexable#applyPath(java.lang.String)
- */
- @SuppressWarnings("unchecked")
- @Override
- public R applyPath(String expression) throws XPathExpressionException {
-
- return (R) this.xPath.evaluate(expression, this.document,
- XPathConstants.NODE);
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/GdataCategoryStrategy.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/GdataCategoryStrategy.java
deleted file mode 100755
index 64af88bdaf3..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/GdataCategoryStrategy.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.analysis;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.xml.xpath.XPathExpressionException;
-
-import org.apache.lucene.document.Field;
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.search.config.IndexSchemaField;
-import org.apache.lucene.gdata.search.index.GdataIndexerException;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-
-/**
- * This strategy retrieves the category term and and the scheme from a category
- * element. The content is represented by the term which can be configured via
- * the configuration file.
- *
- * The category element has at least one attribute with the name "scheme" which
- * is not mandatory. The term can be the default attribute "term" or the text
- * content of the element, this is configured via the path of the field.
- *
- * TODO extend javadoc for search info
- *
- *
- */
-public class GdataCategoryStrategy extends ContentStrategy {
- protected String categoryScheme;
-
- protected String categorySchemeField;
-
- private static final String LABEL = "label";
-
- private static final String SCHEME = "scheme";
-
- private static final String TERM = "term";
-
- /**
- * the string to search a schema if no schema is specified
- */
- public static final String CATEGORY_SCHEMA_NULL_VALUE = "LUCISCHEMANULL";
-
- /**
- * Schema field suffix
- */
- public static final String CATEGORY_SCHEMA_FIELD_SUFFIX = "-schema";
-
- protected GdataCategoryStrategy(IndexSchemaField fieldConfiguration) {
- super(fieldConfiguration);
- this.categorySchemeField = new StringBuilder(this.fieldName).append(
- CATEGORY_SCHEMA_FIELD_SUFFIX).toString();
-
- }
-
- /**
- * @throws NotIndexableException
- * @see org.apache.lucene.gdata.search.analysis.ContentStrategy#processIndexable(org.apache.lucene.gdata.search.analysis.Indexable)
- */
- @Override
- public void processIndexable(
- Indexable extends Node, ? extends ServerBaseEntry> indexable)
- throws NotIndexableException {
- String contentPath = this.config.getPath();
- Node node = null;
- try {
- node = indexable.applyPath(contentPath);
- } catch (XPathExpressionException e) {
-
- throw new NotIndexableException("Can not apply path");
- }
- if (node == null)
- throw new NotIndexableException(
- "Could not retrieve content for schema field: "
- + this.config);
-
- StringBuilder contentBuilder = new StringBuilder();
- StringBuilder schemeBuilder = new StringBuilder();
- String nodeName = node.getNodeName();
- /*
- * enable more than one category element -- check the node name if
- * category strategy is used with an element not named "category"
- */
- while (node != null && nodeName != null
- && nodeName.equals(node.getNodeName())) {
- NamedNodeMap attributeMap = node.getAttributes();
- if (attributeMap == null)
- throw new NotIndexableException(
- "category term attribute not present");
- /*
- * the "term" is the internal string used by the software to
- * identify the category, while the "label" is the human-readable
- * string presented to a user in a user interface.
- */
- Node termNode = attributeMap.getNamedItem(TERM);
- if (termNode == null)
- throw new NotIndexableException(
- "category term attribute not present");
- contentBuilder.append(termNode.getTextContent()).append(" ");
-
- Node labelNode = attributeMap.getNamedItem(LABEL);
- if (labelNode != null)
- contentBuilder.append(labelNode.getTextContent()).append(" ");
-
- Node schemeNode = attributeMap.getNamedItem(SCHEME);
- if (schemeNode != null)
- schemeBuilder.append(schemeNode.getTextContent());
- node = node.getNextSibling();
- }
-
- this.content = contentBuilder.toString();
- this.categoryScheme = schemeBuilder.toString();
- }
-
- /**
- * @see org.apache.lucene.gdata.search.analysis.ContentStrategy#createLuceneField()
- */
- @Override
- public Field[] createLuceneField() {
- List retValue = new ArrayList(2);
- if (this.fieldName == null)
- throw new GdataIndexerException("Required field 'name' is null -- "
- + this.config);
- if (this.content == null)
- throw new GdataIndexerException(
- "Required field 'content' is null -- " + this.config);
-
- Field categoryTerm = new Field(this.fieldName, this.content,
- this.store, this.index);
- float boost = this.config.getBoost();
- if (boost != 1.0f)
- categoryTerm.setBoost(boost);
- retValue.add(categoryTerm);
- /*
- * if schema is not set index null value to enable search for categories
- * without a schema
- */
- if (this.categoryScheme == null || this.categoryScheme.length() == 0) {
- this.categoryScheme = CATEGORY_SCHEMA_NULL_VALUE;
- }
- Field categoryURN = new Field(this.categorySchemeField,
- this.categoryScheme, Field.Store.YES, Field.Index.UN_TOKENIZED);
- retValue.add(categoryURN);
- return retValue.toArray(new Field[0]);
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/GdataDateStrategy.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/GdataDateStrategy.java
deleted file mode 100755
index 41122e014fc..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/GdataDateStrategy.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.analysis;
-
-import javax.xml.xpath.XPathExpressionException;
-
-import org.apache.lucene.document.Field;
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.search.config.IndexSchemaField;
-import org.apache.lucene.gdata.search.index.GdataIndexerException;
-import org.w3c.dom.Node;
-
-import com.google.gdata.data.DateTime;
-
-/**
- * This content strategy retrieves a so called GData Date from a RFC 3339
- * timestamp format. The format will be parsed and indexed as a timestamp value.
- *
- *
- *
- */
-public class GdataDateStrategy extends ContentStrategy {
-
- protected GdataDateStrategy(IndexSchemaField fieldConfiguration) {
- super(fieldConfiguration);
-
- }
-
- /**
- * @throws NotIndexableException
- * @see org.apache.lucene.gdata.search.analysis.ContentStrategy#processIndexable(org.apache.lucene.gdata.search.analysis.Indexable)
- */
- @Override
- public void processIndexable(
- Indexable extends Node, ? extends ServerBaseEntry> indexable)
- throws NotIndexableException {
- String path = this.config.getPath();
- Node node;
- try {
- node = indexable.applyPath(path);
- } catch (XPathExpressionException e1) {
- throw new NotIndexableException("Can not apply path -- " + path
- + " FieldConfig: " + this.config);
- }
- if (node == null)
- throw new NotIndexableException(
- "Could not retrieve content for schema field: "
- + this.config);
- String textContent = node.getTextContent();
- try {
- this.content = getTimeStamp(textContent);
- } catch (NumberFormatException e) {
- throw new NotIndexableException("Can not parse GData date -- "
- + textContent);
- }
-
- }
-
- /**
- * @see org.apache.lucene.gdata.search.analysis.ContentStrategy#createLuceneField()
- */
- @Override
- public Field[] createLuceneField() {
- if(this.fieldName == null)
- throw new GdataIndexerException(
- "Required field 'name' is null -- " +this.config);
- if(this.content == null)
- throw new GdataIndexerException(
- "Required field 'content' is null -- " +this.config);
- if(this.content.length()==0)
- return new Field[0];
- Field retValue = new Field(this.fieldName, this.content,
- Field.Store.YES, Field.Index.UN_TOKENIZED);
- float boost = this.config.getBoost();
- if (boost != 1.0f)
- retValue.setBoost(boost);
- return new Field[] { retValue };
-
- }
-
- private static String getTimeStamp(String dateString) {
- return Long.toString(DateTime.parseDateTimeChoice(dateString).getValue());
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/HTMLStrategy.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/HTMLStrategy.java
deleted file mode 100755
index 98b86b4befd..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/HTMLStrategy.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.analysis;
-
-import java.io.IOException;
-import java.io.StringReader;
-import java.io.StringWriter;
-
-import javax.xml.xpath.XPathExpressionException;
-
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.search.config.IndexSchemaField;
-import org.apache.xerces.xni.XNIException;
-import org.apache.xerces.xni.parser.XMLDocumentFilter;
-import org.apache.xerces.xni.parser.XMLInputSource;
-import org.apache.xerces.xni.parser.XMLParserConfiguration;
-import org.cyberneko.html.HTMLConfiguration;
-import org.cyberneko.html.filters.ElementRemover;
-import org.cyberneko.html.filters.Writer;
-import org.w3c.dom.Node;
-
-/**
- * This ContentStrategy applies the path to the Indexable and retrieves the
- * plain string content from the returning node. All of the nodes text content
- * will cleaned from any html tags.
- *
- *
- *
- */
-public class HTMLStrategy extends
- org.apache.lucene.gdata.search.analysis.ContentStrategy {
- private static final String REMOVE_SCRIPT = "script";
-
- private static final String CHAR_ENCODING = "UTF-8";
-
- protected HTMLStrategy(IndexSchemaField fieldConfiguration) {
- super(fieldConfiguration);
-
- }
-
- /**
- * @see org.apache.lucene.gdata.search.analysis.ContentStrategy#processIndexable(org.apache.lucene.gdata.search.analysis.Indexable)
- */
- @Override
- public void processIndexable(Indexable extends Node, ? extends ServerBaseEntry> indexable)
- throws NotIndexableException {
- String path = this.config.getPath();
- Node node = null;
- try {
- node = indexable.applyPath(path);
- } catch (XPathExpressionException e1) {
- throw new NotIndexableException("Can not apply path -- " + path);
-
- }
- if(node == null)
- throw new NotIndexableException("Could not retrieve content for schema field: "+this.config);
- StringReader contentReader = new StringReader(node.getTextContent());
- /*
- * remove all elements and script parts
- */
- ElementRemover remover = new ElementRemover();
- remover.removeElement(REMOVE_SCRIPT);
- StringWriter contentWriter = new StringWriter();
- Writer writer = new Writer(contentWriter, CHAR_ENCODING);
- XMLDocumentFilter[] filters = { remover, writer, };
- XMLParserConfiguration parser = new HTMLConfiguration();
- parser.setProperty("http://cyberneko.org/html/properties/filters",
- filters);
- XMLInputSource source = new XMLInputSource(null, null, null,
- contentReader, CHAR_ENCODING);
- try {
- parser.parse(source);
- } catch (XNIException e) {
- throw new NotIndexableException("Can not parse html -- ", e);
-
- } catch (IOException e) {
- throw new NotIndexableException("Can not parse html -- ", e);
-
- }
- this.content = contentWriter.toString();
- }
-
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/Indexable.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/Indexable.java
deleted file mode 100755
index 7751ed936ae..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/Indexable.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.analysis;
-
-import javax.xml.xpath.XPathExpressionException;
-
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.w3c.dom.Node;
-
-/**
- * This class wraps the access to the GData entities to access them via xpath
- * expressions. An arbitrary valid Xpath expression can be passed to the
- * applyPath method to access an element, attribute etc. in the gdata
- * entity.
- *
- *
- * @param -
- * a subtype of {@link org.w3c.dom.Node} returned by the applyPath
- * method
- * @param -
- * a subtype of {@link org.apache.lucene.gdata.data.ServerBaseEntry}
- */
-public abstract class Indexable {
- protected ServerBaseEntry applyAble;
-
- /**
- * @param applyAble
- */
- Indexable(I applyAble) {
- this.applyAble = applyAble;
- }
-
- /**
- * @param xPath -
- * a valid xpath expression
- * @return - the requested element R
- * @throws XPathExpressionException
- */
- public abstract R applyPath(String xPath) throws XPathExpressionException;
-
- /**
- * Factory method to create new Indexable instances.
- *
- * @param -
- * a subtype of {@link org.w3c.dom.Node} returned by the
- * applyPath method
- * @param -
- * a subtype of
- * {@link org.apache.lucene.gdata.data.ServerBaseEntry}
- * @param entry -
- * the entry to wrap in a Indexable
- * @return - a new instance of Indexable to access the entry via
- * Xpath
- * @throws NotIndexableException - if I can not be parsed.
- */
- public static Indexable getIndexable(
- I entry) throws NotIndexableException {
- return new DomIndexable(entry);
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/KeywordStrategy.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/KeywordStrategy.java
deleted file mode 100755
index b4677bcbfbc..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/KeywordStrategy.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.analysis;
-
-import javax.xml.xpath.XPathExpressionException;
-
-import org.apache.lucene.document.Field;
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.search.config.IndexSchemaField;
-import org.w3c.dom.Node;
-
-/**
- *
- *
- */
-public class KeywordStrategy extends ContentStrategy {
-
- /**
- * @param fieldConfig
- */
- public KeywordStrategy(IndexSchemaField fieldConfig) {
- super(Field.Index.UN_TOKENIZED,Field.Store.YES,fieldConfig);
- }
-
- /**
- * @see org.apache.lucene.gdata.search.analysis.ContentStrategy#processIndexable(org.apache.lucene.gdata.search.analysis.Indexable)
- */
- @Override
- public void processIndexable(Indexable extends Node, ? extends ServerBaseEntry> indexable) throws NotIndexableException {
- String path = this.config.getPath();
- try {
- Node node = indexable.applyPath(path);
- if(node == null)
- throw new NotIndexableException("Could not retrieve content for schema field: "+this.config);
- this.content = node.getTextContent();
- } catch (XPathExpressionException e) {
- throw new NotIndexableException("Can not apply Path", e);
- }
-
- }
-
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/MixedContentStrategy.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/MixedContentStrategy.java
deleted file mode 100755
index 32959aa4a36..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/MixedContentStrategy.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.search.analysis;
-
-import javax.xml.xpath.XPathExpressionException;
-
-import org.apache.lucene.document.Field;
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.search.config.IndexSchemaField;
-import org.apache.lucene.gdata.search.config.IndexSchemaField.ContentType;
-import org.w3c.dom.Node;
-
-/**
- *
- *
- */
-public class MixedContentStrategy extends ContentStrategy {
- protected ContentStrategy strategy;
-
- protected MixedContentStrategy(IndexSchemaField fieldConfiguration) {
- super(fieldConfiguration);
-
- }
-
- /**
- * @throws NotIndexableException
- * @see org.apache.lucene.gdata.search.analysis.ContentStrategy#processIndexable(org.apache.lucene.gdata.search.analysis.Indexable)
- */
- @Override
- public void processIndexable(
- Indexable extends Node, ? extends ServerBaseEntry> indexable)
- throws NotIndexableException {
- String path = this.config.getTypePath();
-
- try {
- Node node = indexable.applyPath(path);
- if (node == null)
- this.strategy = new PlainTextStrategy(this.config);
- else {
- String contentType = node.getTextContent();
-
- this.strategy = chooseStrategy(contentType, this.config);
- }
- this.strategy.processIndexable(indexable);
- } catch (XPathExpressionException e) {
- throw new NotIndexableException("Can not apply path -- " + path);
-
- }
- }
-
- /**
- * @see org.apache.lucene.gdata.search.analysis.ContentStrategy#createLuceneField()
- */
- @Override
- public Field[] createLuceneField() {
-
- return this.strategy.createLuceneField();
- }
-
- private static ContentStrategy chooseStrategy(final String contentType,
- final IndexSchemaField config) {
- ContentType type = null;
- try {
- type = ContentType.valueOf(contentType==null?"TEXT":contentType.toUpperCase());
- } catch (Throwable e) {
- type = ContentType.TEXT;
- }
-
- switch (type) {
- case HTML:
- return new HTMLStrategy(config);
-
- case XHTML:
- return new XHtmlStrategy(config);
-
- default:
- return new PlainTextStrategy(config);
-
- }
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/NotIndexableException.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/NotIndexableException.java
deleted file mode 100755
index 5cc75da4e66..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/NotIndexableException.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.search.analysis;
-
-/**
- * This exception will be thrown by ContentStrategy instances if an exception
- * occurs while retrieving content from entries
- *
- *
- *
- */
-public class NotIndexableException extends Exception {
-
- /**
- *
- */
- private static final long serialVersionUID = 1538388864181786380L;
-
- /**
- * Constructs a new NotIndexableException
- */
- public NotIndexableException() {
- super();
-
- }
-
- /**
- * Constructs a new NotIndexableException with the specified detail message.
- *
- * @param arg0 -
- * detail message
- */
- public NotIndexableException(String arg0) {
- super(arg0);
-
- }
-
- /**
- * Constructs a new NotIndexableException with the specified detail message
- * and nested exception.
- *
- * @param arg0 -
- * detail message
- * @param arg1 -
- * nested exception
- */
- public NotIndexableException(String arg0, Throwable arg1) {
- super(arg0, arg1);
-
- }
-
- /**
- * Constructs a new NotIndexableException with a nested exception caused
- * this exception.
- *
- * @param arg0 -
- * nested exception
- */
- public NotIndexableException(Throwable arg0) {
- super(arg0);
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/PlainTextStrategy.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/PlainTextStrategy.java
deleted file mode 100755
index 9a7fa69cd69..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/PlainTextStrategy.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.search.analysis;
-
-import javax.xml.xpath.XPathExpressionException;
-
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.search.config.IndexSchemaField;
-import org.w3c.dom.Node;
-
-/**
- *
- *
- */
-public class PlainTextStrategy extends ContentStrategy {
-
- protected PlainTextStrategy(IndexSchemaField fieldConfiguration) {
- super(fieldConfiguration);
-
- }
-
- /**
- * @see org.apache.lucene.gdata.search.analysis.ContentStrategy#processIndexable(org.apache.lucene.gdata.search.analysis.Indexable)
- */
- @Override
- public void processIndexable(Indexable extends Node, ? extends ServerBaseEntry> indexable)
- throws NotIndexableException {
- String path = this.config.getPath();
- try {
- Node node = indexable.applyPath(path);
- if(node == null)
- throw new NotIndexableException("Could not retrieve content for schema field: "+this.config);
- this.content = node.getTextContent();
-
- } catch (XPathExpressionException e) {
- throw new NotIndexableException("Can not apply Path", e);
- }
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/XHtmlStrategy.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/XHtmlStrategy.java
deleted file mode 100755
index 35058ba8f54..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/XHtmlStrategy.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.analysis;
-
-import org.apache.lucene.gdata.search.config.IndexSchemaField;
-
-public class XHtmlStrategy extends HTMLStrategy {
-
- /**
- * @param fieldConfig
- */
- public XHtmlStrategy(IndexSchemaField fieldConfig) {
- super(fieldConfig);
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/package.html b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/package.html
deleted file mode 100755
index 8851e7792ac..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/analysis/package.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-Classes used for extracting content from entries and building lucene documents.
-
-
\ No newline at end of file
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/config/IndexSchema.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/config/IndexSchema.java
deleted file mode 100755
index d50a2a53675..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/config/IndexSchema.java
+++ /dev/null
@@ -1,525 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.config;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.analysis.PerFieldAnalyzerWrapper;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
-import org.apache.lucene.gdata.search.index.IndexDocument;
-import org.apache.lucene.gdata.utils.ReflectionUtils;
-
-/**
- * This class is used to configure the indexing and search component. Each
- * service on the GData server will have an own search index. For this purpose
- * one single index schema will be configured in the gdata-config.xml file. This
- * file will be mapped on this class on startup.
- *
- * This class breaks some encapsulation of general java classes to be
- * configurable via the xml configuration file. The will be very less type and
- * value checking of the properties inside this file. Mandatory values must be
- * set in the configuration file. The server won't start up if these values are
- * missing. See definition in the xml schema file. If this class is instantiated
- * manually the value for the name of the schema should be set before this is
- * passed to the IndexController.
- *
- *
- * One IndexSchema consists of multiple instances of
- * {@link org.apache.lucene.gdata.search.config.IndexSchemaField} each of this
- * instances describes a single field in the index and all schema informations
- * about the field.
- *
- *
- *
- * @see org.apache.lucene.gdata.search.config.IndexSchemaField
- *
- *
- *
- */
-public class IndexSchema {
- private final Set searchableFieldNames = new HashSet();
-
- private static final Log LOG = LogFactory.getLog(IndexSchema.class);
-
- /**
- * a static final value for properties are not set by the configuration file
- * this value will be set to all long and int properties by default
- */
- public static final int NOT_SET_VALUE = -1;
- private static final int DEFAULT_OPTIMIZE_COUNT = 1;
- private static final int DEFAULT_COMMIT_COUNT = 1;
-
- private String indexLocation;
-
- /*
- * this should be final change it if possible --> see commons digester /
- * RegistryBuilder
- */
- private String name;
-
- private boolean useTimedIndexer;
-
- private long indexerIdleTime = NOT_SET_VALUE;
-
- private Analyzer serviceAnalyzer;
-
- private String defaultSearchField;
-
- private PerFieldAnalyzerWrapper perFieldAnalyzer;
-
- private Collection schemaFields;
-
- private int maxBufferedDocs = NOT_SET_VALUE;
-
- private int maxMergeDocs = NOT_SET_VALUE;
-
- private int mergeFactor = NOT_SET_VALUE;
-
- private int maxFieldLength = NOT_SET_VALUE;
-
- private long writeLockTimeout = NOT_SET_VALUE;
-
- private long commitLockTimeout = NOT_SET_VALUE;
-
- private int commitAfterDocuments = DEFAULT_COMMIT_COUNT;
-
- private int optimizeAfterCommit = DEFAULT_OPTIMIZE_COUNT;
-
- private boolean useCompoundFile = false;
-
- /**
- * Creates a new IndexSchema and initialize the standard service analyzer to
- * {@link StandardAnalyzer}
- *
- */
- public IndexSchema() {
- this.schemaFields = new ArrayList();
- /*
- * keep as standard if omitted in the configuration
- */
- this.serviceAnalyzer = new StandardAnalyzer();
-
- }
-
- /**
- * Initialize the schema and checks all required values
- */
- public void initialize() {
- for (IndexSchemaField field : this.schemaFields) {
- if (!field.checkRequieredValues())
- throw new RuntimeException("Required Value for field: "
- + field.getName() + " is missing");
- }
- if (this.defaultSearchField == null)
- throw new RuntimeException("DefaulSearchField must not be null");
- if (this.name == null)
- throw new RuntimeException(
- "Schema field is not set -- must not be null");
- if (this.indexLocation == null)
- throw new RuntimeException("IndexLocation must not be null");
- if(!this.searchableFieldNames.contains(this.defaultSearchField)){
- throw new RuntimeException("the default search field: "+this.defaultSearchField+" is registered as a field");
- }
-
- }
-
- /**
- * @return Returns the useCompoundFile.
- */
- public boolean isUseCompoundFile() {
- return this.useCompoundFile;
- }
-
- /**
- * @param useCompoundFile
- * The useCompoundFile to set.
- */
- public void setUseCompoundFile(boolean useCompoundFile) {
- this.useCompoundFile = useCompoundFile;
- }
-
- /**
- * Adds a new {@link IndexSchemaField} to the schema. if the fields name
- * equals {@link IndexDocument#FIELD_ENTRY_ID} or the field is
- * null it will simply ignored
- *
- * @param field -
- * the index schema field to add as a field of this schema.
- */
- public void addSchemaField(final IndexSchemaField field) {
- if (field == null)
- return;
- /*
- * skip fields configured in the gdata-config.xml file if their names
- * match a primary key field id of the IndexDocument
- */
- if (field.getName().equals(IndexDocument.FIELD_ENTRY_ID)
- || field.getName().equals(IndexDocument.FIELD_FEED_ID))
- return;
- if (field.getAnalyzerClass() != null) {
- /*
- * enable per field analyzer if one is set.
- */
- Analyzer analyzer = getAnalyzerInstance(field.getAnalyzerClass());
- /*
- * null values will be omitted here
- */
- buildPerFieldAnalyzerWrapper(analyzer, field.getName());
- }
- this.schemaFields.add(field);
- this.searchableFieldNames.add(field.getName());
- }
-
-
- /**
- * @return Returns the fieldConfiguration.
- */
- public Collection getFields() {
- return this.schemaFields;
- }
-
- /**
- * @return - the analyzer instance to be used for this schema
- */
- public Analyzer getSchemaAnalyzer() {
- if (this.perFieldAnalyzer == null)
- return this.serviceAnalyzer;
- return this.perFieldAnalyzer;
- }
-
- /**
- * @return Returns the serviceAnalyzer.
- */
- public Analyzer getServiceAnalyzer() {
- return this.serviceAnalyzer;
- }
-
- /**
- * @param serviceAnalyzer
- * The serviceAnalyzer to set.
- */
- public void setServiceAnalyzer(Analyzer serviceAnalyzer) {
- if (serviceAnalyzer == null)
- return;
- this.serviceAnalyzer = serviceAnalyzer;
-
- }
-
- /**
- * @return Returns the commitLockTimout.
- */
- public long getCommitLockTimeout() {
- return this.commitLockTimeout;
- }
-
- /**
- *
- * @param commitLockTimeout
- * The commitLockTimeout to set.
- */
- public void setCommitLockTimeout(long commitLockTimeout) {
- // TODO enable this in config
- this.commitLockTimeout = commitLockTimeout;
- }
-
- /**
- * @return Returns the maxBufferedDocs.
- */
- public int getMaxBufferedDocs() {
-
- return this.maxBufferedDocs;
- }
-
- /**
- * @param maxBufferedDocs
- * The maxBufferedDocs to set.
- */
- public void setMaxBufferedDocs(int maxBufferedDocs) {
- this.maxBufferedDocs = maxBufferedDocs;
- }
-
- /**
- * @return Returns the maxFieldLength.
- */
- public int getMaxFieldLength() {
- return this.maxFieldLength;
- }
-
- /**
- * @param maxFieldLength
- * The maxFieldLength to set.
- */
- public void setMaxFieldLength(int maxFieldLength) {
- this.maxFieldLength = maxFieldLength;
- }
-
- /**
- * @return Returns the maxMergeDocs.
- */
- public int getMaxMergeDocs() {
- return this.maxMergeDocs;
- }
-
- /**
- * @param maxMergeDocs
- * The maxMergeDocs to set.
- */
- public void setMaxMergeDocs(int maxMergeDocs) {
- this.maxMergeDocs = maxMergeDocs;
- }
-
- /**
- * @return Returns the mergeFactor.
- */
- public int getMergeFactor() {
- return this.mergeFactor;
- }
-
- /**
- * @param mergeFactor
- * The mergeFactor to set.
- */
- public void setMergeFactor(int mergeFactor) {
- this.mergeFactor = mergeFactor;
- }
-
- /**
- * @return Returns the writeLockTimeout.
- */
- public long getWriteLockTimeout() {
- return this.writeLockTimeout;
- }
-
- /**
- * @param writeLockTimeout
- * The writeLockTimeout to set.
- */
- public void setWriteLockTimeout(long writeLockTimeout) {
- this.writeLockTimeout = writeLockTimeout;
- }
-
- /**
- * @param fields
- * The fieldConfiguration to set.
- */
- public void setSchemaFields(Collection fields) {
- this.schemaFields = fields;
- }
-
- /**
- * @return Returns the name.
- */
- public String getName() {
- return this.name;
- }
-
- /**
- * @see java.lang.Object#equals(java.lang.Object)
- */
- @Override
- public boolean equals(Object object) {
- if (this == object)
- return true;
- if (object == null)
- return false;
- if (object instanceof IndexSchema) {
- if(this.name ==null)
- return super.equals(object);
- return this.name.equals(((IndexSchema) object).getName());
- }
- return false;
- }
-
- /**
- * @see java.lang.Object#hashCode()
- */
- @Override
- public int hashCode() {
- if (this.name == null)
- return super.hashCode();
- return this.name.hashCode();
- }
-
- private void buildPerFieldAnalyzerWrapper(Analyzer anazlyer, String field) {
- if (anazlyer == null || field == null || field.length() == 0)
- return;
- if (this.perFieldAnalyzer == null)
- this.perFieldAnalyzer = new PerFieldAnalyzerWrapper(
- this.serviceAnalyzer);
- this.perFieldAnalyzer.addAnalyzer(field, anazlyer);
- }
-
- private static Analyzer getAnalyzerInstance(Class extends Analyzer> clazz) {
- if (!ReflectionUtils.extendsType(clazz, Analyzer.class)) {
- LOG.warn("Can not create analyzer for class " + clazz.getName());
- return null;
- }
- try {
- return clazz.newInstance();
- } catch (Exception e) {
- LOG.warn("Can not create analyzer for class " + clazz.getName());
- }
- return null;
- }
-
- /**
- * @param name
- * The name to set.
- */
- public void setName(String name) {
- this.name = name;
- }
-
- /**
- * @return Returns the indexLocation.
- */
- public String getIndexLocation() {
- return this.indexLocation;
- }
-
- /**
- * @param indexLocation
- * The indexLocation to set.
- */
- public void setIndexLocation(String indexLocation) {
- this.indexLocation = indexLocation;
- }
-
- /**
- * @return Returns the defaultField.
- */
- public String getDefaultSearchField() {
- return this.defaultSearchField;
- }
-
- /**
- * @param defaultField
- * The defaultField to set.
- */
- public void setDefaultSearchField(String defaultField) {
- this.defaultSearchField = defaultField;
- }
-
- /**
- * @return Returns the indexerIdleTime.
- */
- public long getIndexerIdleTime() {
- return this.indexerIdleTime;
- }
-
- /**
- * @param indexerIdleTime
- * The indexerIdleTime to set.
- */
- public void setIndexerIdleTime(long indexerIdleTime) {
- this.indexerIdleTime = indexerIdleTime;
- }
-
- /**
- * @return Returns the useTimedIndexer.
- */
- public boolean isUseTimedIndexer() {
- return this.useTimedIndexer;
- }
-
- /**
- * @param useTimedIndexer
- * The useTimedIndexer to set.
- */
- public void setUseTimedIndexer(boolean useTimedIndexer) {
- this.useTimedIndexer = useTimedIndexer;
- }
-
- /**
- * @see java.lang.Object#toString()
- */
- @Override
- public String toString() {
- StringBuilder builder = new StringBuilder(this.getClass().getName())
- .append(" ");
- builder.append("Name: ").append(this.name).append(" ");
- builder.append("MaxBufferedDocs: ").append(this.maxBufferedDocs)
- .append(" ");
- builder.append("MaxFieldLength: ").append(this.maxFieldLength).append(
- " ");
- builder.append("MaxMergeDocs: ").append(this.maxMergeDocs).append(" ");
- builder.append("MergeFactor: ").append(this.mergeFactor).append(" ");
- builder.append("CommitLockTimeout: ").append(this.commitLockTimeout)
- .append(" ");
- builder.append("WriteLockTimeout: ").append(this.writeLockTimeout)
- .append(" ");
- builder.append("indexerIdleTime: ").append(this.indexerIdleTime)
- .append(" ");
- builder.append("useCompoundFile: ").append(this.useCompoundFile)
- .append(" ");
- builder.append("Added SchemaField instances: ").append(
- this.schemaFields.size()).append(" ");
-
- builder.append("IndexLocation: ").append(this.indexLocation)
- .append(" ");
- return builder.toString();
-
- }
-
- /**
- * @return Returns the searchableFieldNames.
- */
- public Set getSearchableFieldNames() {
- return this.searchableFieldNames;
- }
-
- /**
- * Defines after how many added,removed or updated document the indexer should commit.
- * @return Returns the commitAfterDocuments.
- */
- public int getCommitAfterDocuments() {
- return this.commitAfterDocuments;
- }
-
- /**
- * @param commitAfterDocuments The commitAfterDocuments to set.
- */
- public void setCommitAfterDocuments(int commitAfterDocuments) {
- if(commitAfterDocuments < DEFAULT_COMMIT_COUNT)
- return;
- this.commitAfterDocuments = commitAfterDocuments;
- }
-
- /**
- * Defines after how many commits the indexer should optimize the index
- * @return Returns the optimizeAfterCommit.
- */
- public int getOptimizeAfterCommit() {
-
- return this.optimizeAfterCommit;
- }
-
- /**
- * @param optimizeAfterCommit The optimizeAfterCommit to set.
- */
- public void setOptimizeAfterCommit(int optimizeAfterCommit) {
- if(optimizeAfterCommit < DEFAULT_OPTIMIZE_COUNT )
- return;
- this.optimizeAfterCommit = optimizeAfterCommit;
- }
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/config/IndexSchemaField.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/config/IndexSchemaField.java
deleted file mode 100755
index 75af8f7bee5..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/config/IndexSchemaField.java
+++ /dev/null
@@ -1,380 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.search.config;
-
-import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.document.Field;
-import org.apache.lucene.document.Field.Index;
-import org.apache.lucene.document.Field.Store;
-import org.apache.lucene.gdata.search.analysis.ContentStrategy;
-import org.apache.lucene.gdata.search.analysis.GdataCategoryStrategy;
-import org.apache.lucene.gdata.search.analysis.GdataDateStrategy;
-import org.apache.lucene.gdata.search.analysis.HTMLStrategy;
-import org.apache.lucene.gdata.search.analysis.KeywordStrategy;
-import org.apache.lucene.gdata.search.analysis.MixedContentStrategy;
-import org.apache.lucene.gdata.search.analysis.PlainTextStrategy;
-import org.apache.lucene.gdata.search.analysis.XHtmlStrategy;
-import org.apache.lucene.gdata.utils.ReflectionUtils;
-
-/**
- * Each field in the search index is defined by a instance of
- * {@link IndexSchemaField}. The schema definition will be loaded at startup
- * and the defined values will be set to instances of this class. Each
- * constructed field will be passed to an instance of
- * {@link org.apache.lucene.gdata.search.config.IndexSchema}.
- *
- * IndexSchemaField contains all informations about how the content from
- * incoming entries has to be extracted and how the actual content has to be
- * index into the lucene index.
- *
- *
- * Each field will have a defined
- * {@link org.apache.lucene.gdata.search.analysis.ContentStrategy} which does
- * process the extraction of the field content from an incoming entry.
- *
- * @see org.apache.lucene.gdata.search.analysis.ContentStrategy
- * @see org.apache.lucene.gdata.search.config.IndexSchema
- *
- *
- *
- */
-public class IndexSchemaField {
- /**
- * Default value for Field.Store
- * @see org.apache.lucene.document.Field
- */
- public static final Store DEFAULT_STORE_STRATEGY = Field.Store.NO;
- /**
- * Default value for Field.Index
- * @see org.apache.lucene.document.Field
- */
- public static final Index DEFAULT_INDEX_STRATEGY = Field.Index.TOKENIZED;
- private static final float DEFAULT_BOOST = 1.0f;
- private static final float MINIMAL_BOOST = 0.1f;
- private float boost = DEFAULT_BOOST;
-
- private String name;
-
- private ContentType contentType;
-
- private Index index = DEFAULT_INDEX_STRATEGY;
-
- private Store store = DEFAULT_STORE_STRATEGY;
-
- private String path;
-
- private String typePath;
-
- private Class extends Analyzer> analyzerClass;
-
- private Class extends ContentStrategy> fieldClass;
-
- /**
- * Constructs a new SchemaField
- * Default values:
- *
- *
boost: 1.0
- *
index: TOKENIZED
- *
store: NO
- *
- */
- public IndexSchemaField() {
- super();
- }
- boolean checkRequieredValues(){
- /*
- * This class will be inst. by the reg builder.
- * Check all values to be set. otherwise return false.
- * false will cause a runtime exception in IndexSchema
- */
- boolean returnValue = (this.name != null&&this.path!=null&&this.contentType!=null&&this.index!=null&&this.store!=null&&this.boost>=MINIMAL_BOOST);
- if(this.contentType == ContentType.CUSTOM)
- returnValue &=this.fieldClass!=null;
- else if(this.contentType == ContentType.MIXED)
- returnValue &=this.typePath!=null;
-
- return returnValue;
- }
- /**
- * @return Returns the alanyzerClass.
- */
- public Class extends Analyzer> getAnalyzerClass() {
- return this.analyzerClass;
- }
-
- /**
- * @param alanyzerClass
- * The alanyzerClass to set.
- */
- public void setAnalyzerClass(Class extends Analyzer> alanyzerClass) {
- this.analyzerClass = alanyzerClass;
- }
-
- /**
- * @return Returns the fieldClass.
- */
- public Class extends ContentStrategy> getFieldClass() {
- return this.fieldClass;
- }
-
- /**
- * Sets the class or strategy is used to extract this field Attention: this
- * method set the contentTyp to {@link ContentType#CUSTOM}
- *
- * @param fieldClass
- * The fieldClass to set.
- */
- public void setFieldClass(Class extends ContentStrategy> fieldClass) {
- if(fieldClass == null)
- throw new IllegalArgumentException("ContentStrategy must not be null");
- if(!ReflectionUtils.extendsType(fieldClass,ContentStrategy.class))
- throw new RuntimeException("The configured ContentStrategy does not extend ContentStrategy, can not use as a custom strategy -- "+fieldClass.getName());
- if(!ReflectionUtils.hasDesiredConstructor(fieldClass,new Class[]{IndexSchemaField.class}))
- throw new RuntimeException("Can not create instance of "+fieldClass.getName());
- this.fieldClass = fieldClass;
- /*
- * set custom - field class is only needed by custom
- */
- this.contentType = ContentType.CUSTOM;
- }
-
- /**
- * @return Returns the index.
- */
- public Index getIndex() {
- return this.index;
- }
-
- /**
- * @param index
- * The index to set.
- */
- public void setIndex(Index index) {
- this.index = index;
- }
-
- /**
- * @return Returns the name.
- */
- public String getName() {
- return this.name;
- }
-
- /**
- * @param name
- * The name to set.
- */
- public void setName(String name) {
- this.name = name;
- }
-
- /**
- * @return Returns the path.
- */
- public String getPath() {
- return this.path;
- }
-
- /**
- * @param path
- * The path to set.
- */
- public void setPath(String path) {
- this.path = path;
- }
-
- /**
- * @return Returns the store.
- */
- public Store getStore() {
- return this.store;
- }
-
- /**
- * @param store
- * The store to set.
- */
- public void setStore(Store store) {
- this.store = store;
- }
-
- /**
- * @return Returns the type.
- */
- public ContentType getContentType() {
- return this.contentType;
- }
-
- /**
- * @param type
- * The type to set.
- */
- public void setContentType(ContentType type) {
- this.contentType = type;
-
- }
-
- /**
- * Sets the content type of this field by the name of the enum type. This
- * method is not case sensitive.
- *
- * @param type -
- * type name as string
- */
- public void setType(String type) {
- ContentType[] types = ContentType.class.getEnumConstants();
- for (int i = 0; i < types.length; i++) {
- if (types[i].name().toLowerCase().equals(type)) {
- this.contentType = types[i];
- break;
- }
-
- }
- }
-
- /**
- * Defines the {@link ContentStrategy} to use for a
- * IndexSchemaField to extract the content from the entry
- *
- *
- *
- */
- public enum ContentType {
-
- /**
- * HTML content strategy {@link HTMLStrategy }
- */
- HTML,
- /**
- * XHTML content strategy {@link XHtmlStrategy }
- */
- XHTML,
- /**
- * Text content strategy {@link PlainTextStrategy }
- */
- TEXT,
- /**
- * GDataDate content strategy {@link GdataDateStrategy }
- */
- GDATADATE,
- /**
- * KEYWORD content strategy {@link KeywordStrategy }
- */
- KEYWORD,
- /**
- * Category content strategy {@link GdataCategoryStrategy }
- */
- CATEGORY,
- /**
- * Custom content strategy (user defined)
- */
- CUSTOM,
- /**
- * Mixed content strategy {@link MixedContentStrategy }
- */
- MIXED
-
- }
-
- /**
- * @return Returns the boost.
- */
- public float getBoost() {
- return this.boost;
- }
-
- /**
- * @param boost
- * The boost to set.
- */
- public void setBoost(float boost) {
- if (boost <= 0)
- return;
- this.boost = boost;
- }
-
- /**
- * @see java.lang.Object#toString()
- */
- @Override
- public String toString() {
- StringBuilder builder = new StringBuilder(this.getClass()
- .getSimpleName()).append(" ");
- builder.append("field name: ").append(this.name).append(" ");
- builder.append("path: ").append(this.path).append(" ");
- builder.append("content type ").append(this.contentType).append(" ");
- builder.append("field class: ").append(this.fieldClass).append(" ");
- builder.append("analyzer: ").append(this.analyzerClass).append(" ");
- builder.append("boost: ").append(this.boost).append(" ");
- builder.append("INDEX: ").append(this.index).append(" ");
- builder.append("STORE: ").append(this.store);
- return builder.toString();
- }
-
- /**
- * Sets the Store class by simple name
- *
- * @param name -
- * one of yes, no, compress
- */
- public void setStoreByName(String name) {
- if (name.toLowerCase().equals("yes"))
- this.store = Field.Store.YES;
- else if (name.toLowerCase().equals("no"))
- this.store = Field.Store.NO;
- else if (name.toLowerCase().equals("compress"))
- this.store = Field.Store.COMPRESS;
- }
-
- /**
- * Sets the Index class by simple name
- *
- * @param name -
- * un_tokenized, tokenized, no, no_norms
- */
- public void setIndexByName(String name) {
- if (name.toLowerCase().equals("un_tokenized"))
- this.index = Field.Index.UN_TOKENIZED;
- else if (name.toLowerCase().equals("tokenized"))
- this.index = Field.Index.TOKENIZED;
- else if (name.toLowerCase().equals("no_norms"))
- this.index = Field.Index.NO_NORMS;
- else if (name.toLowerCase().equals("no"))
- this.index = Field.Index.NO;
- }
-
- /**
- * @return Returns the typePath.
- */
- public String getTypePath() {
- return this.typePath;
- }
-
- /**
- * @param typePath
- * The typePath to set.
- */
- public void setTypePath(String typePath) {
- this.typePath = typePath;
- /*
- * set Mixed - this property is only needed by mixed type
- */
- setContentType(ContentType.MIXED);
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/config/package.html b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/config/package.html
deleted file mode 100755
index 2bb6076dd85..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/config/package.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-All classes used for index and search configuration
-
-
\ No newline at end of file
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/GDataIndexDocument.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/GDataIndexDocument.java
deleted file mode 100755
index 13b56739d51..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/GDataIndexDocument.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.index;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
-import org.apache.lucene.gdata.search.analysis.ContentStrategy;
-import org.apache.lucene.index.Term;
-
-/**
- * Simple implementation
- *
- *
- * @see org.apache.lucene.gdata.search.index.IndexDocument
- */
-class GDataIndexDocument implements IndexDocument {
- private final IndexAction action;
-
- private final boolean commitAfter;
-
- private final boolean optimizeAfter;
-
- private String id;
-
- protected Collection fields;
-
- private final String feedId;
-
- GDataIndexDocument(final IndexAction action, final String entryId,final String feedId,final boolean commitAfter,final boolean optimizeAfter) {
- this.action = action;
- this.id = entryId;
- this.feedId = feedId;
- this.fields = new ArrayList(10);
- this.commitAfter = commitAfter;
- this.optimizeAfter = optimizeAfter;
- }
-
- /**
- * Adds a new field e.g. ContentStrategy to the IndexDocument
- *
- * @param field -
- * the strategy to add
- */
- public void addField(ContentStrategy field) {
- if (field == null)
- return;
- this.fields.add(field);
- }
-
- /**
- * @see org.apache.lucene.gdata.search.index.IndexDocument#getWriteable()
- */
- public Document getWriteable() {
- Document retVal = new Document();
- retVal.add(new Field(FIELD_ENTRY_ID, this.id, Field.Store.YES,
- Field.Index.UN_TOKENIZED));
- retVal.add(new Field(FIELD_FEED_ID, this.feedId, Field.Store.YES,
- Field.Index.UN_TOKENIZED));
- for (ContentStrategy strategy : this.fields) {
- Field[] fieldArray = strategy.createLuceneField();
- for (int i = 0; i < fieldArray.length; i++) {
- retVal.add(fieldArray[i]);
- }
-
- }
- return retVal;
- }
-
- /**
- * @see org.apache.lucene.gdata.search.index.IndexDocument#getDeletealbe()
- */
- public Term getDeletealbe() {
-
- return new Term(IndexDocument.FIELD_ENTRY_ID, this.id);
- }
-
- /**
- * @see org.apache.lucene.gdata.search.index.IndexDocument#isUpdate()
- */
- public boolean isUpdate() {
-
- return isAction(IndexAction.UPDATE);
- }
-
- /**
- * @see org.apache.lucene.gdata.search.index.IndexDocument#isDelete()
- */
- public boolean isDelete() {
-
- return isAction(IndexAction.DELETE);
- }
-
- /**
- * @see org.apache.lucene.gdata.search.index.IndexDocument#isInsert()
- */
- public boolean isInsert() {
-
- return isAction(IndexAction.INSERT);
- }
-
- private boolean isAction(IndexAction indexAction) {
- return this.action == indexAction;
- }
-
- /**
- * @see org.apache.lucene.gdata.search.index.IndexDocument#commitAfter()
- */
- public boolean commitAfter() {
-
- return this.commitAfter;
- }
-
- /**
- * @see org.apache.lucene.gdata.search.index.IndexDocument#optimizeAfter()
- */
- public boolean optimizeAfter() {
-
- return this.optimizeAfter;
- }
-
- /**
- * @see java.lang.Object#equals(java.lang.Object)
- */
- @Override
- public final boolean equals(Object obj) {
- if(obj == null)
- return false;
- if(this == obj)
- return true;
- if(obj instanceof GDataIndexDocument){
- GDataIndexDocument other = (GDataIndexDocument)obj;
- if(this.id == null)
- return false;
- return this.id.equals(other.id);
- }
- return false;
- }
-
- /**
- * @see java.lang.Object#hashCode()
- */
- @Override
- public final int hashCode() {
- if(this.id == null)
- return super.hashCode();
- return this.id.hashCode();
- }
-
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/GDataIndexWriter.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/GDataIndexWriter.java
deleted file mode 100755
index befdc40f58c..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/GDataIndexWriter.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.search.index;
-
-import java.io.IOException;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
-import org.apache.lucene.gdata.search.config.IndexSchema;
-import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.index.LogDocMergePolicy;
-import org.apache.lucene.store.Directory;
-
-/**
- * Configurable decorator for a lucene {@link IndexWriter}
- *
- *
- *
- */
-public class GDataIndexWriter extends IndexWriter {
- private static final Log LOG = LogFactory.getLog(GDataIndexWriter.class);
-
- private String serviceName;
-
- private void initialize(IndexSchema config) {
- this.serviceName = config.getName();
- setUseCompoundFile(config.isUseCompoundFile());
- if (config.getMaxBufferedDocs() != IndexSchema.NOT_SET_VALUE)
- setMaxBufferedDocs(config.getMaxBufferedDocs());
- if (config.getMaxMergeDocs() != IndexSchema.NOT_SET_VALUE && getMergePolicy() instanceof LogDocMergePolicy)
- setMaxMergeDocs(config.getMaxMergeDocs());
- if (config.getMergeFactor() != IndexSchema.NOT_SET_VALUE)
- setMergeFactor(config.getMergeFactor());
- if (config.getMaxFieldLength() != IndexSchema.NOT_SET_VALUE)
- setMaxFieldLength(config.getMaxFieldLength());
- if (config.getWriteLockTimeout() != IndexSchema.NOT_SET_VALUE)
- setWriteLockTimeout(config.getWriteLockTimeout());
- //no commit lock anymore
- //TODO fix this
-// if (config.getCommitLockTimeout() != IndexSchema.NOT_SET_VALUE)
-// setCommitLockTimeout(config.getCommitLockTimeout());
- }
-
- /**
- * Creates and configures a new GdataIndexWriter
- *
- * @param arg0 -
- * the index directory
- * @param arg1 -
- * create index
- * @param arg2 -
- * the index schema configuration including all parameter to set
- * up the index writer
- * @throws IOException
- * -if the directory cannot be read/written to, or if it does
- * not exist, and create is false
- */
- protected GDataIndexWriter(Directory arg0, boolean arg1, IndexSchema arg2)
- throws IOException {
- /*
- * Use Schema Analyzer rather than service analyzer.
- * Schema analyzer returns either the service analyzer or a per field analyzer if configured.
- */
- super(arg0, (arg2 == null ? new StandardAnalyzer() : arg2.getSchemaAnalyzer()), arg1);
- if (arg2 == null) {
- /*
- * if no schema throw exception - schema is mandatory for the index writer.
- */
- try {
- this.close();
- } catch (IOException e) {
- //
- }
- throw new IllegalArgumentException("configuration must not be null");
-
- }
- this.initialize(arg2);
- }
-
- /**
- * @see org.apache.lucene.index.IndexWriter#close()
- */
- @Override
- public void close() throws IOException {
- super.close();
- LOG.info("Closing GdataIndexWriter for service " + this.serviceName);
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/GDataIndexer.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/GDataIndexer.java
deleted file mode 100755
index 9510bc5b204..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/GDataIndexer.java
+++ /dev/null
@@ -1,517 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.index;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.search.config.IndexSchema;
-import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.index.TermDocs;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.store.Directory;
-
-/**
- * A GDataIndexer encapsulates every writing access to the search index.
- *
- * Insert, updates and deletes to the index happens inside this class. All
- * modification will be base on an instance of
- * {@link org.apache.lucene.gdata.search.index.IndexDocument} which contains all
- * informations and command for the indexer.
- * Although this class provides methods to add, remove and update document in
- * the index all IndexDocument instances should be added to the task
- * queue via the {@link GDataIndexer#addIndexableDocumentTask(Future)} method.
- * Inside this class runs an instance of
- * {@link org.apache.lucene.gdata.search.index.IndexTask} listening on this
- * queue. The analysis of the actual documents happens inside the
- * {@link java.util.concurrent.Future} object added to the
- * queue. This enables the indexer to do his actual work. Documents will be
- * build / analyzed concurrently while already finished tasks can be added to
- * the index.
- *
- *
- *
- *
- *
- */
-public class GDataIndexer {
- private static final Log LOG = LogFactory.getLog(GDataIndexer.class);
-
- protected IndexWriter writer;
-
- protected IndexSearcher searcher;
-
- protected AtomicInteger committed = new AtomicInteger(0);
-
- protected AtomicInteger optimized = new AtomicInteger(0);
-
- private AtomicBoolean isDestroyed = new AtomicBoolean(false);
-
- protected AtomicInteger docsAdded = new AtomicInteger();
-
- protected AtomicInteger docsUpdated = new AtomicInteger();
-
- protected AtomicInteger docsDeleted = new AtomicInteger();
-
- private final Directory dir;
-
- private final List listeners = new ArrayList();
-
- protected final BlockingQueue> futurQueue = new LinkedBlockingQueue>(
- 100);
-
- private final IndexSchema serviceConfiguration;
-
- private final ExecutorService indexTaskExecutor;
-
- protected IndexTask indexTask;
-
- private static final Integer ZERO = new Integer(0);
-
- private static final Integer ONE = new Integer(1);
-
- private final Map action;
-
- protected GDataIndexer(final IndexSchema schema, Directory dir,
- boolean create) throws IOException {
- if (schema == null)
- throw new IllegalArgumentException(
- "IndexServiceConfiguration must not be null");
- if (dir == null)
- throw new IllegalArgumentException(
- "IndexDirectory must not be null");
-
- this.serviceConfiguration = schema;
- this.dir = dir;
- openWriter(create);
- this.indexTaskExecutor = Executors.newSingleThreadExecutor();
- this.action = new HashMap(128);
-
- }
-
- protected void setIndexTask(final IndexTask task) {
- if (task != null && this.indexTask == null)
- this.indexTask = task;
- }
-
- protected void init() {
- if (this.indexTask == null)
- this.indexTask = new IndexTask(this, this.futurQueue);
- this.indexTaskExecutor.execute(this.indexTask);
-
- }
-
- /**
- * Adds the given future task to the queue, and waits if the queue is full.
- * The queue size is set to 100 by default.
- *
- * @param task -
- * the task to be scheduled
- * @throws InterruptedException -
- * if the queue is interrupted
- */
- public void addIndexableDocumentTask(final Future task)
- throws InterruptedException {
- if (this.isDestroyed.get())
- throw new IllegalStateException(
- "Indexer has already been destroyed");
- this.futurQueue.put(task);
- }
-
- /*
- * a added doc should not be in the index, be sure and delete possible
- * duplicates
- */
- protected synchronized void addDocument(IndexDocument indexable)
- throws IOException {
- if (!indexable.isInsert())
- throw new GdataIndexerException(
- "Index action must be set to insert");
- setAction(indexable);
- doWrite(indexable);
- this.docsAdded.incrementAndGet();
-
- }
-
- private void setAction(IndexDocument doc) {
- Integer docCountToKeep = this.action.get(doc);
- if (!doc.isDelete() && (docCountToKeep == null || docCountToKeep == 0)) {
- /*
- * add a ONE for ONE documents to keep for this IndexDocument when
- * doDelete. doDelete will keep the latest added document and
- * deletes all other documents for this IndexDocument e.g. all
- * duplicates
- */
- this.action.put(doc, ONE);
- } else if (doc.isDelete()
- && (docCountToKeep == null || docCountToKeep > 0)) {
- /*
- * add a zero for zero documents to keep for this IndexDocument when
- * doDelete
- */
- this.action.put(doc, ZERO);
- }
- }
-
- protected synchronized void updateDocument(IndexDocument indexable)
- throws IOException {
- if (!indexable.isUpdate())
- throw new GdataIndexerException(
- "Index action must be set to update");
- setAction(indexable);
- doWrite(indexable);
- this.docsUpdated.incrementAndGet();
- }
-
- protected synchronized void deleteDocument(IndexDocument indexable) {
- if (!indexable.isDelete())
- throw new GdataIndexerException(
- "Index action must be set to delete");
-
- setAction(indexable);
- this.docsDeleted.incrementAndGet();
- }
-
- /**
- * This method commits all changes to the index and closes all open
- * resources (e.g. IndexWriter and IndexReader). This method notifies all
- * registered Commit listeners if invoked.
- *
- * @param optimize -
- * true if the index should be optimized on this
- * commit
- * @throws IOException -
- * if an IOException occurs
- */
- protected synchronized void commit(boolean optimize) throws IOException {
- if (LOG.isInfoEnabled())
- LOG.info("Commit called with optimize = " + optimize);
-
- int changes = this.docsAdded.intValue() + this.docsDeleted.intValue()
- + this.docsUpdated.intValue();
- /*
- * don't call listeners to prevent unnecessary close / open of searchers
- */
- if (changes == 0)
- return;
- this.committed.incrementAndGet();
- if(optimize)
- this.optimized.incrementAndGet();
- doDeltete();
- if (optimize) {
- closeSearcher();
- openWriter();
- this.writer.optimize();
- }
- closeSearcher();
- closeWriter();
- this.docsAdded.set(0);
- this.docsDeleted.set(0);
- this.docsUpdated.set(0);
- notifyCommitListeners(this.serviceConfiguration.getName());
-
- }
-
- /**
- * Registers a new IndexEventListener. All registered listeners will be
- * notified if the index has been committed.
- *
- * @param listener -
- * the listener to register
- *
- */
- public void registerIndexEventListener(IndexEventListener listener) {
- if (listener == null || this.listeners.contains(listener))
- return;
- this.listeners.add(listener);
- }
-
- /**
- * Removes a registered IndexEventListener
- *
- * @param listener -
- * the listener to remove
- */
- public void removeIndexEventListener(IndexEventListener listener) {
-
- if (listener == null || !this.listeners.contains(listener))
- return;
- this.listeners.remove(listener);
- }
-
- protected void notifyCommitListeners(String serviceId) {
- if (LOG.isInfoEnabled())
- LOG.info("notify commit event listeners for service id: "
- + serviceId + " -- current size of registered listeners: "
- + this.listeners.size());
- for (IndexEventListener listener : this.listeners) {
- listener.commitCallBack(serviceId);
- }
- }
-
- protected void closeWriter() throws IOException {
- try {
- if (this.writer != null)
- this.writer.close();
- } finally {
- this.writer = null;
- }
- }
-
- protected void closeSearcher() throws IOException {
- try {
- if (this.searcher != null)
- this.searcher.close();
- } finally {
- this.searcher = null;
- }
- }
-
- protected void openSearcher() throws IOException {
- if (this.searcher == null)
- this.searcher = new IndexSearcher(this.dir);
- }
-
- protected void openWriter() throws IOException {
- openWriter(false);
- }
-
- private void openWriter(boolean create) throws IOException {
- if (this.writer == null)
- this.writer = new GDataIndexWriter(this.dir, create,
- this.serviceConfiguration);
- }
-
- /*
- * This should only be called in a synchronized block
- */
- protected void doWrite(IndexDocument document) throws IOException {
- closeSearcher();
- openWriter();
- this.writer.addDocument(document.getWriteable());
-
- }
-
- // only access synchronized
- int[] documentNumber;
-
- /*
- * This should only be called in a synchronized block
- */
- protected void doDeltete() throws IOException {
- if (this.action.size() == 0)
- return;
- if (LOG.isInfoEnabled())
- LOG
- .info("Deleting documents and duplicates from index, size of IndexDocuments "
- + this.action.size());
- closeWriter();
- openSearcher();
-
- IndexReader reader = this.searcher.getIndexReader();
- TermDocs termDocs = reader.termDocs();
- for (Map.Entry entry : this.action.entrySet()) {
- IndexDocument indexDocument = entry.getKey();
- Integer docToKeep = entry.getValue();
- // extend the array if needed
- if (this.documentNumber == null
- || docToKeep > this.documentNumber.length)
- this.documentNumber = new int[docToKeep];
-
- for (int i = 0; i < this.documentNumber.length; i++) {
-
- this.documentNumber[i] = -1;
- }
- /*
- * get the term to find the document from the document itself
- */
- termDocs.seek(indexDocument.getDeletealbe());
-
- int pos = 0;
-
- while (termDocs.next()) {
- /*
- * if this is a pure delete just delete it an continue
- */
- if (docToKeep == 0) {
- reader.deleteDocument(termDocs.doc());
- continue;
- }
-
- int prev = this.documentNumber[pos];
- this.documentNumber[pos] = termDocs.doc();
- if (prev != -1) {
- reader.deleteDocument(prev);
- }
-
- if (++pos >= docToKeep)
- pos = 0;
-
- }
- }
- /*
- * clear the map after all documents are processed
- */
- this.action.clear();
- closeSearcher();
- }
-
- protected synchronized void destroy() throws IOException {
- this.isDestroyed.set(true);
- if (!this.indexTask.isStopped())
- this.indexTask.stop();
- this.futurQueue.add(new FinishingFuture());
- this.indexTaskExecutor.shutdown();
- closeWriter();
- closeSearcher();
- if (LOG.isInfoEnabled())
- LOG.info("Destroying GdataIndexer for service -- "
- + this.serviceConfiguration.getName());
-
- }
-
- // Used only for testing
- protected synchronized IndexWriter getWriter() {
- return this.writer;
- }
-
- /**
- * This factory method creates a new GDataIndexer using a instance of
- * {@link org.apache.lucene.gdata.search.index.IndexTask}
- *
- * @param config -
- * the config to be used to configure the indexer
- * @param dir -
- * the directory to index to
- * @param create -
- * true to create a new index, false
- * to use the existing one.
- * @return - a new GDataIndexer instance
- * @throws IOException -
- * if an IOException occurs while initializing the indexer
- */
- public static synchronized GDataIndexer createGdataIndexer(
- final IndexSchema config, Directory dir, boolean create)
- throws IOException {
- GDataIndexer retVal = new GDataIndexer(config, dir, create);
- retVal.setIndexTask(new IndexTask(retVal, retVal.futurQueue));
- retVal.init();
- return retVal;
- }
-
- /**
- * This factory method creates a new GDataIndexer using a instance of
- * {@link org.apache.lucene.gdata.search.index.TimedIndexTask}.
- * This indexer will automatically commit the index
- * if no modification to the index occur for the given time. The used time
- * unit is {@link TimeUnit#SECONDS}. Values less than the default value
- * will be ignored. For the default value see
- * {@link org.apache.lucene.gdata.search.index.TimedIndexTask}.
- *
- * @param config -
- * the config to be used to configure the indexer
- * @param dir -
- * the directory to index to
- * @param create -
- * true to create a new index, false
- * to use the existing one.
- * @param commitTimeout -
- * the amount of seconds to wait until a commit should be
- * scheduled
- * @return - a new GDataIndexer instance
- * @throws IOException -
- * if an IOException occurs while initializing the indexer
- */
- public static synchronized GDataIndexer createTimedGdataIndexer(
- final IndexSchema config, Directory dir, boolean create,
- long commitTimeout) throws IOException {
-
- GDataIndexer retVal = new GDataIndexer(config, dir, create);
- retVal.setIndexTask(new TimedIndexTask(retVal, retVal.futurQueue,
- commitTimeout));
- retVal.init();
- return retVal;
- }
-
- @SuppressWarnings("unused")
- static final class FinishingFuture implements Future {
-
- /**
- * @see java.util.concurrent.Future#cancel(boolean)
- */
- public boolean cancel(boolean arg0) {
-
- return false;
- }
-
- /**
- * @see java.util.concurrent.Future#isCancelled()
- */
- public boolean isCancelled() {
-
- return false;
- }
-
- /**
- * @see java.util.concurrent.Future#isDone()
- */
- public boolean isDone() {
-
- return true;
- }
-
- /**
- * @see java.util.concurrent.Future#get()
- */
- @SuppressWarnings("unused")
- public IndexDocument get() throws InterruptedException,
- ExecutionException {
-
- return null;
- }
-
- /**
- * @see java.util.concurrent.Future#get(long,
- * java.util.concurrent.TimeUnit)
- */
- @SuppressWarnings("unused")
- public IndexDocument get(long arg0, TimeUnit arg1)
- throws InterruptedException, ExecutionException,
- TimeoutException {
-
- return null;
- }
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/GdataIndexerException.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/GdataIndexerException.java
deleted file mode 100755
index d9b57dee935..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/GdataIndexerException.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.search.index;
-
-/**
- * This exception will be thrown if an exception in the indexing component
- * occurs
- *
- *
- *
- */
-public class GdataIndexerException extends RuntimeException {
-
- private static final long serialVersionUID = -8245420079471690182L;
-
- /**
- * Creates a new GdataIndexerException
- */
- public GdataIndexerException() {
- super();
-
- }
-
- /**
- * Creates a new GdataIndexerException with a new exception message
- *
- * @param arg0 -
- * exception message
- */
- public GdataIndexerException(String arg0) {
- super(arg0);
-
- }
-
- /**
- * Creates a new GdataIndexerException with a new exception message and a
- * root cause
- *
- * @param arg0 -
- * exception message
- * @param arg1 -
- * the root cause
- */
- public GdataIndexerException(String arg0, Throwable arg1) {
- super(arg0, arg1);
-
- }
-
- /**
- * Creates a new GdataIndexerException with a root cause
- *
- * @param arg0 -
- * the root cause
- */
- public GdataIndexerException(Throwable arg0) {
- super(arg0);
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/IndexAction.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/IndexAction.java
deleted file mode 100755
index 24b82e808e3..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/IndexAction.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.index;
-
-/**
- * This enum defines all possible actions on a GData index.
- *
- * @see org.apache.lucene.gdata.search.index.IndexDocument
- * @see org.apache.lucene.gdata.search.index.IndexDocumentBuilderTask
- *
- *
- */
-public enum IndexAction {
- /**
- * update action
- */
- UPDATE, /**
- * delete action
- */
- DELETE, /**
- * insert / add action
- */
- INSERT
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/IndexController.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/IndexController.java
deleted file mode 100755
index 0dda066a04a..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/IndexController.java
+++ /dev/null
@@ -1,547 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.index;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-import java.util.Map.Entry;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.data.ServerBaseFeed;
-import org.apache.lucene.gdata.search.GDataSearcher;
-import org.apache.lucene.gdata.search.SearchComponent;
-import org.apache.lucene.gdata.search.StandardGdataSearcher;
-import org.apache.lucene.gdata.search.config.IndexSchema;
-import org.apache.lucene.gdata.server.registry.Component;
-import org.apache.lucene.gdata.server.registry.ComponentType;
-import org.apache.lucene.gdata.server.registry.EntryEventListener;
-import org.apache.lucene.gdata.server.registry.GDataServerRegistry;
-import org.apache.lucene.gdata.server.registry.ProvidedService;
-import org.apache.lucene.gdata.utils.ReferenceCounter;
-import org.apache.lucene.index.IndexFileNameFilter;
-import org.apache.lucene.search.Filter;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.FSDirectory;
-
-/**
- * Default implementation of the {@link SearchComponent} interface. All actions
- * on the index will be controlled from this class. Only this class grants read
- * or write actions access to the index.
- *
- *
- *
- */
-@Component(componentType = ComponentType.SEARCHCONTROLLER)
-public class IndexController implements SearchComponent, IndexEventListener,
- EntryEventListener {
- static final Log LOG = LogFactory.getLog(IndexController.class);
-
- private final AtomicBoolean isInitialized = new AtomicBoolean(false);
-
- private final AtomicBoolean destroyed = new AtomicBoolean(false);
-
- protected Map indexerMap;
-
- private final ExecutorService taskExecutor;
-
- /**
- * Creates a new IndexController -- call
- * {@link IndexController#initialize()} to set up the controller.
- */
- public IndexController() {
- this.taskExecutor = Executors.newCachedThreadPool();
- }
-
- /**
- * @see org.apache.lucene.gdata.search.SearchComponent#initialize()
- */
- public synchronized void initialize() {
- if (this.isInitialized.get())
- throw new IllegalStateException(
- "IndexController is already initialized");
- this.destroyed.set(false);
- /*
- * if this fails the server must not startup --> throw runtime exception
- */
- GDataServerRegistry.getRegistry().registerEntryEventListener(this);
-
- GDataServerRegistry.getRegistry().registerEntryEventListener(this);
- Collection services = GDataServerRegistry
- .getRegistry().getServices();
- this.indexerMap = new ConcurrentHashMap(services
- .size());
-
- for (ProvidedService service : services) {
- IndexSchema schema = service.getIndexSchema();
- /*
- * initialize will fail if mandatory values are not set. This is
- * just a
- */
- schema.initialize();
- addIndexSchema(schema);
- }
- this.isInitialized.set(true);
-
-
- }
-
- /*
- * add a schema to the index controller and create the indexer. create
- * directories and check out existing indexes
- */
- protected void addIndexSchema(final IndexSchema schema) {
- checkDestroyed();
- if (schema.getName() == null)
- throw new IllegalStateException(
- "schema has no name -- is not associated with any service");
- if (this.indexerMap.containsKey(schema.getName()))
- throw new IllegalStateException("schema for service "
- + schema.getName() + " is already registered");
- if (LOG.isInfoEnabled())
- LOG.info("add new IndexSchema for service " + schema.getName()
- + " -- " + schema);
- try {
- ServiceIndex bean = createIndexer(schema);
- ReferenceCounter searcher = getNewServiceSearcher(bean.getDirectory());
- bean.setSearcher(searcher);
- this.indexerMap.put(schema.getName(), bean);
- } catch (IOException e) {
- LOG.error("Can not create indexer for service " + schema.getName(),
- e);
- throw new GdataIndexerException(
- "Can not create indexer for service " + schema.getName(), e);
- }
-
- }
-
- protected ServiceIndex createIndexer(final IndexSchema schema) throws IOException {
- GDataIndexer indexer;
- File indexLocation = createIndexLocation(schema.getIndexLocation(),
- schema.getName());
- boolean create = createIndexDirectory(indexLocation);
- Directory dir = FSDirectory.getDirectory(indexLocation, create);
- if (LOG.isInfoEnabled())
- LOG.info("Create new Indexer for IndexSchema: " + schema);
- /*
- * timed or committed indexer?! keep the possibility to let users decide
- * to use scheduled commits
- */
- if (schema.isUseTimedIndexer())
- indexer = GDataIndexer.createTimedGdataIndexer(schema, dir, create,
- schema.getIndexerIdleTime());
- else
- indexer = GDataIndexer.createGdataIndexer(schema, dir, create);
- indexer.registerIndexEventListener(this);
- return new ServiceIndex(schema, indexer, dir);
- }
-
- /*
- * if this fails the server must not startup!!
- */
- protected File createIndexLocation(final String path,final String name) {
- if (path == null || name == null)
- throw new GdataIndexerException(
- "Path or Name of the index location is not set Path: "
- + path + " name: " + name);
- /*
- * check if parent e.g. the configured path is a directory
- */
- File parent = new File(path);
- if (!parent.isDirectory())
- throw new IllegalArgumentException(
- "the given path is not a directory -- " + path);
- /*
- * try to create and throw ex if fail
- */
- if (!parent.exists())
- if (!parent.mkdir())
- throw new RuntimeException("Can not create directory -- "
- + path);
- /*
- * try to create and throw ex if fail
- */
- File file = new File(parent, name);
- if (file.isFile())
- throw new IllegalArgumentException(
- "A file with the name"
- + name
- + " already exists in "
- + path
- + " -- a file of the name of the service must not exist in the index location");
-
- if (!file.exists()) {
- if (!file.mkdir())
- throw new RuntimeException("Can not create directory -- "
- + file.getAbsolutePath());
- }
- return file;
- }
-
- protected boolean createIndexDirectory(final File file) {
- /*
- * use a lucene filename filter to figure out if there is an existing
- * index in the defined directory
- */
- String[] luceneFiles = file.list(new IndexFileNameFilter());
- return !(luceneFiles.length > 0);
-
- }
-
- /**
- * @see org.apache.lucene.gdata.search.index.IndexEventListener#commitCallBack(java.lang.String)
- */
- public synchronized void commitCallBack(final String service) {
- checkDestroyed();
- if(LOG.isInfoEnabled())
- LOG.info("CommitCallback triggered - register new searcher for service: "+service);
- /*
- * get the old searcher and replace it if possible.
- */
- ServiceIndex index = this.indexerMap.get(service);
- ReferenceCounter searcher = index.getSearcher();
-
- try {
- index.setSearcher(getNewServiceSearcher(index.getDirectory()));
- } catch (IOException e) {
- LOG.fatal("Can not create new Searcher -- keep the old one ", e);
- return;
- }
- /*
- * if new searcher if registered decrement old one to get it destroyed if unused
- */
- searcher.decrementRef();
- }
- /*
- * create a new ReferenceCounter for the indexSearcher.
- * The reference is already incremented before returned
- */
- private ReferenceCounter getNewServiceSearcher(final Directory dir)
- throws IOException {
- if(LOG.isInfoEnabled())
- LOG.info("Create new ServiceSearcher");
- IndexSearcher searcher = new IndexSearcher(dir);
- ReferenceCounter holder = new ReferenceCounter(
- searcher) {
-
- @Override
- protected void close() {
- try {
- LOG
- .info("Close IndexSearcher -- Zero references remaining");
- this.resource.close();
- } catch (IOException e) {
- LOG.warn("Can not close IndexSearcher -- ", e);
- }
- }
-
- };
- holder.increamentReference();
- return holder;
- }
-
- /**
- * @see org.apache.lucene.gdata.server.registry.EntryEventListener#fireUpdateEvent(org.apache.lucene.gdata.data.ServerBaseEntry)
- */
- public void fireUpdateEvent(final ServerBaseEntry entry) {
- createNewIndexerTask(entry, IndexAction.UPDATE);
- }
-
- /**
- * @see org.apache.lucene.gdata.server.registry.EntryEventListener#fireInsertEvent(org.apache.lucene.gdata.data.ServerBaseEntry)
- */
- public void fireInsertEvent(final ServerBaseEntry entry) {
- createNewIndexerTask(entry, IndexAction.INSERT);
- }
-
- /**
- * @see org.apache.lucene.gdata.server.registry.EntryEventListener#fireDeleteEvent(org.apache.lucene.gdata.data.ServerBaseEntry)
- */
- public void fireDeleteEvent(final ServerBaseEntry entry) {
- createNewIndexerTask(entry, IndexAction.DELETE);
-
- }
-
- /**
- * @see org.apache.lucene.gdata.server.registry.EntryEventListener#fireDeleteAllEntries(org.apache.lucene.gdata.data.ServerBaseFeed)
- */
- public void fireDeleteAllEntries(final ServerBaseFeed feed) {
- createNewDeleteAllEntriesTask(feed);
- }
-
- private void createNewDeleteAllEntriesTask(final ServerBaseFeed feed){
- checkDestroyed();
- checkInitialized();
- if(LOG.isInfoEnabled())
- LOG.info("Deleting all entries for feed dispatch new IndexDocumentBuilder -- "+feed.getId());
- String serviceName = feed.getServiceConfig().getName();
- ServiceIndex bean = this.indexerMap.get(serviceName);
- if (bean == null)
- throw new RuntimeException("no indexer for service " + serviceName
- + " registered");
- Lock lock = bean.getLock();
- lock.lock();
- try{
- IndexDocumentBuilder callable = new IndexFeedDeleteTask(feed.getId());
- sumbitTask(callable,bean.getIndexer());
- }finally{
- lock.unlock();
- }
-
-
- }
-
- // TODO add test for this method!!
- private void createNewIndexerTask(final ServerBaseEntry entry, final IndexAction action) {
- checkDestroyed();
- checkInitialized();
- String serviceName = entry.getServiceConfig().getName();
- if (LOG.isInfoEnabled())
- LOG.info("New Indexer Task submitted - Action: " + action
- + " for service: " + serviceName);
- ServiceIndex bean = this.indexerMap.get(serviceName);
- if (bean == null)
- throw new RuntimeException("no indexer for service " + serviceName
- + " registered");
- /*
- * lock on service to synchronize the event order. This lock has
- * fairness parameter set to true. Grant access to the longest waiting
- * thread. Using fairness is slower but is acceptable in this context
- */
- Lock lock = bean.getLock();
- lock.lock();
- try {
- IndexSchema schema = bean.getSchema();
- boolean commitAfter = bean.incrementActionAndReset(schema.getCommitAfterDocuments());
- IndexDocumentBuilder callable = new IndexDocumentBuilderTask(
- entry, bean.getSchema(), action, commitAfter,bean.getOptimize(schema.getOptimizeAfterCommit()));
- sumbitTask(callable,bean.getIndexer());
- } finally {
- /*
- * make sure to unlock
- */
- lock.unlock();
- }
-
- }
-
- private void sumbitTask(final Callable callable, final GDataIndexer indexer){
- Future task = this.taskExecutor.submit(callable);
- try {
- indexer.addIndexableDocumentTask(task);
- } catch (InterruptedException e) {
- throw new GdataIndexerException(
- "Can not accept any index tasks -- interrupted. ", e);
-
- }
- }
-
- /**
- * @see org.apache.lucene.gdata.search.SearchComponent#getServiceSearcher(org.apache.lucene.gdata.server.registry.ProvidedService)
- */
- public GDataSearcher getServiceSearcher(final ProvidedService service) {
- checkDestroyed();
- checkInitialized();
-
- /*
- * get and increment. searcher will be decremented if GdataSearcher is
- * closed
- */
- ReferenceCounter searcher;
- synchronized (this) {
- ServiceIndex serviceIndex = this.indexerMap.get(service.getName());
- if(serviceIndex == null)
- throw new RuntimeException("no index for service "+service.getName());
- searcher = serviceIndex.getSearcher();
- searcher.increamentReference();
- }
-
- return new StandardGdataSearcher(searcher);
- }
-
- /**
- * @see org.apache.lucene.gdata.search.SearchComponent#destroy()
- */
- public synchronized void destroy() {
- checkDestroyed();
- if(!this.isInitialized.get())
- return;
- this.destroyed.set(true);
- this.isInitialized.set(false);
- LOG.info("Shutting down IndexController -- destroy has been called");
- Set> entrySet = this.indexerMap.entrySet();
- for (Entry entry : entrySet) {
- ServiceIndex bean = entry.getValue();
- bean.getSearcher().decrementRef();
- GDataIndexer indexer = bean.getIndexer();
- try {
- indexer.destroy();
- } catch (IOException e) {
- LOG.warn("Can not destroy indexer for service: "
- + bean.getSchema().getName(), e);
- }
- }
- this.taskExecutor.shutdown();
- this.indexerMap.clear();
- }
-
- private void checkDestroyed(){
- if (this.destroyed.get())
- throw new IllegalStateException(
- "IndexController has been destroyed");
- }
- private void checkInitialized(){
- if(!this.isInitialized.get())
- throw new IllegalStateException(
- "IndexController has not been initialized");
- }
-
-
- final static class ServiceIndex {
- private AtomicInteger actionCount = new AtomicInteger(0);
-
- private AtomicInteger commitCount = new AtomicInteger(0);
-
- private final Lock lock;
-
- private final IndexSchema schema;
-
- private final GDataIndexer indexer;
-
- private final Directory directory;
-
- private Filter addedDocumentFilter;
-
- private ReferenceCounter searcher;
-
- // private final Map actionMap;
-
-
-
- ServiceIndex(final IndexSchema schema, GDataIndexer indexer,
- Directory directory) {
- this.schema = schema;
- this.indexer = indexer;
- this.lock = new ReentrantLock(true);
- this.directory = directory;
- // this.actionMap = new HashMap(128);
- }
-
- Lock getLock() {
- return this.lock;
- }
-
- /**
- * @return Returns the indexer.
- */
- GDataIndexer getIndexer() {
- return this.indexer;
- }
-
- /**
- * @return Returns the schema.
- */
- IndexSchema getSchema() {
- return this.schema;
- }
-
- // public void addAction(IndexAction action,ServerBaseEntry entry){
- //
- // }
- /**
- * Counts how many actions have been executed on this index
- *
- * @param reset - count mod reset value equals 0 causes a commit
- *
- * @return true if the count mod reset value equals 0, otherwise
- * false;
- */
- boolean incrementActionAndReset(int reset) {
- if (this.actionCount.incrementAndGet()%reset == 0) {
- return true;
- }
- return false;
- }
-
- /**
- * @return Returns the directory.
- */
- public Directory getDirectory() {
- return this.directory;
- }
- /**
- * @return Returns the addedDocumentFilter.
- */
- public Filter getAddedDocumentFilter() {
- return this.addedDocumentFilter;
- }
-
- /**
- * @param addedDocumentFilter The addedDocumentFilter to set.
- */
- public void setAddedDocumentFilter(Filter addedDocumentFilter) {
- this.addedDocumentFilter = addedDocumentFilter;
- }
-
- /**
- * @return Returns the searcher.
- */
- public ReferenceCounter getSearcher() {
- return this.searcher;
- }
-
- /**
- * @param searcher The searcher to set.
- */
- public void setSearcher(ReferenceCounter searcher) {
- this.searcher = searcher;
- }
-
- /**
- * @return Returns the commitCount.
- */
- public int commitCountIncrement() {
- return this.commitCount.incrementAndGet();
- }
- /**
- * @param reset - the number after how many commits the index should be optimized
- * @return true if and only if the commit count mod reset equals 0, otherwise false.
- */
- public boolean getOptimize(int reset){
- if(this.commitCount.get()%reset == 0){
- return true;
- }
- return false;
- }
- }
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/IndexDocument.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/IndexDocument.java
deleted file mode 100755
index 631a722c1b7..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/IndexDocument.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.index;
-
-import org.apache.lucene.document.Document;
-import org.apache.lucene.index.Term;
-
-/**
- * IndexDocument encapsulates the acual entity to store, update or delete. All
- * infomation to process the action on this document are provided via this
- * interface.
- *
- * This enables the GDataIndexer to index every kind of document. All the
- * processing of the original document happens somewhere behind this facade.
- * {@link org.apache.lucene.gdata.search.index.IndexDocumentBuilderTask} passed
- * to the {@link org.apache.lucene.gdata.search.index.GDataIndexer} task queue
- * produce instances of this interface concurrently.
- *
- *
- *
- *
- *
- */
-public interface IndexDocument {
- /**
- * the index field to identify a document in the index. This acts as a
- * primary key to fetch the entire entry from the storage
- */
- public static final String FIELD_ENTRY_ID = "enryId";
- /**
- * the index field to associate a document with a specific feed
- */
- public static final String FIELD_FEED_ID = "feedId";
- public static final String GDATA_MANDATORY_FIELD_UPDATED = "updated";
- public static final String GDATA_MANDATORY_FIELD_CATEGORY = "category";
-
- /**
- * @return true if and only if this document is an update,
- * otherwise false
- */
- public abstract boolean isUpdate();
-
- /**
- * @return true if and only if this document is a delete,
- * otherwise false
- */
- public abstract boolean isDelete();
-
- /**
- * @return true if and only if this document is an insert,
- * otherwise false
- */
- public abstract boolean isInsert();
-
- /**
- *
- * @return - the lucene document to write to the index if the action is
- * insert or updated, otherwise it will return null;
- */
- public abstract Document getWriteable();
-
- /**
- * @return - a term that identifies this document in the index to delete
- * this document on a update or delete
- */
- public abstract Term getDeletealbe();
-
- /**
- * Indicates that the index should be commited after this document has been
- * processed
- *
- * @return true if the index should be commited after this
- * document, otherwise false
- */
- public abstract boolean commitAfter();
-
- /**
- * Indicates that the index should be optimized after this document has been
- * processed
- *
- *
- * @return true if the index should be optimized after this
- * document, otherwise false
- */
- public abstract boolean optimizeAfter();
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/IndexDocumentBuilder.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/IndexDocumentBuilder.java
deleted file mode 100755
index 33686c5113d..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/IndexDocumentBuilder.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.index;
-
-import java.util.concurrent.Callable;
-
-/**
- * Interface for DocumentBuilders
- *
- * @param IndexDocument implementation
- *
- */
-public interface IndexDocumentBuilder extends Callable{
- /**
- * @see java.util.concurrent.Callable#call()
- */
- public T call() throws GdataIndexerException;
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/IndexDocumentBuilderTask.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/IndexDocumentBuilderTask.java
deleted file mode 100755
index 28bf08d97ee..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/IndexDocumentBuilderTask.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.search.index;
-
-import java.util.Collection;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.search.analysis.ContentStrategy;
-import org.apache.lucene.gdata.search.analysis.Indexable;
-import org.apache.lucene.gdata.search.analysis.NotIndexableException;
-import org.apache.lucene.gdata.search.config.IndexSchema;
-import org.apache.lucene.gdata.search.config.IndexSchemaField;
-
-/**
- * This callable does all of the entiti processing concurrently while added to
- * the {@link org.apache.lucene.gdata.search.index.GDataIndexer} task queue;
- *
- * @see org.apache.lucene.gdata.search.analysis.Indexable
- * @see org.apache.lucene.gdata.search.analysis.ContentStrategy
- *
- *
- */
-class IndexDocumentBuilderTask implements IndexDocumentBuilder {
- private static final Log LOG = LogFactory
- .getLog(IndexDocumentBuilderTask.class);
-
- private final ServerBaseEntry entry;
-
- private final IndexSchema schema;
-
- private final IndexAction action;
-
- private final boolean commitAfter;
- private final boolean optimizeAfter;
- protected IndexDocumentBuilderTask(final ServerBaseEntry entry,
- final IndexSchema schema, IndexAction action, boolean commitAfter, boolean optimizeAfter) {
- /*
- * omit check for null parameter this happens in the controller.
- */
- this.schema = schema;
- this.entry = entry;
- this.action = action;
- this.commitAfter = commitAfter;
- this.optimizeAfter = optimizeAfter;
- }
-
- /**
- * @see java.util.concurrent.Callable#call()
- */
- @SuppressWarnings("unchecked")
- public T call() throws GdataIndexerException {
-
- Collection fields = this.schema.getFields();
- GDataIndexDocument document = new GDataIndexDocument(this.action,
- this.entry.getId(),this.entry.getFeedId(), this.commitAfter,this.optimizeAfter);
- if(this.action != IndexAction.DELETE){
- int addedFields = 0;
- for (IndexSchemaField field : fields) {
- /*
- * get the strategy to process the field
- */
- ContentStrategy strategy = ContentStrategy.getFieldStrategy(field);
- if (LOG.isInfoEnabled())
- LOG.info("Process indexable for " + field);
- try {
- /*
- * get the indexable via the factory method to enable new /
- * different implementation of the interface (this could be a
- * faster dom impl e.g. dom4j)
- */
- strategy.processIndexable(Indexable.getIndexable(this.entry));
- addedFields++;
- } catch (NotIndexableException e) {
- LOG.warn("Can not create field for " + field+" field will be skipped -- reason: ", e);
- continue;
- }
-
- document.addField(strategy);
-
- }
- if(addedFields == 0)
- throw new GdataIndexerException("No field added to document for Schema: "+this.schema);
- }
- return (T)document;
- }
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/IndexEventListener.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/IndexEventListener.java
deleted file mode 100755
index cf10a24f0ba..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/IndexEventListener.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.index;
-
-/**
- * This interface should be implemented by classes need to be notified when an
- * index is commited
- *
- *
- *
- */
-public interface IndexEventListener {
-
- /**
- * This method will be invoked by an instance of {@link GDataIndexer} if the
- * index is commited
- *
- * @param service -
- * the name of the service the invoking indexer runs for
- */
- public abstract void commitCallBack(String service);
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/IndexFeedDeleteTask.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/IndexFeedDeleteTask.java
deleted file mode 100755
index 4c1f24e04f4..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/IndexFeedDeleteTask.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.search.index;
-
-import org.apache.lucene.document.Document;
-import org.apache.lucene.index.Term;
-
-/**
- * This IndexDocumentBuilder deletes a entire feed form the index the builder is
- * passed to if the feed has any entries in the search index. Each created and
- * passed IndexFeedDeleteTask forces a commit.
- *
- *
- *
- */
-public class IndexFeedDeleteTask implements IndexDocumentBuilder {
- private final String feedId;
-
- IndexFeedDeleteTask(String feedId) {
- if (feedId == null)
- throw new IllegalArgumentException("feedId must not be null");
- this.feedId = feedId;
-
- }
-
- /**
- * @see org.apache.lucene.gdata.search.index.IndexDocumentBuilder#call()
- */
- public IndexDocument call() throws GdataIndexerException {
- return new FeedDeleteDocument(this.feedId);
-
- }
-
- private static class FeedDeleteDocument implements IndexDocument {
- private final Term deleteTerm;
-
- FeedDeleteDocument(String feedId) {
- this.deleteTerm = new Term(FIELD_FEED_ID, feedId);
- }
-
- /**
- * @see org.apache.lucene.gdata.search.index.IndexDocument#isUpdate()
- */
- public boolean isUpdate() {
-
- return false;
- }
-
- /**
- * @see org.apache.lucene.gdata.search.index.IndexDocument#isDelete()
- */
- public boolean isDelete() {
-
- return true;
- }
-
- /**
- * @see org.apache.lucene.gdata.search.index.IndexDocument#isInsert()
- */
- public boolean isInsert() {
-
- return false;
- }
-
- /**
- * @see org.apache.lucene.gdata.search.index.IndexDocument#getWriteable()
- */
- public Document getWriteable() {
-
- return null;
- }
-
- /**
- * @see org.apache.lucene.gdata.search.index.IndexDocument#getDeletealbe()
- */
- public Term getDeletealbe() {
-
- return this.deleteTerm;
- }
-
- /**
- * @see org.apache.lucene.gdata.search.index.IndexDocument#commitAfter()
- */
- public boolean commitAfter() {
- /*
- * force commit after delete a entire feed and its entries
- */
- return true;
- }
-
- /**
- * @see org.apache.lucene.gdata.search.index.IndexDocument#optimizeAfter()
- */
- public boolean optimizeAfter() {
-
- return false;
- }
-
- }
-
- /**
- * @see java.lang.Object#equals(java.lang.Object)
- */
- @Override
- public boolean equals(Object obj) {
- if(obj == null)
- return false;
- if (obj instanceof IndexFeedDeleteTask) {
- IndexFeedDeleteTask other = (IndexFeedDeleteTask) obj;
- return this.feedId.equals(other.feedId);
-
- }
- return false;
- }
-
- /**
- * @see java.lang.Object#hashCode()
- */
- @Override
- public int hashCode() {
-
- return this.feedId.hashCode();
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/IndexLogReader.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/IndexLogReader.java
deleted file mode 100755
index 2cd9f23c644..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/IndexLogReader.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.search.index;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.xml.sax.Attributes;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.InputSource;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.helpers.XMLReaderFactory;
-
-/**
- *
- *
- */
-class IndexLogReader {
-
- static Map readIndexLog(File indexLogFile, Map contentMap) throws SAXException,IOException{
- XMLReader reader = XMLReaderFactory.createXMLReader();
-
- Map logContent = contentMap;
- if(logContent == null)
- logContent = new HashMap(64);
-
- reader.setContentHandler(new IndexLogContentHandler(logContent));
- InputSource source = new InputSource(new FileInputStream(indexLogFile));
- try{
- reader.parse(source);
- }catch (SAXException e) {
- /*
- * try to append the Root element end
- * this happens if the server crashes.
- * If it dies while writing an entry the log file has to be fixed manually
- */
- IndexLogWriter.tryCloseRoot(indexLogFile);
- source = new InputSource(new FileInputStream(indexLogFile));
- reader.parse(source);
- }
- return logContent;
- }
-
-
- private static class IndexLogContentHandler implements ContentHandler {
- private final Map logContent;
- private String currentID;
- private String currentAction;
- private boolean isId;
- private boolean isAction;
- IndexLogContentHandler(final Map content) {
- this.logContent = content;
- }
-
- /**
- * @see org.xml.sax.ContentHandler#setDocumentLocator(org.xml.sax.Locator)
- */
- public void setDocumentLocator(Locator locator) {
- }
-
- /**
- * @see org.xml.sax.ContentHandler#startDocument()
- */
- public void startDocument() throws SAXException {
- }
-
- /**
- * @see org.xml.sax.ContentHandler#endDocument()
- */
- public void endDocument() throws SAXException {
- }
-
- /**
- * @see org.xml.sax.ContentHandler#startPrefixMapping(java.lang.String, java.lang.String)
- */
- public void startPrefixMapping(String prefix, String uri)
- throws SAXException {
- }
-
- /**
- * @see org.xml.sax.ContentHandler#endPrefixMapping(java.lang.String)
- */
- public void endPrefixMapping(String prefix) throws SAXException {
- }
-
- /**
- * @see org.xml.sax.ContentHandler#startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)
- */
- public void startElement(String uri, String localName, String qName,
- Attributes atts) throws SAXException {
- if(localName.equals("entryid")){
- this.isId = true;
- }else if(localName.equals("action")){
- this.isAction = true;
- }
- }
-
- /**
- * @see org.xml.sax.ContentHandler#endElement(java.lang.String, java.lang.String, java.lang.String)
- */
- public void endElement(String uri, String localName, String qName)
- throws SAXException {
- if(localName.equals("entryid")){
- this.isId = false;
- }else if(localName.equals("action")){
- this.isAction = false;
- }else if(localName.equals("indexentry")){
- this.logContent.put(this.currentID,IndexAction.valueOf(this.currentAction));
- }
- }
-
- /**
- * @see org.xml.sax.ContentHandler#characters(char[], int, int)
- */
- public void characters(char[] ch, int start, int length)
- throws SAXException {
- if(this.isId)
- this.currentID = new String(ch,start,length);
- if(this.isAction)
- this.currentAction = new String(ch,start,length);
-
- }
-
- /**
- * @see org.xml.sax.ContentHandler#ignorableWhitespace(char[], int, int)
- */
- public void ignorableWhitespace(char[] ch, int start, int length)
- throws SAXException {
- }
-
- /**
- * @see org.xml.sax.ContentHandler#processingInstruction(java.lang.String, java.lang.String)
- */
- public void processingInstruction(String target, String data)
- throws SAXException {
- }
-
- /**
- * @see org.xml.sax.ContentHandler#skippedEntity(java.lang.String)
- */
- public void skippedEntity(String name) throws SAXException {
- }
-
-
-
- }
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/IndexLogWriter.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/IndexLogWriter.java
deleted file mode 100755
index d4c6bfa9eab..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/IndexLogWriter.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.search.index;
-
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.io.RandomAccessFile;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-/**
- *
- *
- */
-class IndexLogWriter {
- private static final String LINE_BREAK = System
- .getProperty("line.separator");
-
- private static final String XMLHEADER = ""
- + LINE_BREAK;
- private static final String CHARSET = "UTF-8";
- private static final String ROOT_BEGIN = "" + LINE_BREAK;
-
- private static final String ROOT_END = "";
-
-
-
- private final BufferedWriter writer;
-
- private final AtomicBoolean isClosed;
-
- /**
- * @param file
- * @throws IOException
- *
- */
- public IndexLogWriter(File file) throws IOException {
-
- this.writer = new BufferedWriter(new OutputStreamWriter(
- new FileOutputStream(file), CHARSET));
- this.writer.write(XMLHEADER);
- this.writer.write(ROOT_BEGIN);
- this.writer.flush();
- this.isClosed = new AtomicBoolean(false);
-
- }
-
- synchronized void writeAction(String id, IndexAction action)
- throws IOException {
- if (this.isClosed.get())
- throw new IllegalStateException("Writer is already closed");
- this.writer.write(buildElement(id, action.name()));
- this.writer.flush();
- }
-
- static synchronized void tryCloseRoot(File file) throws IOException {
- /*
- * try to append the Root element end
- * this happens if the server crashes.
- * If it dies while writing an entry the log file has to be fixed manually
- */
- RandomAccessFile raFile = new RandomAccessFile(file, "rw");
- raFile.seek(raFile.length());
- raFile.write(IndexLogWriter.ROOT_END.getBytes(CHARSET));
- raFile.close();
-
-
- }
-
- private static String buildElement(String id, String action) {
- StringBuilder builder = new StringBuilder("\t")
- .append(LINE_BREAK);
- builder.append("\t\t");
- builder.append(id);
- builder.append("").append(LINE_BREAK);
- builder.append("\t\t");
- builder.append(action);
- builder.append("").append(LINE_BREAK);
- builder.append("\t").append(LINE_BREAK);
- return builder.toString();
-
- }
-
- synchronized void close() throws IOException {
- if (!this.isClosed.compareAndSet(false,true))
- throw new IllegalStateException("Writer is already closed");
- try {
- this.writer.write(ROOT_END);
- this.writer.flush();
- } finally {
- this.writer.close();
- }
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/IndexTask.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/IndexTask.java
deleted file mode 100755
index f685d21fa6e..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/IndexTask.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.search.index;
-
-import java.io.IOException;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- *
- * Class to be used inside a
- * {@link org.apache.lucene.gdata.search.index.GDataIndexer} to process the task
- * queue. This class calls the commit method of the indexer if commit is
- * scheduled.
- *
- *
- *
- */
-class IndexTask implements Runnable {
- private static final Log INNERLOG = LogFactory.getLog(IndexTask.class);
-
- private AtomicBoolean stopped = new AtomicBoolean(false);
-
- private final GDataIndexer indexer;
-
- protected AtomicBoolean commit = new AtomicBoolean(false);
-
- protected AtomicBoolean optimize = new AtomicBoolean(false);
-
- /*
- * keep protected for subclassing
- */
- protected final BlockingQueue> taskQueue;
-
- IndexTask(final GDataIndexer indexer,
- final BlockingQueue> taskQueue) {
- this.indexer = indexer;
- this.taskQueue = taskQueue;
- }
-
- /**
- * @see java.lang.Runnable#run()
- */
- public void run() {
-
- while (!this.stopped.get() || this.taskQueue.size() != 0) {
-
- try {
- /*
- * get the future from the queue and wait until processing has
- * been done
- */
- Future future = getTask();
- if (future != null) {
- IndexDocument document = future.get();
- setOptimize(document);
- processDocument(document);
- /*
- * the document contains the info for commit or optimize -->
- * this comes from the controller
- */
- if (document == null || document.commitAfter())
- this.indexer.commit(document == null ? false : this.optimize.getAndSet(false));
- }
- if (this.commit.getAndSet(false))
- this.indexer.commit(this.optimize.getAndSet(false));
-
- } catch (InterruptedException e) {
- INNERLOG.warn("Queue is interrupted exiting IndexTask -- ", e);
-
- } catch (GdataIndexerException e) {
- /*
- *
- * TODO fire callback here as well
- */
- INNERLOG.error("can not retrieve Field from IndexDocument ", e);
- } catch (ExecutionException e) {
- /*
- * TODO callback for fail this exception is caused by an
- * exception while processing the document. call back for failed
- * docs should be placed here
- */
- INNERLOG.error("Future throws execution exception ", e);
-
- } catch (IOException e) {
- INNERLOG.error("IOException thrown while processing document ",
- e);
-
- } catch (Throwable e) {
- /*
- * catch all to prevent the thread from dieing
- */
- INNERLOG.error(
- "Unexpected exception while processing document -- "
- + e.getMessage(), e);
- }
- }
- try {
- this.indexer.commit(this.optimize.getAndSet(false));
- } catch (IOException e) {
- INNERLOG.warn("commit on going down failed - "+e.getMessage(),e);
-
- }
- this.stop();
- }
- protected void setOptimize(IndexDocument document){
- if(document == null)
- return;
- this.optimize.set(document.optimizeAfter());
- }
-
- /*
- * keep this protected for subclassing see TimedIndexTask!
- */
- protected Future getTask() throws InterruptedException {
- return this.taskQueue.take();
- }
-
- private void processDocument(IndexDocument document) throws IOException {
- /*
- * a null document is used for waking up the task if the indexer has
- * been destroyed to finish up and commit. should I change this?! -->
- * see TimedIndexTask#getTask() also!!
- */
- if (document == null) {
- INNERLOG.warn("Can not process document -- is null -- run commit");
- return;
- }
- if (document.isDelete()) {
- this.indexer.deleteDocument(document);
- return;
- } else if (document.isInsert()) {
- this.indexer.addDocument(document);
- return;
- } else if (document.isUpdate()) {
- this.indexer.updateDocument(document);
- return;
- }
- /*
- * that should not happen -- anyway skip the document and write it to
- * the log
- */
- INNERLOG.warn("IndexDocument has no Action " + document);
-
- }
-
- protected boolean isStopped() {
- return this.stopped.get();
- }
-
- protected void stop() {
- this.stopped.set(true);
- }
-
-}
\ No newline at end of file
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/TimedIndexTask.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/TimedIndexTask.java
deleted file mode 100755
index 26a3654acd9..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/TimedIndexTask.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.search.index;
-
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-
-/**
- * This {@link IndexTask} will idle the given time if no task is on the queue.
- * If the idle time exceeds the task will force a commit on the index. The timer
- * will be reset if a task is on the queue.
- *
- *
- *
- */
-class TimedIndexTask extends IndexTask {
- protected final static TimeUnit TIME_UNIT = TimeUnit.SECONDS;
-
- protected final static long DEFAULT_IDLE_TIME = 30;
-
- private final long idleTime;
-
- TimedIndexTask(final GDataIndexer indexer,
- final BlockingQueue> taskQueue,
- final long idleTime) {
- super(indexer, taskQueue);
- this.idleTime = idleTime < DEFAULT_IDLE_TIME ? DEFAULT_IDLE_TIME
- : idleTime;
-
- }
-
- /**
- * @see org.apache.lucene.gdata.search.index.IndexTask#getTask()
- */
- @Override
- protected Future getTask() throws InterruptedException {
- /*
- * wait for a certain time and return null if no task is on the queue.
- * If return null --> commit will be called
- */
- Future retVal = this.taskQueue.poll(this.idleTime, TIME_UNIT);
- if(retVal== null)
- this.commit.set(true);
- return retVal;
-
- }
-
- protected long getIdleTime(){
- return this.idleTime;
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/package.html b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/package.html
deleted file mode 100755
index 7257463a2bd..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/index/package.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-Contains classes processing of documents and accessing the search index of the server
-
-
\ No newline at end of file
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/package.html b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/package.html
deleted file mode 100755
index 44809524a84..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/package.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-Classes used for query the lucene index for a specific feed instance
-
-
\ No newline at end of file
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/query/GDataQueryParser.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/query/GDataQueryParser.java
deleted file mode 100755
index 8cec53164a5..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/query/GDataQueryParser.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.search.query;
-
-import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.gdata.search.config.IndexSchema;
-import org.apache.lucene.queryParser.QueryParser;
-
-/**
- *
- *
- */
-public class GDataQueryParser extends QueryParser {
-
- /**
- * Creates a new QueryParser instance and sets the default operator to
- * {@link org.apache.lucene.queryParser.QueryParser.Operator#AND}
- *
- * @param field -
- * the parser field
- * @param analyzer -
- * the parser analyzer
- */
- public GDataQueryParser(String field, Analyzer analyzer) {
- super(field, analyzer);
- this.setDefaultOperator(Operator.AND);
- }
-
- /**
- * Creates a new QueryParser instance and sets the default operator to
- * {@link org.apache.lucene.queryParser.QueryParser.Operator#AND}.
- * The parser will use
- * {@link IndexSchema#getDefaultSearchField} as the field and
- * {@link IndexSchema#getSchemaAnalyzer()} as the analyzer.
- *
- * @param schema -
- * the schema to set the default fields
- */
- public GDataQueryParser(IndexSchema schema) {
- this(schema.getDefaultSearchField(), schema.getSchemaAnalyzer());
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/query/QueryTranslator.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/query/QueryTranslator.java
deleted file mode 100755
index de6b32278df..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/search/query/QueryTranslator.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.search.query;
-
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.lucene.gdata.search.config.IndexSchema;
-
-import com.google.gdata.data.DateTime;
-
-/**
- * Simple static methods to translate the http query to a lucene query string.
- *
- *
- */
-public class QueryTranslator {
- private static final Set STANDARD_REQUEST_PARAMETER = new HashSet(3);
- private static final String GDATA_DEFAULT_SEARCH_PARAMETER = "q";
- private static final String UPDATED_MIN = Long.toString(0);
- private static final String UPDATED_MAX = Long.toString(Long.MAX_VALUE);
-// private static final String GDATA_CATEGORY_FIEL =
-
-
-
- static{
- STANDARD_REQUEST_PARAMETER.add("max-results");
- STANDARD_REQUEST_PARAMETER.add("start-index");
- STANDARD_REQUEST_PARAMETER.add("alt");
- }
- /**
- * This method does a little preprocessing of the query. Basically it will map the given request parameters to a lucene syntax. Each
- * parameter matching a index field in the given schema will be translated into a grouped query string according to the lucene query syntax.
- *
- *
- *
title=foo bar AND "FooBar" will be title:(foo bar AND "FooBar)
- *
updated-min=2005-08-09T10:57:00-08:00 will be translated to updated:[1123613820000 TO 9223372036854775807] according to the gdata protocol
- *
- *
- * @param schema the index schema for the queried service
- * @param parameterMap - the http parameter map returning String[] instances as values
- * @param categoryQuery - the parsed category query from the request
- * @return - a lucene syntax query string
- */
- public static String translateHttpSearchRequest(IndexSchema schema,
- Map parameterMap, String categoryQuery) {
- Set searchableFieldNames = schema.getSearchableFieldNames();
- Set parameterSet = parameterMap.keySet();
- StringBuilder translatedQuery = new StringBuilder();
- if(categoryQuery != null){
- translatedQuery.append(translateCategory(translatedQuery,categoryQuery));
- }
- String updateMin = null;
- String updateMax = null;
- for (String parameterName : parameterSet) {
- if (STANDARD_REQUEST_PARAMETER.contains(parameterName))
- continue;
- if (searchableFieldNames.contains(parameterName)) {
- translatedQuery.append(parameterName).append(":(");
- translatedQuery.append(parameterMap.get(parameterName)[0]);
- translatedQuery.append(") ");
- continue;
- }
- if(parameterName.equals(GDATA_DEFAULT_SEARCH_PARAMETER)){
- translatedQuery.append(schema.getDefaultSearchField());
- translatedQuery.append(":(");
- translatedQuery.append(parameterMap.get(parameterName)[0]);
- translatedQuery.append(") ");
- continue;
-
- }
- if(parameterName.endsWith("updated-min")){
- updateMin = parameterMap.get(parameterName)[0];
- continue;
- }
- if(parameterName.endsWith("updated-max")){
- updateMax = parameterMap.get(parameterName)[0];
- continue;
- }
- throw new RuntimeException("Can not apply parameter -- invalid -- "
- + parameterName);
- }
- if(updateMax!=null || updateMin!= null)
- translatedQuery.append(translateUpdate(updateMin,updateMax));
-
- return translatedQuery.length() == 0?null:translatedQuery.toString();
- }
-
-
- static String translateUpdate(String updateMin, String updateMax){
- StringBuilder builder = new StringBuilder("updated:[");
- if(updateMin != null)
- builder.append(Long.toString(DateTime.parseDateTime(updateMin).getValue()));
- else
- builder.append(UPDATED_MIN);
- builder.append(" TO ");
- if(updateMax != null)
- builder.append(Long.toString(DateTime.parseDateTime(updateMax).getValue()-1));
- else
- builder.append(UPDATED_MAX);
- builder.append("]");
- return builder.toString();
-
-
- }
-
- static String translateCategory(StringBuilder builder, String categoryQuery){
- return categoryQuery;
- //TODO Implement this
-// GDataCategoryQueryParser parser = new GDataCategoryQueryParser()
-
-
- }
-
-
-
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/FeedNotFoundException.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/FeedNotFoundException.java
deleted file mode 100644
index 8c92f29f9e6..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/FeedNotFoundException.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package org.apache.lucene.gdata.server;
-
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-/**
- * Will be thrown if a requested feed could not be found or is not
- * registerd.
- *
- * @author Simon Willnauer
- *
- */
-public class FeedNotFoundException extends ServiceException {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * Constructs a new FeedNotFoundException
- * @param errorCode - gdata request errorcode
- */
- public FeedNotFoundException(int errorCode) {
- super(errorCode);
-
-
- }
-
- /**
- * Constructs a new FeedNotFoundException
- * @param arg0 - the exception message
- * @param errorCode - gdata request errorcode
- */
- public FeedNotFoundException(String arg0,int errorCode) {
- super(arg0, errorCode);
-
- }
-
- /**
- * Constructs a new FeedNotFoundException
- * @param arg0 - the exceptin message
- * @param arg1 - the exception cause
- * @param errorCode - gdata request errorcode
- */
- public FeedNotFoundException(String arg0, Throwable arg1,int errorCode) {
- super(arg0, arg1, errorCode);
-
-
- }
-
- /**
- * Constructs a new FeedNotFoundException
- * @param arg0 - the exception cause
- * @param errorCode - gdata request errorcode
- */
- public FeedNotFoundException(Throwable arg0,int errorCode) {
- super(arg0, errorCode);
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/GDataEntityBuilder.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/GDataEntityBuilder.java
deleted file mode 100644
index 62e8584fa4f..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/GDataEntityBuilder.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.server;
-
-import java.io.IOException;
-import java.io.Reader;
-
-import org.apache.lucene.gdata.server.registry.ProvidedService;
-
-import com.google.gdata.data.BaseEntry;
-import com.google.gdata.data.BaseFeed;
-import com.google.gdata.util.ParseException;
-
-/**
- * {@link com.google.gdata.data.BaseFeed},
- * {@link com.google.gdata.data.BaseEntry} instances have to be build from a
- * {@link java.io.Reader} instance as they come in from a client request or out
- * of a storage.
- *
- * To provide a generic builder class the {@link GDataEntityBuilder} requests
- * the type of the feed / entry and the corresponding
- * {@link com.google.gdata.data.ExtensionProfile} form the global
- * {@link org.apache.lucene.gdata.server.registry.GDataServerRegistry} and
- * builds the instances from the provided reader.
- *
- *
- * This build will not returne the abstract base classes.
- *
- *
- * @author Simon Willnauer
- *
- */
-public class GDataEntityBuilder {
-
- /**
- * Builds a {@link BaseFeed} instance from the {@link Reader} provided by
- * the {@link GDataRequest}
- *
- * @param request -
- * the request to build the instance from
- * @return - a BaseFeed instance
- *
- * @throws IOException -
- * if an I/O Exception occures on the provided reader
- * @throws ParseException -
- * if the feed could not be parsed
- */
- public static BaseFeed buildFeed(final GDataRequest request)
- throws IOException, ParseException {
- if (request == null)
- throw new IllegalArgumentException("request must not be null");
- ProvidedService config = request.getConfigurator();
- return buildFeed(request.getReader(), config);
- }
-
- /**
- * Builds a {@link BaseFeed} from the provided {@link Reader}
- *
- *
- * @param reader -
- * the reader to build the feed from
- * @param config -
- * the feed instance config containing the extension profile to
- * parse the resource
- * @return - a BaseFeed instance
- *
- * @throws IOException -
- * if an I/O Exception occures on the provided reader
- * @throws ParseException -
- * if the feed could not be parsed
- */
- public static BaseFeed buildFeed(final Reader reader,
- final ProvidedService config) throws ParseException, IOException {
-
- BaseFeed retVal = null;
- retVal = createEntityInstance(config);
- retVal.parseAtom(config.getExtensionProfile(), reader);
-
- return retVal;
- }
-
- /**
- * Builds a {@link BaseEntry} instance from the {@link Reader} provided by
- * the {@link GDataRequest}
- *
- * @param request -
- * the request to build the instance from
- * @return - a BaseEntry instance
- *
- * @throws IOException -
- * if an I/O Exception occures on the provided reader
- * @throws ParseException -
- * if the entry could not be parsed
- */
- public static BaseEntry buildEntry(final GDataRequest request)
- throws IOException, ParseException {
- if (request == null)
- throw new IllegalArgumentException("request must not be null");
- ProvidedService config = request.getConfigurator();
- return buildEntry(request.getReader(), config);
- }
-
- /**
- * Builds a {@link BaseFeed} instance from the {@link Reader} provided by
- * the {@link GDataRequest}
- *
- * @param reader -
- * the reader to build the feed from
- * @param config -
- * the instance config containing the extension profile to parse
- * the resource
- * @return - a BaseFeed instance
- *
- * @throws IOException -
- * if an I/O Exception occures on the provided reader
- * @throws ParseException -
- * if the entry could not be parsed
- */
- public static BaseEntry buildEntry(final Reader reader,
- final ProvidedService config) throws ParseException, IOException {
-
- BaseEntry e = createEntityInstance(config).createEntry();
- e.parseAtom(config.getExtensionProfile(), reader);
- return e;
- }
-
- private static BaseFeed createEntityInstance(
- final ProvidedService config) {
- if(config.getFeedType() == null)
- throw new IllegalArgumentException("feedtype is null in ProvidedService");
-
- BaseFeed retVal = null;
- try {
- retVal = (BaseFeed) config.getFeedType().newInstance();
- } catch (Exception e) {
- throw new EntityBuilderException("Can't instanciate Feed for feedType "+config.getFeedType().getName(),e);
- }
- return retVal;
- }
- static class EntityBuilderException extends RuntimeException{
-
- /**
- *
- */
- private static final long serialVersionUID = 7224011324202237951L;
-
- EntityBuilderException(String arg0) {
- super(arg0);
-
- }
-
- EntityBuilderException(String arg0, Throwable arg1) {
- super(arg0, arg1);
-
- }
-
- }
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/GDataRequest.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/GDataRequest.java
deleted file mode 100644
index addd86e031e..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/GDataRequest.java
+++ /dev/null
@@ -1,598 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.server;
-
-import java.io.IOException;
-import java.io.Reader;
-import java.util.Enumeration;
-import java.util.Map;
-import java.util.StringTokenizer;
-
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.search.config.IndexSchema;
-import org.apache.lucene.gdata.search.query.QueryTranslator;
-import org.apache.lucene.gdata.server.authentication.AuthenticationController;
-import org.apache.lucene.gdata.server.registry.GDataServerRegistry;
-import org.apache.lucene.gdata.server.registry.ProvidedService;
-
-/**
- * The GDataRequest Class wraps the incoming HttpServletRequest. Needed
- * information coming with the HttpServletRequest can be accessed directly. It
- * represents an abstraction on the plain HttpServletRequest. Every GData
- * specific data coming from the client will be available and can be accessed
- * via the GDataRequest.
- *
- * GDataRequest instances will be passed to any action requested by the client.
- * This class also holds the logic to retrieve important information like
- * response format, the requested feed instance and query parameters.
- *
- *
- *
- * @author Simon Willnauer
- *
- */
-/* this class might be extracted as an interface in later development */
-public class GDataRequest {
-
-
- private static final Log LOG = LogFactory.getLog(GDataRequest.class);
-
- private static final String RESPONSE_FORMAT_PARAMETER = "alt";
-
- private static final String RESPONSE_FORMAT_PARAMETER_RSS = "rss";
- private static final String RESPONSE_FORMAT_PARAMETER_HTML = "html";
-
- private static final int DEFAULT_ITEMS_PER_PAGE = 25;
-
- private static final int DEFAULT_START_INDEX = 1;
-
- private static final String START_INDEX_NEXT_PAGE_PARAMETER = "start-index";
-
- private static final String ITEMS_PER_PAGE_PARAMETER = "max-results";
-
- private String contextPath;
-
- @SuppressWarnings("unused")
- private static final String RESPONSE_FORMAT_PARAMETER_ATOM = "atom";
-
- private static final String HTTP_HEADER_IF_MODIFIED_SINCE = "If-Modified-Since";
-
- private static final String HTTP_HEADER_AUTH = "Authorization";
-
- private static final Object CATEGORY_QUERY_INDICATOR = "-";
-
- // Atom is the default response format
- private OutputFormat responseFormat = OutputFormat.ATOM;
-
- private final HttpServletRequest request;
-
- private String feedId = null;
-
- private String entryId = null;
-
- private String service = null;
-
- private ProvidedService configurator = null;
-
- private boolean isSearchRequest = false;
-
- private String entryVersion = null;
-
- private GDataRequestType type;
-
- private String categoryQuery;
-
- private String translatedSearchQuery;
-
- private boolean isFeedRequest = false;
-
- /**
- * Creates a new FeedRequest
- *
- * @param requst -
- * the incoming HttpServletReqeust
- * @param type -
- * the request type
- *
- */
- public GDataRequest(final HttpServletRequest requst,
- final GDataRequestType type) {
- if (requst == null)
- throw new IllegalArgumentException("request must not be null ");
- if (type == null)
- throw new IllegalArgumentException("request type must not be null ");
- this.request = requst;
- this.type = type;
-
- }
-
- /**
- * Initialize the GDataRequest. This will initialize all needed values /
- * attributes in this request.
- *
- * @throws GDataRequestException
- */
- public void initializeRequest() throws GDataRequestException {
- generateIdentificationProperties();
- setOutputFormat();
-
- try {
- /*
- * ExtensionProfile and the type is used for building the Entry /
- * Feed Instances from an input stream or reader
- *
- */
- this.configurator = GDataServerRegistry.getRegistry()
- .getProvidedService(this.service);
-
- if (this.configurator == null)
- throw new GDataRequestException(
- "no Provided Service found for service id: "+this.service,GDataResponse.NOT_FOUND);
- applyRequestParameter();
- if(this.translatedSearchQuery != null)
- this.isSearchRequest = true;
- } catch(GDataRequestException ex){
- throw ex;
- } catch (Exception e) {
- throw new GDataRequestException(
- "failed to initialize GDataRequest -- "
- + e.getMessage(), e,GDataResponse.SERVER_ERROR);
- }
-
- }
-
- @SuppressWarnings("unchecked")
- private void applyRequestParameter() throws GDataRequestException{
- IndexSchema schema = this.configurator.getIndexSchema();
- try{
- this.translatedSearchQuery = QueryTranslator.translateHttpSearchRequest(schema,this.request.getParameterMap(),this.categoryQuery);
- }catch (Exception e) {
- throw new GDataRequestException("Can not translate user query to search query",e,GDataResponse.BAD_REQUEST);
- }
- }
-
- /**
- * @return - the id of the requested feed
- */
- public String getFeedId() {
-
- return this.feedId;
- }
-
- /**
- * @return - the entry id of the requested Entry if specified, otherwise
- * null
- */
- public String getEntryId() {
-
- return this.entryId;
- }
-
- /**
- * @return the version Id of the requested Entry if specified, otherwise
- * null
- */
- public String getEntryVersion() {
- return this.entryVersion;
- }
-
- /**
- * A Reader instance to read form the client input stream
- *
- * @return - the HttpServletRequest {@link Reader}
- * @throws IOException -
- * if an I/O Exception occurs
- */
- public Reader getReader() throws IOException {
- return this.request.getReader();
- }
-
- /**
- * Returns the {@link HttpServletRequest} parameter map containing all
- * GET request parameters.
- *
- * @return the parameter map
- */
- @SuppressWarnings("unchecked")
- public Map getQueryParameter() {
- return this.request.getParameterMap();
- }
-
- /**
- * The {@link HttpServletRequest} request parameter names
- *
- * @return parameter names enumeration
- */
- @SuppressWarnings("unchecked")
- public Enumeration getQueryParameterNames() {
- return this.request.getParameterNames();
- }
-
- /**
- * Either Atom or RSS
- *
- * @return - The output format requested by the client
- */
- public OutputFormat getRequestedResponseFormat() {
-
- return this.responseFormat;
- }
-
- private void generateIdentificationProperties()
- throws GDataRequestException {
- /* generate all needed data to identify the requested feed/entry */
- String pathInfo = this.request.getPathInfo();
- if (pathInfo.length() <= 1)
- throw new GDataRequestException(
- "No feed or entry specified for this request",GDataResponse.BAD_REQUEST);
- StringTokenizer tokenizer = new StringTokenizer(pathInfo, "/");
- this.service = tokenizer.nextToken();
- if (!tokenizer.hasMoreTokens())
- throw new GDataRequestException(
- "Can not find feed id in requested path " + pathInfo,GDataResponse.BAD_REQUEST);
- this.feedId = tokenizer.nextToken();
-
- String appendix = tokenizer.hasMoreTokens() ? tokenizer.nextToken()
- : null;
- if (appendix == null){
- this.isFeedRequest = true;
- return;
- }
- if (appendix.equals(CATEGORY_QUERY_INDICATOR)) {
- StringBuilder builder = new StringBuilder();
- while (tokenizer.hasMoreTokens())
- builder.append("/").append(tokenizer.nextToken());
- this.categoryQuery = builder.toString();
- } else {
- this.entryId = appendix;
- this.entryVersion = tokenizer.hasMoreTokens() ? tokenizer
- .nextToken() : "";
- }
- this.isFeedRequest = (this.type == GDataRequestType.GET && (this.entryId == null
- || this.entryId.length() == 0 || (this.entryId.equals('/'))));
- }
-
- private void setOutputFormat() {
- String formatParameter = this.request
- .getParameter(RESPONSE_FORMAT_PARAMETER);
- if (formatParameter == null)
- return;
- if (formatParameter.equalsIgnoreCase(RESPONSE_FORMAT_PARAMETER_RSS))
- this.responseFormat = OutputFormat.RSS;
- if (formatParameter.equalsIgnoreCase(RESPONSE_FORMAT_PARAMETER_HTML))
- this.responseFormat = OutputFormat.HTML;
-
- }
-
- /**
- * @return - the number of returned items per page
- */
- public int getItemsPerPage() {
-
- if (this.request.getParameter(ITEMS_PER_PAGE_PARAMETER) == null)
- return DEFAULT_ITEMS_PER_PAGE;
- int retval = -1;
- try {
- retval = new Integer(this.request
- .getParameter(ITEMS_PER_PAGE_PARAMETER)).intValue();
- } catch (Exception e) {
- LOG.warn("Items per page could not be parsed - " + e.getMessage(),
- e);
- }
-
- return retval < 0 ? DEFAULT_ITEMS_PER_PAGE : retval;
- }
-
- /**
- * Start index represents the number of the first entry of the query -
- * result. The order depends on the query. Is the query a search query the
- * this value will be assigned to the score in a common feed query the value
- * will be assigned to the update time of the entries.
- *
- * @return - the requested start index
- */
- public int getStartIndex() {
- String startIndex = this.request.getParameter(START_INDEX_NEXT_PAGE_PARAMETER);
- if (startIndex == null)
- return DEFAULT_START_INDEX;
- int retval = -1;
- try {
- retval = new Integer(startIndex).intValue();
- } catch (Exception e) {
- LOG.warn("Start-index could not be parsed - not an integer - " + e.getMessage());
- }
- return retval < 0 ? DEFAULT_START_INDEX : retval;
- }
-
- /**
- * The self id is the feeds href pointing to the requested resource
- *
- * @return - the self id
- */
- public String getSelfId() {
- StringBuilder builder = new StringBuilder();
- builder.append(buildRequestIDString(false));
- builder.append("?");
- builder.append(getQueryString());
-
- return builder.toString();
- }
-
- /**
- * The previous id is the feeds href pointing to the previous result of the requested resource
- *
- * @return - the self id
- */
- public String getPreviousId(){
-
- int startIndex = getStartIndex();
- if(startIndex == DEFAULT_START_INDEX )
- return null;
- StringBuilder builder = new StringBuilder();
- builder.append(buildRequestIDString(false));
- startIndex = startIndex-getItemsPerPage();
- builder.append(getPreparedQueryString(startIndex<1?DEFAULT_START_INDEX:startIndex));
- return builder.toString();
- }
-
-
-
- private String getPreparedQueryString(int startIndex){
- String queryString = this.request.getQueryString();
- String startIndexValue = this.request.getParameter(START_INDEX_NEXT_PAGE_PARAMETER);
- String maxResultsValue = this.request.getParameter(ITEMS_PER_PAGE_PARAMETER);
-
- StringBuilder builder = new StringBuilder("?");
- if(maxResultsValue == null){
- builder.append(ITEMS_PER_PAGE_PARAMETER).append("=").append(DEFAULT_ITEMS_PER_PAGE);
- builder.append("&");
- }
- if(startIndexValue== null){
- builder.append(START_INDEX_NEXT_PAGE_PARAMETER).append("=");
- builder.append(Integer.toString(startIndex));
- if(queryString!=null){
- builder.append("&");
- builder.append(queryString);
- }
- }else{
- builder.append(queryString.replaceAll("start-index=[\\d]*",START_INDEX_NEXT_PAGE_PARAMETER+"="+Integer.toString(startIndex)));
- }
- return builder.toString();
- }
- /**
- * The href id of the next page of the requested resource.
- *
- * @return the id of the next page
- */
- public String getNextId() {
- int startIndex = getStartIndex();
- StringBuilder builder = new StringBuilder();
- builder.append(buildRequestIDString(false));
- startIndex = startIndex+getItemsPerPage();
- builder.append(getPreparedQueryString(startIndex));
- return builder.toString();
-
- }
-
- private String buildRequestIDString(boolean endingSlash) {
- StringBuilder builder = new StringBuilder("http://");
- builder.append(this.request.getHeader("Host"));
- builder.append(this.request.getRequestURI());
- if (!endingSlash && builder.charAt(builder.length() - 1) == '/')
- builder.setLength(builder.length() - 1);
- if (endingSlash && builder.charAt(builder.length() - 1) != '/')
- builder.append("/");
-
- return builder.toString();
- }
-
- /**
- * This will return the current query string including all parameters.
- * Additionally the max-resul parameter will be added if not
- * specified.
- *
- * max-resul indicates the number of results returned to the
- * client. The default value is 25.
- *
- *
- * @return - the query string including all parameters
- */
- public String getQueryString() {
- String retVal = this.request.getQueryString();
-
- if (this.request.getParameter(ITEMS_PER_PAGE_PARAMETER) != null)
- return retVal;
- String tempString = (retVal == null ? ITEMS_PER_PAGE_PARAMETER + "="
- + DEFAULT_ITEMS_PER_PAGE : "&" + ITEMS_PER_PAGE_PARAMETER + "="
- + DEFAULT_ITEMS_PER_PAGE);
-
- return retVal == null ? tempString : retVal + tempString;
-
- }
-
- /**
- * This enum represents the OutputFormat of the GDATA Server
- *
- * @author Simon Willnauer
- *
- */
- public static enum OutputFormat {
- /**
- * Output format ATOM. ATOM is the default response format.
- */
- ATOM,
- /**
- * Output format RSS
- */
- RSS,
- /**
- * Output format html if user defined xsl style sheet is present
- */
- HTML
- }
-
- /**
- * Returns the requested path including the domain name and the requested
- * resource http://www.apache.org/path/resource/
- *
- * @return the context path
- */
- public String getContextPath() {
- if (this.contextPath == null)
- this.contextPath = buildRequestIDString(true);
- return this.contextPath;
- }
-
- /**
- * Indicates the request type
- *
- * @author Simon Willnauer
- *
- */
- public enum GDataRequestType {
- /**
- * Type FeedRequest
- */
- GET,
- /**
- * Type UpdateRequest
- */
- UPDATE,
- /**
- * Type DeleteRequest
- */
- DELETE,
- /**
- * Type InsertRequest
- */
- INSERT
- }
-
- /**
- * {@link GDataRequestType}
- *
- * @return the current request type
- */
- public GDataRequestType getType() {
- return this.type;
- }
-
- /**
- * If the request is a {@link GDataRequestType#GET} request and there is no
- * entry id specified, the requested resource is a feed.
- *
- * @return - true if an only if the requested resource is a
- * feed
- */
- public boolean isFeedRequested() {
-
- return this.isFeedRequest ;
- }
-
- /**
- * * If the request is a {@link GDataRequestType#GET} request and there is
- * an entry id specified, the requested resource is an entry.
- *
- * @return - true if an only if the requested resource is an
- * entry
- */
- public boolean isEntryRequested() {
- return !this.isFeedRequested();
- }
- /**
- * @return - true if an only if the user request is a search request, otherwise false
- */
- public boolean isSearchRequested(){
- return this.isSearchRequest;
- }
-
- /**
- * @return the configuration for this request
- */
- public ProvidedService getConfigurator() {
- return this.configurator;
- }
-
- /**
- * @return - Returns the Internet Protocol (IP) address of the client or
- * last proxy that sent the request.
- */
- public String getRemoteAddress() {
- return this.request.getRemoteAddr();
- }
-
- /**
- * @return - the value for the send auth token. The auth token will be send
- * as a request Authentication header.
- */
- public String getAuthToken() {
- String token = this.request.getHeader(HTTP_HEADER_AUTH);
- if (token == null)
- return null;
- token = token.substring(token.indexOf("=") + 1);
- return token;
- }
-
- /**
- * @return - Returns an array containing all of the Cookie objects the
- * client sent with underlying HttpServletRequest.
- */
- public Cookie[] getCookies() {
- return this.request.getCookies();
- }
-
- /**
- * @return - the cookie set instead of the authentication token or
- * null if no auth cookie is set
- */
- public Cookie getAuthCookie() {
- Cookie[] cookies = this.request.getCookies();
- if (cookies == null)
- return null;
- for (int i = 0; i < cookies.length; i++) {
- if (cookies[i].getName().equals(AuthenticationController.TOKEN_KEY))
- return cookies[i];
- }
- return null;
- }
-
- /**
- * @return - the date string of the If-Modified-Since HTTP
- * request header, or null if header is not set
- */
- public String getModifiedSince() {
- return this.request.getHeader(HTTP_HEADER_IF_MODIFIED_SINCE);
- }
-
- /**
- * @return - the underlying HttpServletRequest
- */
- public HttpServletRequest getHttpServletRequest() {
-
- return this.request;
- }
-
- protected String getTranslatedQuery(){
- return this.translatedSearchQuery;
- }
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/GDataRequestException.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/GDataRequestException.java
deleted file mode 100644
index 8f783f3f8c0..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/GDataRequestException.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.server;
-
-/**
- * This exception wraps all exceptions occur inside the {@link org.apache.lucene.gdata.server.GDataRequest}
- * @author Simon Willnauer
- *
- */
-public class GDataRequestException extends Exception {
- private final int errorCode;
- /**
- * Serial version ID. -> Implements Serializable
- */
- private static final long serialVersionUID = -4440777051466950723L;
-
- /**
- /**
- * Constructs a new GDataRequestException
- * @param errorCode - gdata request error code
- */
- public GDataRequestException(int errorCode) {
- super();
- this.errorCode = errorCode;
-
- }
-
- /**
- * Constructs a new GDataRequestException
- * @param arg0 - the exception message
- * @param errorCode - gdata request error code
- */
- public GDataRequestException(String arg0,int errorCode) {
- super(arg0);
- this.errorCode = errorCode;
- }
-
- /**
- * Constructs a new GDataRequestException
- * @param arg0 - the exception message
- * @param arg1 - the exception cause
- * @param errorCode - gdata request error code
- */
- public GDataRequestException(String arg0, Throwable arg1,int errorCode) {
- super(arg0, arg1);
- this.errorCode = errorCode;
-
- }
-
- /**
- * Constructs a new GDataRequestException
- * @param arg0 - the exception cause
- * @param errorCode - gdata request error code
- */
- public GDataRequestException(Throwable arg0,int errorCode) {
- super(arg0);
- this.errorCode = errorCode;
- }
-
- /**
- * @return Returns the errorCode.
- */
- public int getErrorCode() {
- return this.errorCode;
- }
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/GDataResponse.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/GDataResponse.java
deleted file mode 100644
index 64266723832..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/GDataResponse.java
+++ /dev/null
@@ -1,449 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.server;
-
-import java.io.IOException;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.util.Date;
-
-import javax.servlet.http.HttpServletResponse;
-import javax.xml.transform.Source;
-import javax.xml.transform.Templates;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.server.GDataRequest.OutputFormat;
-import org.apache.lucene.gdata.server.registry.ProvidedService;
-import org.apache.lucene.gdata.utils.DateFormater;
-
-import com.google.gdata.data.BaseEntry;
-import com.google.gdata.data.BaseFeed;
-import com.google.gdata.data.DateTime;
-import com.google.gdata.data.ExtensionProfile;
-import com.google.gdata.util.common.xml.XmlWriter;
-import com.google.gdata.util.common.xml.XmlWriter.Namespace;
-
-/**
- * The FeedRequest Class wraps the current HttpServletResponse. Any action on the
- * HttpServletRequest will be executed via this class. This represents an
- * abstraction on the plain {@link HttpServletResponse}. Any action which has
- * to be performed on the underlying {@link HttpServletResponse} will be
- * executed within this class.
- *
- * The GData basically writes two different kinds of response to the output
- * stream.
- *
- *
update, delete or insert requests will respond with a status code and if
- * successful the feed entry modified or created
- *
get requests will respond with a status code and if successful the
- * requested feed
- *
- *
- * For this purpose the {@link GDataResponse} class provides the overloaded
- * method
- * {@link org.apache.lucene.gdata.server.GDataResponse#sendResponse}
- * which sends the entry e.g feed to the output stream.
- *
- *
- * This class will set the HTTP Last-Modified Header to enable
- * clients to send If-Modified-Since request header to avoid
- * retrieving the content again if it hasn't changed. If the content hasn't
- * changed since the If-Modified-Since time, then the GData service returns a
- * 304 (Not Modified) HTTP response.
- *
- *
- *
- *
- *
- * @author Simon Willnauer
- *
- */
-public class GDataResponse {
- /**
- * Response code bad request
- */
- public static final int BAD_REQUEST = HttpServletResponse.SC_BAD_REQUEST;
- /**
- * Response code version conflict
- */
- public static final int CONFLICT = HttpServletResponse.SC_CONFLICT;
- /**
- * Response code forbidden access
- */
- public static final int FORBIDDEN = HttpServletResponse.SC_FORBIDDEN;
- /**
- * Response code internal server error
- */
- public static final int SERVER_ERROR = HttpServletResponse.SC_INTERNAL_SERVER_ERROR;
- /**
- * Response code not found
- */
- public static final int NOT_FOUND = HttpServletResponse.SC_NOT_FOUND;
- /**
- * Response code not modified since
- */
- public static final int NOT_MODIFIED = HttpServletResponse.SC_NOT_MODIFIED;
- /**
- * Response code created
- */
- public static final int CREATED = HttpServletResponse.SC_CREATED;
- /**
- * Response code unauthorized access
- */
- public static final int UNAUTHORIZED = HttpServletResponse.SC_UNAUTHORIZED;
-
-
- static final Log LOG = LogFactory.getLog(GDataResponse.class);
- private int error;
-
- private boolean isError = false;
-
- private String encoding;
-
- private OutputFormat outputFormat;
-
- private final HttpServletResponse response;
-
- protected static final String XMLMIME_ATOM = "text/xml";
-
- protected static final String XMLMIME_RSS = "text/xml";
-
- private static final String HEADER_LASTMODIFIED = "Last-Modified";
-
- /**
- * Creates a new GDataResponse
- *
- * @param response -
- * The underlying {@link HttpServletResponse}
- */
- public GDataResponse(HttpServletResponse response) {
- if (response == null)
- throw new IllegalArgumentException("response must not be null");
- this.response = response;
-
- }
-
- /**
- * Sets an error code to this FeedResponse.
- *
- * @param errorCode -
- * {@link HttpServletResponse} error code
- */
- public void setError(int errorCode) {
- this.isError = true;
- this.error = errorCode;
- }
-
- /**
- * Sets the status of the underlying response
- *
- * @see HttpServletResponse
- * @param responseCode -
- * the status of the response
- */
- public void setResponseCode(int responseCode) {
- this.response.setStatus(responseCode);
- }
-
- /**
- * This method sends the specified error to the user if set
- *
- * @throws IOException -
- * if an I/O Exception occurs
- */
- public void sendError() throws IOException {
- if (this.isError)
- this.response.sendError(this.error);
-
- }
-
- /**
- * @return - the {@link HttpServletResponse} writer
- * @throws IOException -
- * If an I/O exception occurs
- */
- public Writer getWriter() throws IOException {
- return this.response.getWriter();
- }
-
- /**
- * Sends a response for a get e.g. query request. This method must not
- * invoked in a case of an error performing the requested action.
- *
- * @param feed -
- * the feed to respond to the client
- * @param service - the service to render the feed
- *
- * @throws IOException -
- * if an I/O exception occurs, often caused by an already
- * closed Writer or OutputStream
- *
- */
- public void sendResponse(final BaseFeed feed, final ProvidedService service)
- throws IOException {
- if (feed == null)
- throw new IllegalArgumentException("feed must not be null");
- if (service == null)
- throw new IllegalArgumentException(
- "provided service must not be null");
- DateTime time = feed.getUpdated();
- if (time != null)
- setLastModifiedHeader(time.getValue());
- FormatWriter writer = FormatWriter.getFormatWriter(this,service);
- writer.generateOutputFormat(feed,this.response);
-
- }
-
- /**
- *
- * Sends a response for an update, insert or delete request. This method
- * must not invoked in a case of an error performing the requested action. If
- * the specified response format is ATOM the default namespace will be set
- * to ATOM.
- *
- * @param entry -
- * the modified / created entry to send
- * @param service - the service to render the feed
- * @throws IOException -
- * if an I/O exception occurs, often caused by an already
- * closed Writer or OutputStream
- */
- public void sendResponse(BaseEntry entry, ProvidedService service)
- throws IOException {
- if (entry == null)
- throw new IllegalArgumentException("entry must not be null");
- if (service == null)
- throw new IllegalArgumentException(
- "service must not be null");
- DateTime time = entry.getUpdated();
- if (time != null)
- setLastModifiedHeader(time.getValue());
- FormatWriter writer = FormatWriter.getFormatWriter(this,service);
- writer.generateOutputFormat(entry,this.response);
-
-
- }
-
-
- /**
- * This encoding will be used to encode the xml representation of feed or
- * entry written to the {@link HttpServletResponse} output stream.
- *
- * @return - the entry / feed encoding
- */
- public String getEncoding() {
- return this.encoding;
- }
-
- /**
- * This encoding will be used to encode the xml representation of feed or
- * entry written to the {@link HttpServletResponse} output stream. UTF-8
- * ISO-8859-1
- *
- * @param encoding -
- * string represents the encoding
- */
- public void setEncoding(String encoding) {
- this.encoding = encoding;
- }
-
- /**
- * @return - the response
- * {@link org.apache.lucene.gdata.server.GDataRequest.OutputFormat}
- */
- public OutputFormat getOutputFormat() {
- return this.outputFormat;
- }
-
- /**
- * @param outputFormat -
- * the response
- * {@link org.apache.lucene.gdata.server.GDataRequest.OutputFormat}
- */
- public void setOutputFormat(OutputFormat outputFormat) {
- this.outputFormat = outputFormat;
- }
-
- /**
- * @see Object#toString()
- */
- @Override
- public String toString() {
- StringBuilder builder = new StringBuilder(" GDataResponse: ");
- builder.append("Error: ").append(this.error);
- builder.append(" outputFormat: ").append(getOutputFormat());
- builder.append(" encoding: ").append(this.encoding);
-
- return builder.toString();
-
- }
-
- protected void setLastModifiedHeader(long lastModified) {
- String lastMod = DateFormater.formatDate(new Date(lastModified),
- DateFormater.HTTP_HEADER_DATE_FORMAT);
- this.response.setHeader(HEADER_LASTMODIFIED, lastMod);
- }
-
- /**
- * @see HttpServletResponse#setStatus(int)
- * @param status - the request status code
- */
- public void setStatus(int status){
- this.response.setStatus(status);
- }
-
- private static abstract class FormatWriter{
-
- static FormatWriter getFormatWriter(final GDataResponse response, final ProvidedService service ){
- OutputFormat format = response.getOutputFormat();
- if(format == OutputFormat.HTML){
- return new HTMLFormatWriter(service);
- }
- return new SyndicateFormatWriter(service,format,response.getEncoding());
- }
-
- abstract void generateOutputFormat(final BaseFeed feed, final HttpServletResponse response) throws IOException;
- abstract void generateOutputFormat(final BaseEntry entry, final HttpServletResponse response) throws IOException;
-
- private static class HTMLFormatWriter extends FormatWriter{
- private static final String CONTENT_TYPE = "text/html";
- private final ProvidedService service;
-
- HTMLFormatWriter(final ProvidedService service){
- this.service = service;
- }
- @Override
- void generateOutputFormat(BaseFeed feed, final HttpServletResponse response) throws IOException {
- Templates template = this.service.getTransformTemplate();
- response.setContentType(CONTENT_TYPE);
- if(template == null){
- sendNotAvailable(response);
- return;
- }
- StringWriter writer = new StringWriter();
- XmlWriter xmlWriter = new XmlWriter(writer);
- feed.generateAtom(xmlWriter,this.service.getExtensionProfile());
- try {
- writeHtml(template,response.getWriter(),writer);
- } catch (TransformerException e) {
- LOG.error("Can not transform feed for service "+this.service.getName(),e);
- sendNotAvailable(response);
-
- }
- }
-
- @Override
- void generateOutputFormat(BaseEntry entry, final HttpServletResponse response) throws IOException{
- Templates template = this.service.getTransformTemplate();
- response.setContentType(CONTENT_TYPE);
- if(template == null){
- sendNotAvailable(response);
- return;
- }
- StringWriter writer = new StringWriter();
- XmlWriter xmlWriter = new XmlWriter(writer);
- entry.generateAtom(xmlWriter,this.service.getExtensionProfile());
- try {
- writeHtml(template,response.getWriter(),writer);
- } catch (TransformerException e) {
- LOG.error("Can not transform feed for service "+this.service.getName(),e);
- sendNotAvailable(response);
-
- }
-
- }
-
- private void writeHtml(final Templates template, final Writer writer, final StringWriter source ) throws TransformerException{
- Transformer transformer = template.newTransformer();
- Source tranformSource = new StreamSource(new StringReader(source.toString()));
- transformer.transform(tranformSource,new StreamResult(writer));
- }
-
- private void sendNotAvailable(final HttpServletResponse response) throws IOException{
- response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE, "No transformation stylesheet available");
- }
-
- }
- private static class SyndicateFormatWriter extends FormatWriter{
- private static final String DEFAUL_NAMESPACE_URI = "http://www.w3.org/2005/Atom";
-
- private static final Namespace DEFAULT_NAMESPACE = new Namespace("",
- DEFAUL_NAMESPACE_URI);
- private final ProvidedService service;
- private final String encoding;
- private final OutputFormat format;
-
- SyndicateFormatWriter(final ProvidedService service,final OutputFormat format, String encoding){
- this.service = service;
- this.format = format;
- this.encoding = encoding;
-
- }
- @Override
- void generateOutputFormat(final BaseFeed feed, final HttpServletResponse response) throws IOException {
- XmlWriter writer = null;
- try{
- writer = createWriter(response.getWriter());
- if (this.format == OutputFormat.ATOM) {
- response.setContentType(XMLMIME_ATOM);
- feed.generateAtom(writer, this.service.getExtensionProfile());
- } else {
- response.setContentType(XMLMIME_RSS);
- feed.generateRss(writer, this.service.getExtensionProfile());
- }
- }finally{
- if(writer != null)
- writer.close();
- }
- }
-
- @Override
- void generateOutputFormat(final BaseEntry entry, final HttpServletResponse response) throws IOException {
- XmlWriter writer = null;
- try{
- writer = createWriter(response.getWriter());
- if (this.format == OutputFormat.ATOM) {
- response.setContentType(XMLMIME_ATOM);
- entry.generateAtom(writer, this.service.getExtensionProfile());
- } else {
- response.setContentType(XMLMIME_RSS);
- entry.generateRss(writer, this.service.getExtensionProfile());
- }
- }finally{
- if(writer != null)
- writer.close();
- }
- }
- private XmlWriter createWriter(final Writer target) throws IOException {
- XmlWriter writer = new XmlWriter(target, this.encoding);
- // set the default namespace to Atom if Atom is the response format
- if (this.format == OutputFormat.ATOM)
- writer.setDefaultNamespace(DEFAULT_NAMESPACE);
- return writer;
- }
- }
- }
-
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/GDataSearchService.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/GDataSearchService.java
deleted file mode 100755
index 0051b500cd8..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/GDataSearchService.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.server;
-
-import java.io.IOException;
-import java.util.List;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.data.ServerBaseFeed;
-import org.apache.lucene.gdata.search.GDataSearcher;
-import org.apache.lucene.gdata.search.SearchComponent;
-import org.apache.lucene.gdata.search.query.GDataQueryParser;
-import org.apache.lucene.gdata.server.registry.ComponentType;
-import org.apache.lucene.gdata.server.registry.GDataServerRegistry;
-import org.apache.lucene.gdata.server.registry.ProvidedService;
-import org.apache.lucene.gdata.storage.StorageException;
-import org.apache.lucene.queryParser.ParseException;
-import org.apache.lucene.queryParser.QueryParser;
-import org.apache.lucene.search.Query;
-
-import com.google.gdata.data.BaseEntry;
-import com.google.gdata.data.BaseFeed;
-
-/**
- *
- *
- */
-public class GDataSearchService extends GDataService {
- private static final Log LOG = LogFactory.getLog(GDataSearchService.class);
- private static SearchComponent SEARCHCOMPONENT;
- private GDataSearcher searcher;
- protected GDataSearchService() throws ServiceException {
- if(SEARCHCOMPONENT == null)
- SEARCHCOMPONENT = GDataServerRegistry.getRegistry().lookup(SearchComponent.class,ComponentType.SEARCHCONTROLLER);
-
-
- }
-
- /**
- * @see org.apache.lucene.gdata.server.GDataService#getFeed(org.apache.lucene.gdata.server.GDataRequest, org.apache.lucene.gdata.server.GDataResponse)
- */
- @SuppressWarnings("unchecked")
- @Override
- public BaseFeed getFeed(GDataRequest request, GDataResponse response) throws ServiceException {
- String translatedQuery = request.getTranslatedQuery();
- ProvidedService service = request.getConfigurator();
-
- QueryParser parser = new GDataQueryParser(service.getIndexSchema());
- Query query;
- try {
- query = parser.parse(translatedQuery);
-
- } catch (ParseException e1) {
- throw new ServiceException("Search Failed -- Can not parse query",e1,GDataResponse.BAD_REQUEST);
- }
- if(LOG.isInfoEnabled())
- LOG.info("Fire search for user query query: "+query.toString());
- this.searcher = SEARCHCOMPONENT.getServiceSearcher(service);
- List result;
- try {
- result = this.searcher.search(query,request.getItemsPerPage(),request.getStartIndex(),request.getFeedId());
- } catch (IOException e) {
- throw new ServiceException("Search Failed -- Searcher throws IOException",e,GDataResponse.SERVER_ERROR);
-
- }
- if(LOG.isInfoEnabled())
- LOG.info("Fetching results for user query result size: "+result.size());
- ServerBaseFeed requestFeed = new ServerBaseFeed();
- requestFeed.setServiceConfig(service);
- requestFeed.setStartIndex(0);
- requestFeed.setItemsPerPage(0);
- requestFeed.setId(request.getFeedId());
- BaseFeed feed = null;
- try{
- feed = this.storage.getFeed(requestFeed);
- }catch (StorageException e) {
- throw new ServiceException("Search Failed -- can not get feed, feed not stored ",e,GDataResponse.NOT_FOUND);
- }
- for (String entryId : result) {
- ServerBaseEntry requestEntry = new ServerBaseEntry();
- requestEntry.setId(entryId);
- requestEntry.setServiceConfig(service);
- try{
- BaseEntry entry = this.storage.getEntry(requestEntry);
- feed.getEntries().add(entry);
- }catch (StorageException e) {
-
- LOG.error("StorageException caught while fetching query results -- skip entry -- "+e.getMessage(),e);
- }
- }
- dynamicElementFeedStragey(feed,request);
- return feed;
- }
-
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/GDataService.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/GDataService.java
deleted file mode 100644
index 01513942278..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/GDataService.java
+++ /dev/null
@@ -1,450 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.server;
-
-import java.io.IOException;
-import java.util.Date;
-import java.util.List;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.data.ServerBaseFeed;
-import org.apache.lucene.gdata.server.registry.ComponentType;
-import org.apache.lucene.gdata.server.registry.EntryEventMediator;
-import org.apache.lucene.gdata.server.registry.GDataServerRegistry;
-import org.apache.lucene.gdata.storage.ModificationConflictException;
-import org.apache.lucene.gdata.storage.ResourceNotFoundException;
-import org.apache.lucene.gdata.storage.Storage;
-import org.apache.lucene.gdata.storage.StorageController;
-import org.apache.lucene.gdata.storage.StorageException;
-
-import com.google.gdata.data.BaseEntry;
-import com.google.gdata.data.BaseFeed;
-import com.google.gdata.data.DateTime;
-import com.google.gdata.data.Generator;
-import com.google.gdata.data.Link;
-import com.google.gdata.util.ParseException;
-
-/**
- * default implementation of the {@link org.apache.lucene.gdata.server.Service}
- * interface.
- *
- * @author Simon Willnauer
- *
- */
-public class GDataService implements Service {
- private static final Log LOG = LogFactory.getLog(GDataService.class);
-
- protected Storage storage;
-
- protected GDataServerRegistry registry = GDataServerRegistry.getRegistry();
-
- private static final Generator generator;
-
- private static final String generatorName = "Lucene GData-Server";
-
- private static final String generatorURI = "http://lucene.apache.org";
-
- private static final String XMLMIME = "application/atom+xml";
-
- protected final EntryEventMediator entryEventMediator;
- static {
- generator = new Generator();
- generator.setName(generatorName);
- generator.setUri(generatorURI);
- generator.setVersion("0.1");
- }
-
- protected GDataService() throws ServiceException {
- try {
- StorageController controller = GDataServerRegistry.getRegistry()
- .lookup(StorageController.class,
- ComponentType.STORAGECONTROLLER);
- if (controller == null)
- throw new StorageException(
- "StorageController is not registered");
- this.storage = controller.getStorage();
- this.entryEventMediator = GDataServerRegistry.getRegistry().getEntryEventMediator();
- } catch (StorageException e) {
- LOG
- .fatal(
- "Can't get Storage Instance -- can't serve any requests",
- e);
- ServiceException ex = new ServiceException(
- "Can't get Storage instance" + e.getMessage(), e,GDataResponse.SERVER_ERROR);
- ex.setStackTrace(e.getStackTrace());
- throw ex;
- }
- }
-
- /**
- * @see org.apache.lucene.gdata.server.Service#createEntry(org.apache.lucene.gdata.server.GDataRequest,
- * org.apache.lucene.gdata.server.GDataResponse)
- */
-
- public BaseEntry createEntry(GDataRequest request, GDataResponse response)
- throws ServiceException {
-
- if (LOG.isInfoEnabled())
- LOG.info("create Entry for feedId: " + request.getFeedId());
-
- ServerBaseEntry entry = buildEntry(request, response);
- entry.setFeedId(request.getFeedId());
- entry.setServiceConfig(request.getConfigurator());
- BaseEntry tempEntry = entry.getEntry();
- tempEntry.setPublished(getCurrentDateTime());
- tempEntry.setUpdated(getCurrentDateTime());
- BaseEntry retVal = null;
- removeDynamicElements(entry.getEntry());
- try {
- retVal = this.storage.storeEntry(entry);
- } catch (Exception e) {
-
- ServiceException ex = new ServiceException("Could not store entry",
- e,GDataResponse.SERVER_ERROR);
- ex.setStackTrace(e.getStackTrace());
- throw ex;
- }
- this.entryEventMediator.entryAdded(entry);
- return retVal;
- }
-
- /**
- * @see org.apache.lucene.gdata.server.Service#deleteEntry(org.apache.lucene.gdata.server.GDataRequest,
- * org.apache.lucene.gdata.server.GDataResponse)
- */
-
- public BaseEntry deleteEntry(GDataRequest request, GDataResponse response)
- throws ServiceException {
-
- ServerBaseEntry entry = new ServerBaseEntry();
- entry.setServiceConfig(request.getConfigurator());
- entry.setFeedId(request.getFeedId());
- entry.setId(request.getEntryId());
- setVersionId(entry,request,response);
- if (entry.getId() == null)
- throw new ServiceException(
- "entry id is null -- can not delete null entry",GDataResponse.SERVER_ERROR);
- try {
- this.storage.deleteEntry(entry);
-
- } catch (ResourceNotFoundException e) {
-
- ServiceException ex = new ServiceException(
- "Could not delete entry", e,GDataResponse.BAD_REQUEST);
- ex.setStackTrace(e.getStackTrace());
- throw ex;
- }catch (ModificationConflictException e) {
-
- ServiceException ex = new ServiceException(
- "Could not delete entry - version conflict",e, GDataResponse.CONFLICT);
- ex.setStackTrace(e.getStackTrace());
- throw ex;
- }catch (StorageException e) {
-
- ServiceException ex = new ServiceException(
- "Could not delete entry", e,GDataResponse.SERVER_ERROR);
- ex.setStackTrace(e.getStackTrace());
- throw ex;
- }
- this.entryEventMediator.entryDeleted(entry);
- //TODO change ret value
- return null;
- }
-
- /**
- * @see org.apache.lucene.gdata.server.Service#updateEntry(org.apache.lucene.gdata.server.GDataRequest,
- * org.apache.lucene.gdata.server.GDataResponse)
- */
-
- public BaseEntry updateEntry(GDataRequest request, GDataResponse response)
- throws ServiceException {
-
- ServerBaseEntry entry = buildEntry(request, response);
- entry.setFeedId(request.getFeedId());
- setVersionId(entry,request,response);
- entry.setServiceConfig(request.getConfigurator());
- if (LOG.isInfoEnabled())
- LOG.info("update Entry" + entry.getId() + " for feedId: "
- + request.getFeedId());
- if (entry.getId() == null) {
- throw new ServiceException("Entry id is null can not update entry",GDataResponse.BAD_REQUEST);
- }
- if (!entry.getId().equals(request.getEntryId())) {
- if (LOG.isInfoEnabled())
- LOG
- .info("Entry id in the entry xml does not match the requested resource -- XML-ID:"
- + entry.getId()
- + "; Requested resource: "
- + request.getEntryId());
-
- throw new ServiceException(
- "Entry id in the entry xml does not match the requested resource",GDataResponse.BAD_REQUEST);
- }
- BaseEntry tempEntry = entry.getEntry();
- tempEntry.setUpdated(getCurrentDateTime());
- removeDynamicElements(entry.getEntry());
-
- BaseEntry retVal = null;
-
- try {
- retVal = this.storage.updateEntry(entry);
- } catch (ResourceNotFoundException e) {
-
- ServiceException ex = new ServiceException(
- "Could not update entry", e,GDataResponse.BAD_REQUEST);
- ex.setStackTrace(e.getStackTrace());
- throw ex;
- }catch (ModificationConflictException e) {
- ServiceException ex = new ServiceException(
- "Could not update entry - version conflict", e,GDataResponse.CONFLICT);
- ex.setStackTrace(e.getStackTrace());
- throw ex;
- }catch (StorageException e) {
-
- ServiceException ex = new ServiceException(
- "Could not update entry", e,GDataResponse.SERVER_ERROR);
- ex.setStackTrace(e.getStackTrace());
- throw ex;
- }
- this.entryEventMediator.entryUpdated(entry);
- return retVal;
- }
-
- /**
- * @see org.apache.lucene.gdata.server.Service#getFeed(org.apache.lucene.gdata.server.GDataRequest,
- * org.apache.lucene.gdata.server.GDataResponse)
- */
- @SuppressWarnings("unchecked")
- public BaseFeed getFeed(GDataRequest request, GDataResponse response)
- throws ServiceException {
-
- ServerBaseFeed feed = new ServerBaseFeed();
- feed.setId(request.getFeedId());
- feed.setStartIndex(request.getStartIndex());
- feed.setItemsPerPage(request.getItemsPerPage());
- feed.setServiceConfig(request.getConfigurator());
- try {
- /*
- * the strategy executes either a search or a direct access.
- */
- BaseFeed retVal = this.storage.getFeed(feed);
- dynamicElementFeedStragey(retVal, request);
-
- return retVal;
- /*
- * Resource not found will be detected in Gdata request.
- * the request queries the storage for the feed to get the service for the feed
- */
- } catch (StorageException e) {
- ServiceException ex = new ServiceException("Could not get feed", e,GDataResponse.NOT_FOUND);
- ex.setStackTrace(e.getStackTrace());
- throw ex;
- }
-
- }
-
- private Link buildLink(String rel, String type, String href) {
- Link retVal = new Link();
- retVal.setHref(href);
- retVal.setRel(rel);
- retVal.setType(type);
- return retVal;
- }
-
- private ServerBaseEntry buildEntry(final GDataRequest request,
- final GDataResponse response) throws ServiceException {
- try {
- ServerBaseEntry entry = new ServerBaseEntry(GDataEntityBuilder
- .buildEntry(request));
- return entry;
-
- } catch (ParseException e) {
- ServiceException ex = new ServiceException(
- "Could not parse entry from incoming request", e, GDataResponse.BAD_REQUEST);
- ex.setStackTrace(e.getStackTrace());
- throw ex;
- } catch (IOException e) {
- ServiceException ex = new ServiceException(
- "Could not read or open input stream", e, GDataResponse.BAD_REQUEST);
- ex.setStackTrace(e.getStackTrace());
- throw ex;
- }
- }
-
-
- /**
- * @see org.apache.lucene.gdata.server.Service#getSingleEntry(org.apache.lucene.gdata.server.GDataRequest,
- * org.apache.lucene.gdata.server.GDataResponse)
- */
-
- public BaseEntry getSingleEntry(GDataRequest request, GDataResponse response)
- throws ServiceException {
-
- try {
- ServerBaseEntry entry = new ServerBaseEntry();
- entry.setServiceConfig(request.getConfigurator());
- entry.setFeedId(request.getFeedId());
- entry.setId(request.getEntryId());
-
-
- if(entry.getId() == null){
- throw new ServiceException("entry is null can't get entry", GDataResponse.BAD_REQUEST);
- }
-
- BaseEntry retVal = null;
- retVal = this.storage.getEntry(entry);
- dynamicElementEntryStragey(retVal, request);
- return retVal;
- } catch (ResourceNotFoundException e) {
- ServiceException ex = new ServiceException(
- "Could not get entry", e, GDataResponse.BAD_REQUEST);
- ex.setStackTrace(e.getStackTrace());
- throw ex;
- } catch (StorageException e) {
- ServiceException ex = new ServiceException("Could not get entry", e, GDataResponse.SERVER_ERROR);
- ex.setStackTrace(e.getStackTrace());
- throw ex;
- }
- }
-
- /*
- * adds all dynamic element to the entry
- */
- private void dynamicElementEntryStragey(final BaseEntry entry,
- final GDataRequest request) {
- setSelfLink(entry, request.getContextPath());
- }
-
- /*
- * adds all dynamic element to the feed entries
- */
- @SuppressWarnings("unchecked")
- protected void dynamicElementFeedStragey(final BaseFeed feed,
- final GDataRequest request) {
- buildDynamicFeedElements(request, feed);
- List entryList = feed.getEntries();
- for (BaseEntry entry : entryList) {
- String id = new StringBuilder(request.getContextPath()).append(entry.getId()).append("/").toString();
- setSelfLink(entry, id);
- }
-
- }
-
- /*
- * The selfLink is build from a prefix and the entry id. The prefix is the
- * context path of the requested feed. This will be used to request the
- * entry directly
- */@SuppressWarnings("unchecked")
- private BaseEntry setSelfLink(final BaseEntry entry, String id) {
- Link self = buildLink(Link.Rel.SELF, XMLMIME, id);
- StringBuilder builder = new StringBuilder(id);
- builder.append(entry.getVersionId());
- Link edit = buildLink(Link.Rel.ENTRY_EDIT,XMLMIME,builder.toString());
- List list = entry.getLinks();
- list.add(edit);
- list.add(self);
- return entry;
- }
-
- /*
- * build the dynamic elements like self link and next link
- */
- private void buildDynamicFeedElements(final GDataRequest request,
- final BaseFeed feed) {
- feed.setGenerator(generator);
- feed.setItemsPerPage(request.getItemsPerPage());
- feed.setStartIndex(request.getStartIndex());
- feed.setId(request.getContextPath());
- List links = feed.getLinks();
- links.add(
- buildLink(Link.Rel.SELF, Link.Type.ATOM, request.getSelfId()));
- links.add(
- buildLink(Link.Rel.NEXT, XMLMIME, request.getNextId()));
- String prevLink = request.getPreviousId();
- if(prevLink != null)
- links.add(buildLink(Link.Rel.PREVIOUS,XMLMIME,prevLink));
-
-
- }
-
- /**
- * @see org.apache.lucene.gdata.server.Service#close()
- */
- public void close() {
- this.storage.close();
- }
-
- /**
- * @see org.apache.lucene.gdata.server.Service#getFeedLastModified(java.lang.String)
- */
- public Date getFeedLastModified(final String feedId) throws ServiceException {
- try {
- return new Date(this.storage.getFeedLastModified(feedId));
-
- } catch (StorageException e) {
- ServiceException ex = new ServiceException(
- "Could not get Last update for feed -- "+feedId, e, GDataResponse.SERVER_ERROR);
- ex.setStackTrace(e.getStackTrace());
- throw ex;
- }
-
- }
-
- /**
- * @see org.apache.lucene.gdata.server.Service#getEntryLastModified(java.lang.String, java.lang.String)
- */
- public Date getEntryLastModified(final String entryId,final String feedId) throws ServiceException {
- try {
- return new Date(this.storage.getEntryLastModified(entryId, feedId));
- } catch (StorageException e) {
- ServiceException ex = new ServiceException(
- "Could not get Last update for entry -- "+entryId, e, GDataResponse.SERVER_ERROR);
- ex.setStackTrace(e.getStackTrace());
- throw ex;
- }
-
- }
- private ServerBaseEntry setVersionId(final ServerBaseEntry entry, final GDataRequest request, final GDataResponse response)throws ServiceException{
- try{
- entry.setVersion(Integer.parseInt(request.getEntryVersion()));
- return entry;
- }catch (Exception e) {
- LOG.error("Can not parse entry version -- version is not an integer -- versionid: "+request.getEntryVersion(),e);
- throw new ServiceException("Can not parse entry version -- version is not an integer -- versionid: "+request.getEntryVersion(),e, GDataResponse.BAD_REQUEST);
-
- }
- }
- /*
- * provide current time to set as published / updated values
- * always use servertime to prevent client / server time lag
- * Timezoneshift is 0
- */
- protected DateTime getCurrentDateTime(){
- return new DateTime(System.currentTimeMillis(),0);
- }
-
- private void removeDynamicElements(BaseEntry entry){
- Link selfLink = entry.getSelfLink();
- if(selfLink != null)
- entry.getLinks().remove(selfLink);
- Link editLink = entry.getEditLink();
- if(editLink != null)
- entry.getLinks().remove(editLink);
- }
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/Service.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/Service.java
deleted file mode 100644
index a3d7d8db4f7..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/Service.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.server;
-
-import java.util.Date;
-
-import com.google.gdata.data.BaseEntry;
-import com.google.gdata.data.BaseFeed;
-
-
-/**
- * The Service class represents an interface to access the GData service
- * componentes of the GData-Server. It encapsulates all interactions with the
- * GData client.
- *
- * This class provides the base level common functionality required to access
- * the GData components. It is also designed to act as a base class that can be
- * extended for specific types of underlaying server components as different
- * indexing or storage components.
- *
- *
- * It could also encapsulate caching mechanismn build on top of the storage to
- * reduce load on the storage component
- *
- *
- * @author Simon Willnauer
- *
- *
- */
-public interface Service {
-
- /**
- * Service method to create an entry in an already created and existing
- * feed. This method will create the entry and passes the entry to the
- * indexing component to make the new entry accessable via get-queries.
- * The response and the corresponding http status code will be added to the
- * given FeedResponse.
- *
- * @param request -
- * the current FeedRequest
- * @param response -
- * the current FeedResponse
- * @return - the entry which has been created
- * @throws ServiceException -
- * if the corresponding feed does not exist or the storage can
- * not be accessed
- */
- public abstract BaseEntry createEntry(final GDataRequest request,
- final GDataResponse response) throws ServiceException;
-
- /**
- * Service Method to delete an entry specified in the given FeedRequest.
- * This method will remove the entry permanently. There will be no
- * possiblity to restore the entry. The response and the corresponding http
- * status code will be added to the given FeedResponse.
- *
- * @param request -
- * the current FeedRequest
- * @param response -
- * the current FeedResponse
- * @return - the entry wich has been deleted
- * @throws ServiceException -
- * if the entry does not exist or the storage can not be
- * accessed
- */
- public abstract BaseEntry deleteEntry(GDataRequest request, final GDataResponse response)
- throws ServiceException;
-
- /**
- * Service method to update an existing entry in a existing feed context.
- * The entry version will be checked and a ServiceException
- * will be thrown if the version to update is outdated. The new entry will
- * be passed to the indexing component to make the version accessable via
- * get-queries.
- *
- * @param request -
- * the current FeedRequest
- * @param response -
- * the current FeedResponse
- * @return - the entry wich has been updated
- * @throws ServiceException -
- * if the corresponding feed does not exist, the storage can not
- * be accessed or the version to update is out of date.
- */
- public abstract BaseEntry updateEntry(final GDataRequest request,
- final GDataResponse response) throws ServiceException;
-
- /**
- * Service method to retrieve a requested Feed. The feed will also be added to
- * the given FeedResponse instance and can also be accessed
- * via the FeedResponse object.
- *
- * @param request -
- * the current FeedRequest
- * @param response -
- * the current FeedResponse
- * @return - the requested feed
- *
- * @throws ServiceException -
- * If the storage can not be accessed or the requested feed does
- * not exist.
- */
- public abstract BaseFeed getFeed(final GDataRequest request, final GDataResponse response)
- throws ServiceException;
-
- /**
- * Service method to retrieve a requested entry. The entry will also be added to
- * the given FeedResponse instance and can also be accessed
- * via the FeedResponse object.
- *
- * @param request -
- * the current FeedRequest
- * @param response -
- * the current FeedResponse
- * @return - the requested entry
- *
- * @throws ServiceException -
- * If the storage can not be accessed or the requested entry does
- * not exist.
- */
- public abstract BaseEntry getSingleEntry(final GDataRequest request, final GDataResponse response)
- throws ServiceException;
-
- /**
- * will close the Service - service should not be used after this method has been called
- */
- public void close();
-
- /**
- * Retruns the date of the last modification for the given feed id
- * @param feedId - the id of the feed
- * @return - the last modified date or the current date if the date can not be retrieved
- * @throws ServiceException - if the storage can not be accessed
- */
- public abstract Date getFeedLastModified(String feedId)throws ServiceException;
-
- /**
- * Retruns the date of the last modification for the given entry id
- * @param entryId - the id of the entry
- * @param feedId - the feed id this entry belongs to
- * @return - the last modified date or the current date if the date can not be retrieved
- * @throws ServiceException - if the storage can not be accessed
- */
- public abstract Date getEntryLastModified(String entryId, String feedId)throws ServiceException;
-
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/ServiceException.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/ServiceException.java
deleted file mode 100644
index 9643e2bca60..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/ServiceException.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.server;
-
-
-/**
- * The ServiceException is used to encapsulate all {@link java.lang.Exception}
- * throw by underlying layers of the
- * {@link org.apache.lucene.gdata.server.Service} layer.
- *
- * @author Simon Willnauer
- *
- */
-public class ServiceException extends Exception {
-
- private int errorCode;
- /**
- *
- */
- private static final long serialVersionUID = -7099825107871876584L;
-
- /**
- * Constructs a new ServiceException
- * @param errorCode - gdata request error code
- */
- public ServiceException(int errorCode) {
- super();
- this.errorCode = errorCode;
-
- }
-
- /**
- * Constructs a new ServiceException
- * @param arg0 - the exception message
- * @param errorCode - gdata request error code
- */
- public ServiceException(String arg0,int errorCode) {
- super(arg0);
- this.errorCode = errorCode;
- }
-
- /**
- * Constructs a new ServiceException
- * @param arg0 - the exception message
- * @param arg1 - the exception cause
- * @param errorCode - gdata request error code
- */
- public ServiceException(String arg0, Throwable arg1,int errorCode) {
- super(arg0, arg1);
- this.errorCode = errorCode;
-
- }
-
- /**
- * Constructs a new ServiceException
- * @param arg0 - the exception cause
- * @param errorCode - gdata request error code
- */
- public ServiceException(Throwable arg0,int errorCode) {
- super(arg0);
- this.errorCode = errorCode;
- }
-
- /**
- * @return Returns the errorCode.
- */
- public int getErrorCode() {
- return this.errorCode;
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/ServiceFactory.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/ServiceFactory.java
deleted file mode 100644
index 9476695ca9e..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/ServiceFactory.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.server;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.server.administration.AdminService;
-import org.apache.lucene.gdata.server.administration.GDataAdminService;
-import org.apache.lucene.gdata.server.registry.Component;
-import org.apache.lucene.gdata.server.registry.ComponentType;
-import org.apache.lucene.gdata.server.registry.ServerComponent;
-
-
-/**
- * The {@link ServiceFactory} creates {@link Service} implementations to access
- * the GData - Server components.
- * This class should not be access directy. The class will be registered in the {@link org.apache.lucene.gdata.server.registry.GDataServerRegistry}.
- * Use {@link org.apache.lucene.gdata.server.registry.GDataServerRegistry#lookup(Class, ComponentType)}
- *
- * @author Simon Willnauer
- *
- */
-@Component(componentType=ComponentType.SERVICEFACTORY)
-public class ServiceFactory implements ServerComponent {
-
- private static final Log LOG = LogFactory.getLog(ServiceFactory.class);
-
-
-
- /**
- * public constructor to enable loading via the registry
- * @see org.apache.lucene.gdata.server.registry.Component
- * @see org.apache.lucene.gdata.server.registry.GDataServerRegistry
- */
- public ServiceFactory() {
- //
- }
-
- /**
- * Creates a {@link Service} instance.
- * @param request - the request for this service
- *
- * @return a Service instance
- */
- public Service getService(GDataRequest request) {
- try{
- if(request.isSearchRequested())
- return new GDataSearchService();
- return new GDataService();
- }catch (Exception e) {
- //
- }
- return null;
- }
-
- /**
- * Creates a {@link AdminService} instance
- * @return a AdminService instance
- */
- public AdminService getAdminService(){
- try {
- return new GDataAdminService();
- } catch (ServiceException e) {
- LOG.warn("Factory method can not create GDataAdminService returning null-- "+e.getMessage(),e);
- }
- return null;
- }
-
- /**
- * @see org.apache.lucene.gdata.server.registry.ServerComponent#initialize()
- */
- public void initialize() {
- //
- }
-
- /**
- * @see org.apache.lucene.gdata.server.registry.ServerComponent#destroy()
- */
- public void destroy() {
- //
- }
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/administration/AccountBuilder.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/administration/AccountBuilder.java
deleted file mode 100644
index af823f2a5dc..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/administration/AccountBuilder.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.server.administration;
-
-import java.io.IOException;
-import java.io.Reader;
-import java.net.URL;
-
-
-
-import org.apache.commons.digester.Digester;
-import org.apache.lucene.gdata.data.GDataAccount;
-import org.apache.lucene.gdata.utils.SimpleSaxErrorHandler;
-import org.apache.xerces.parsers.SAXParser;
-import org.xml.sax.SAXException;
-
-/**
- * Helper class to create {@link org.apache.lucene.gdata.data.GDataAccount}
- * instances from a xml stream provided via a {@link Reader} instance.
- *
- * @author Simon Willnauer
- *
- */
-public class AccountBuilder {
-
- /**
- * Reads the xml from the provided reader and binds the values to the
- * @param reader - the reader to read the xml from
- * @return - the GDataAccount
- * @throws IOException - if an IOException occurs
- * @throws SAXException - if the xml can not be parsed by the sax reader
- */
- public static GDataAccount buildAccount(final Reader reader) throws IOException,
- SAXException {
- if (reader == null)
- throw new IllegalArgumentException("Reader must not be null");
- URL resource = AccountBuilder.class.getResource("/gdata-account.xsd");
- if(resource == null)
- throw new RuntimeException("can not find xml schema file 'gdata-account.xsd' -- file must be present on the classpath");
- String schemaFile = resource.getFile();
- GDataAccount account = null;
- /*
- * Force using apache xerces parser for digester
- */
- SAXParser parser = new SAXParser();
- parser.setFeature("http://apache.org/xml/features/validation/schema-full-checking",true);
- parser.setFeature("http://apache.org/xml/features/validation/schema",true);
- parser.setFeature("http://xml.org/sax/features/validation",true);
- parser.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation",schemaFile);
- Digester digester = new Digester(parser);
- digester.setValidating(true);
- digester.setErrorHandler(new SimpleSaxErrorHandler());
- digester.setSchema(schemaFile);
- digester.addObjectCreate("account", GDataAccount.class);
- digester.addBeanPropertySetter("account/account-name", "name");
- digester.addBeanPropertySetter("account/password", "password");
- digester.addBeanPropertySetter("account/account-role", "rolesAsInt");
- digester.addBeanPropertySetter("account/account-owner/name",
- "authorname");
- digester.addBeanPropertySetter("account/account-owner/email-address",
- "authorMail");
- digester.addBeanPropertySetter("account/account-owner/url",
- "authorLink");
-
- account = (GDataAccount) digester.parse(reader);
- return account;
- }
-
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/administration/AdminService.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/administration/AdminService.java
deleted file mode 100644
index b6e81b28007..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/administration/AdminService.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.server.administration;
-
-import org.apache.lucene.gdata.data.GDataAccount;
-import org.apache.lucene.gdata.data.ServerBaseFeed;
-import org.apache.lucene.gdata.server.Service;
-import org.apache.lucene.gdata.server.ServiceException;
-
-/**
- * The AdminService interface extends the Service interface to serve common
- * administrator requests. Common users can not create feed or user instances.
- * This interface provides all actions for create, delete or update Users and
- * Feeds. Each Feed has an associated Feed - Name which acts as an ID. Feed will
- * be identified by the feed name e.g. {@link com.google.gdata.data.Source#getId()}
- *
User accounts are supposed to have a unique username attribute as the username acts as a primary key for the storage
- *
- *
- * @author Simon Willnauer
- *
- */
-public interface AdminService extends Service {
-
- /**
- * Creates a new feed instance.
- *
- * @param feed -
- * the feed to create
- * @param account - the account who own this feed
- * @throws ServiceException -
- * if the feed can not be created
- */
- public abstract void createFeed(final ServerBaseFeed feed,
- final GDataAccount account) throws ServiceException;
-
- /**
- * Updates the given feed
- *
- * @param feed -
- * the feed to update
- * @param account - the account who own this feed
- *
- * @throws ServiceException -
- * if the feed can not be updated or does not exist.
- */
- public abstract void updateFeed(final ServerBaseFeed feed,
- final GDataAccount account) throws ServiceException;
-
- /**
- * Deletes the given feed and all containing entries from the storage. The feed will not be accessable
- * anymore.
- *
- * @param feed -
- * the feed to deltete
- *
- * @throws ServiceException -
- * if the feed can not be deleted or does not exist
- */
- public abstract void deleteFeed(final ServerBaseFeed feed) throws ServiceException;
-
- /**
- * Creates a new account accout.
- *
- * @param account -
- * the account to create
- * @throws ServiceException -
- * if the account can not be created or the account does already
- * exist.
- */
- public abstract void createAccount(final GDataAccount account)
- throws ServiceException;
-
- /**
- * Deletes the given account from the storage. it will also delete all
- * accociated feeds.
- *
- * @param account
- * the account to delete
- * @throws ServiceException -
- * if the account does not exist or the account can not be deleted
- */
- public abstract void deleteAccount(final GDataAccount account)
- throws ServiceException;
-
- /**
- * Updates the given account if the account already exists.
- *
- * @param account - the account to update
- * @throws ServiceException - if the account can not be updated or the account does not exist
- */
- public abstract void updateAccount(final GDataAccount account)
- throws ServiceException;
-
- /**
- * Returns the account for the given account name or null if the account does not exist
- *
- * @param account - account name
- * @return - the account for the given account name or null if the account does not exist
- * @throws ServiceException - if the account can not be accessed
- */
- public abstract GDataAccount getAccount(String account) throws ServiceException;
-
- /**
- * Returns the account associated with the feed for the given feed id
- * @param feedId - the feed id
- * @return - the GdataAccount assoziated with the feed for the given feed Id or null if there is no feed for the given feed Id
- * @throws ServiceException - if the storage can not be accessed
- */
- public abstract GDataAccount getFeedOwningAccount(String feedId) throws ServiceException;
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/administration/GDataAdminService.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/administration/GDataAdminService.java
deleted file mode 100644
index a4df68e5820..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/administration/GDataAdminService.java
+++ /dev/null
@@ -1,231 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.server.administration;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.data.GDataAccount;
-import org.apache.lucene.gdata.data.ServerBaseFeed;
-import org.apache.lucene.gdata.server.GDataResponse;
-import org.apache.lucene.gdata.server.GDataService;
-import org.apache.lucene.gdata.server.ServiceException;
-import org.apache.lucene.gdata.server.registry.ProvidedService;
-import org.apache.lucene.gdata.storage.StorageException;
-
-/**
- * default implementation of the
- * {@link org.apache.lucene.gdata.server.administration.AdminService} interface.
- *
- * @author Simon Willnauer
- *
- */
-public class GDataAdminService extends GDataService implements AdminService {
- private static final Log LOG = LogFactory.getLog(GDataAdminService.class);
-
- /**
- * @throws ServiceException
- */
- public GDataAdminService() throws ServiceException {
- super();
-
- }
-
- /**
- * @see org.apache.lucene.gdata.server.administration.AdminService#createFeed(org.apache.lucene.gdata.data.ServerBaseFeed,
- * org.apache.lucene.gdata.data.GDataAccount)
- */
- public void createFeed(final ServerBaseFeed feed, final GDataAccount account)
- throws ServiceException {
- if (feed == null)
- throw new ServiceException("Can not create feed -- feed is null",
- GDataResponse.BAD_REQUEST);
- if (account == null)
- throw new ServiceException(
- "Can not create feed -- account is null",
- GDataResponse.UNAUTHORIZED);
- if (feed.getId() == null)
- throw new ServiceException("Feed ID is null can not create feed",
- GDataResponse.BAD_REQUEST);
- if (account.getName() == null)
- throw new ServiceException(
- "Account name is null -- can't create feed",
- GDataResponse.UNAUTHORIZED);
- try {
- feed.setUpdated(getCurrentDateTime());
- feed.setAccount(account);
- this.storage.storeFeed(feed, account.getName());
- } catch (StorageException e) {
- if (LOG.isInfoEnabled())
- LOG.info("Can not save feed -- " + e.getMessage(), e);
- throw new ServiceException("Can not save feed", e,
- GDataResponse.BAD_REQUEST);
- }
-
- }
-
- /**
- * @see org.apache.lucene.gdata.server.administration.AdminService#updateFeed(org.apache.lucene.gdata.data.ServerBaseFeed,
- * org.apache.lucene.gdata.data.GDataAccount)
- */
- public void updateFeed(ServerBaseFeed feed, GDataAccount account)
- throws ServiceException {
- if (feed == null)
- throw new ServiceException("Can not update null feed",
- GDataResponse.BAD_REQUEST);
- if (account == null)
- throw new ServiceException(
- "Can not update feed -- account is null",
- GDataResponse.UNAUTHORIZED);
- if (feed.getId() == null)
- throw new ServiceException("Feed ID is null can not update feed",
- GDataResponse.BAD_REQUEST);
- if (account.getName() == null)
- throw new ServiceException(
- "Account name is null -- can't update feed",
- GDataResponse.UNAUTHORIZED);
- try {
- feed.setAccount(account);
- feed.setUpdated(getCurrentDateTime());
- this.storage.updateFeed(feed, account.getName());
- } catch (StorageException e) {
- if (LOG.isInfoEnabled())
- LOG.info("Can not update feed -- " + e.getMessage(), e);
- throw new ServiceException("Can not update feed", e,
- GDataResponse.BAD_REQUEST);
- }
-
- }
-
- /**
- * @see org.apache.lucene.gdata.server.administration.AdminService#deleteFeed(org.apache.lucene.gdata.data.ServerBaseFeed)
- */
- public void deleteFeed(ServerBaseFeed feed) throws ServiceException {
- if (feed == null)
- throw new ServiceException("Can not delete null feed",
- GDataResponse.BAD_REQUEST);
- if (feed.getId() == null)
- throw new ServiceException("Feed ID is null can not delete feed",
- GDataResponse.BAD_REQUEST);
- String serviceid = null;
- try {
- serviceid = this.storage.getServiceForFeed(feed.getId());
- this.storage.deleteFeed(feed.getId());
- } catch (StorageException e) {
- if (LOG.isInfoEnabled())
- LOG.info("Can not delete feed -- " + e.getMessage(), e);
- throw new ServiceException("Can not delete feed", e,
- GDataResponse.BAD_REQUEST);
- }
- ProvidedService service = this.registry.getProvidedService(serviceid);
- feed.setServiceConfig(service);
- this.entryEventMediator.allEntriesDeleted(feed);
-
- }
-
- /**
- * @see org.apache.lucene.gdata.server.administration.AdminService#createAccount(org.apache.lucene.gdata.data.GDataAccount)
- */
- public void createAccount(GDataAccount account) throws ServiceException {
- if (account == null)
- throw new ServiceException("Can not save null account",
- GDataResponse.BAD_REQUEST);
- try {
- this.storage.storeAccount(account);
- } catch (StorageException e) {
- if (LOG.isInfoEnabled())
- LOG.info("Can not save account -- " + e.getMessage(), e);
- throw new ServiceException("Can not save account", e,
- GDataResponse.BAD_REQUEST);
- }
- }
-
- /**
- * @see org.apache.lucene.gdata.server.administration.AdminService#deleteAccount(org.apache.lucene.gdata.data.GDataAccount)
- */
- public void deleteAccount(GDataAccount account) throws ServiceException {
- if (account == null)
- throw new ServiceException("Can not delete null account",
- GDataResponse.BAD_REQUEST);
- try {
- this.storage.deleteAccount(account.getName());
- } catch (StorageException e) {
- if (LOG.isInfoEnabled())
- LOG.info("Can not save account -- " + e.getMessage(), e);
- throw new ServiceException("Can not save account", e,
- GDataResponse.BAD_REQUEST);
- }
- }
-
- /**
- * @see org.apache.lucene.gdata.server.administration.AdminService#updateAccount(org.apache.lucene.gdata.data.GDataAccount)
- */
- public void updateAccount(GDataAccount account) throws ServiceException {
- if (account == null)
- throw new ServiceException("Can not update null account",
- GDataResponse.BAD_REQUEST);
- try {
- this.storage.updateAccount(account);
- } catch (StorageException e) {
- if (LOG.isInfoEnabled())
- LOG.info("Can not save account -- " + e.getMessage(), e);
- throw new ServiceException("Can not save account", e,
- GDataResponse.BAD_REQUEST);
- }
- }
-
- /**
- * @see org.apache.lucene.gdata.server.administration.AdminService#getAccount(java.lang.String)
- */
- public GDataAccount getAccount(String accountName) throws ServiceException {
- if (accountName == null)
- throw new ServiceException("Can not get null account",
- GDataResponse.BAD_REQUEST);
- try {
- return this.storage.getAccount(accountName);
- } catch (StorageException e) {
- if (LOG.isInfoEnabled())
- LOG.info("Can not get account -- " + e.getMessage(), e);
- throw new ServiceException("Can not get account", e,
- GDataResponse.BAD_REQUEST);
- }
-
- }
-
- /**
- * @see org.apache.lucene.gdata.server.administration.AdminService#getFeedOwningAccount(java.lang.String)
- */
- public GDataAccount getFeedOwningAccount(String feedId)
- throws ServiceException {
- if (feedId == null)
- throw new ServiceException(
- "Can not get account - feed id must not be null",
- GDataResponse.BAD_REQUEST);
- try {
- String accountName = this.storage.getAccountNameForFeedId(feedId);
- return this.storage.getAccount(accountName);
-
- } catch (StorageException e) {
- if (LOG.isInfoEnabled())
- LOG.info(
- "Can not get account for feed Id -- " + e.getMessage(),
- e);
- throw new ServiceException(
- "Can not get account for the given feed id", e,
- GDataResponse.BAD_REQUEST);
- }
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/administration/package.html b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/administration/package.html
deleted file mode 100644
index 3ea9939e179..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/administration/package.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-Classes and Services used for user and feed configuration
-
-
\ No newline at end of file
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/authentication/AuthenticationController.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/authentication/AuthenticationController.java
deleted file mode 100644
index 6102735f307..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/authentication/AuthenticationController.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.server.authentication;
-
-import org.apache.lucene.gdata.data.GDataAccount;
-import org.apache.lucene.gdata.data.GDataAccount.AccountRole;
-import org.apache.lucene.gdata.server.registry.ServerComponent;
-
-/**
- * Implementations of the AuthenticationController interface contain all the
- * logic for processing token based authentification. A token is an encoded
- * unique String value passed back to the client if successfully
- * authenticated. Clients provide account name, password, the requested service
- * and the name of the application used for accessing the the gdata service.
- *
- * The algorithmn to create and reauthenticate the token can be choosen by the
- * implementor. This interface extends
- * {@link org.apache.lucene.gdata.server.registry.ServerComponent} e.g.
- * implementing classes can be registered as a
- * {@link org.apache.lucene.gdata.server.registry.Component} in the
- * {@link org.apache.lucene.gdata.server.registry.GDataServerRegistry} to be
- * accessed via the provided lookup service
- *
- *
- * @see org.apache.lucene.gdata.server.authentication.BlowfishAuthenticationController
- * @author Simon Willnauer
- *
- */
-public interface AuthenticationController extends ServerComponent {
-
- /**
- * The header name containing the authentication token provided by the
- * client
- */
- public static final String AUTHORIZATION_HEADER = "Authorization";
-
- /**
- * Authentication parameter for the account name. Provided by the client to
- * recieve the auth token.
- */
- public static final String ACCOUNT_PARAMETER = "Email";
-
- /**
- * Authentication parameter for the account password. Provided by the client
- * to recieve the auth token.
- */
- public static final String PASSWORD_PARAMETER = "Passwd";
-
- /**
- * Authentication parameter for the requested service. Provided by the
- * client to recieve the auth token.
- */
- public static final String SERVICE_PARAMETER = "service";
-
- /**
- * Authentication parameter for the application name of the clients
- * application. This is just used for loggin purposes
- */
- public static final String APPLICATION_PARAMETER = "source";
-
- /**
- * The key used for respond the auth token to the client. Either as a cookie
- * (key as cookie name) or as plain response (TOKEN_KEY=TOKEN)
- */
- public final static String TOKEN_KEY = "Auth";
-
- /**
- * Creates a authentication token for the given account. The token will be
- * calculated based on a part of the clients ip address, the account role
- * and the account name and the time in millisecond at the point of
- * creation.
- *
- * @param account -
- * the account to create the token for
- * @param requestIp -
- * the clients request ip address
- * @return - a BASE64 encoded authentification token
- */
- public abstract String authenticatAccount(GDataAccount account,
- String requestIp);
-
- /**
- * Authenticates the given auth token and checks the given parameter for
- * matching the information contained inside the token.
- *
- * if the given account name is null the authentication will
- * ignore the account name and the decision whether the token is valid or
- * not will be based on the given role compared to the role inside the token
- *
- *
- * @param token -
- * the token to authenticate
- * @param requestIp -
- * the client request IP address
- * @param role -
- * the required role
- * @param accountName -
- * the name of the account
- * @return true if the given values match the values inside
- * the token and if the timestamp plus the configured timeout is
- * greater than the current time, if one of the values does not
- * match or the token has timed out it will return
- * false
- */
- public abstract boolean authenticateToken(final String token,
- final String requestIp, AccountRole role, String accountName);
-
-}
\ No newline at end of file
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/authentication/AuthenticationException.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/authentication/AuthenticationException.java
deleted file mode 100644
index 40fa48971f9..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/authentication/AuthenticationException.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.server.authentication;
-
-/**
- *
- * @author Simon Willnauer
- *
- */
-public class AuthenticationException extends Exception {
-
- /**
- *
- */
- private static final long serialVersionUID = 5467768078178612671L;
-
- /**
- * Constructs a new Authentication Exception
- */
- public AuthenticationException() {
- super();
-
- }
-
- /**
- * Constructs a new Authentication Exception with the specified detail message
- * @param arg0 - detail message
- */
- public AuthenticationException(String arg0) {
- super(arg0);
-
- }
-
- /**
- * Constructs a new Authentication Exception with the specified detail message and
- * nested exception caused this exception.
- * @param arg0 -
- * detail message
- * @param arg1 -
- * nested exception
- */
- public AuthenticationException(String arg0, Throwable arg1) {
- super(arg0, arg1);
-
- }
-
- /**
- * Constructs a new Authentication Exception with a nested exception caused this exception
- * @param arg0 - nested exception
- */
- public AuthenticationException(Throwable arg0) {
- super(arg0);
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/authentication/AuthenticatorException.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/authentication/AuthenticatorException.java
deleted file mode 100644
index ca972bca4d3..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/authentication/AuthenticatorException.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.server.authentication;
-
-/**
- * This exception will be thrown by
- * {@link org.apache.lucene.gdata.server.authentication.AuthenticationController}
- * implementations if an error while de/encrypting the token occures.
- *
- * @author Simon Willnauer
- *
- */
-public class AuthenticatorException extends RuntimeException {
-
- private static final long serialVersionUID = -5690495392712564651L;
-
- /**
- * Constructs a new Authenticator Exception
- */
- public AuthenticatorException() {
- super();
-
- }
-
- /**
- * Constructs a new Authenticator Exception with the specified detail message.
- * @param arg0 - detail message
- */
- public AuthenticatorException(String arg0) {
- super(arg0);
-
- }
-
- /**
- * Constructs a new Authenticator Exception with the specified detail message and
- * nested exception.
- *
- * @param arg0 -
- * detail message
- * @param arg1 -
- * nested exception
- */
- public AuthenticatorException(String arg0, Throwable arg1) {
- super(arg0, arg1);
-
- }
-
- /**
- * Constructs a new Authenticator Exception with a nested exception caused this exception.
- * @param arg0 - nested exception
- */
- public AuthenticatorException(Throwable arg0) {
- super(arg0);
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/authentication/BlowfishAuthenticationController.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/authentication/BlowfishAuthenticationController.java
deleted file mode 100644
index 8c04ec615a9..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/authentication/BlowfishAuthenticationController.java
+++ /dev/null
@@ -1,277 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.server.authentication;
-
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.security.Provider;
-import java.security.Security;
-import java.util.StringTokenizer;
-import java.util.concurrent.locks.ReentrantLock;
-
-import javax.crypto.BadPaddingException;
-import javax.crypto.Cipher;
-import javax.crypto.IllegalBlockSizeException;
-import javax.crypto.KeyGenerator;
-import javax.crypto.spec.SecretKeySpec;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.data.GDataAccount;
-import org.apache.lucene.gdata.data.GDataAccount.AccountRole;
-import org.apache.lucene.gdata.server.registry.Component;
-import org.apache.lucene.gdata.server.registry.ComponentType;
-import org.apache.lucene.gdata.server.registry.configuration.Requiered;
-
-import sun.misc.BASE64Decoder;
-import sun.misc.BASE64Encoder;
-
-/**
- * A
- * {@link org.apache.lucene.gdata.server.authentication.AuthenticationController}
- * implmentation using a Blowfish algorithmn to en/decrpyt the
- * authentification token. The Blowfish algorithmn enables a stateless
- * authetication of the client. The token contains all information to
- * authenticate the client on possible other hosts.
- *
- * The token contains the first 32 bit of the client ip (e.g. 192.168.0),
- * account name, {@link org.apache.lucene.gdata.data.GDataAccount.AccountRole}
- * and the cration time as a timestamp. The timestamp will be checked on every
- * subsequent request. If the timestamp plus the configured timeout is less
- * than the current time the client has to reauthenticate again.
- *
- *
- * The auth token returned by the
- * {@link BlowfishAuthenticationController#authenticatAccount(GDataAccount, String)}
- * method is a BASE64 encoded string.
- *
- *
- * @see javax.crypto.Cipher
- * @see sun.misc.BASE64Encoder
- * @see sun.misc.BASE64Decoder
- * @author Simon Willnauer
- *
- */
-@Component(componentType = ComponentType.AUTHENTICATIONCONTROLLER)
-public class BlowfishAuthenticationController implements
- AuthenticationController {
- private static final Log LOG = LogFactory
- .getLog(BlowfishAuthenticationController.class);
-
- private static final String ALG = "Blowfish";
-
- private static final String TOKEN_LIMITER = "#";
-
- private static final String ENCODING = "UTF-8";
-
- private Cipher deCrypt;
-
- private Cipher enCrypt;
-
- private int minuteOffset = 30;
-
- private long milisecondOffset;
-
- private BASE64Encoder encoder = new BASE64Encoder();
-
- private BASE64Decoder decoder = new BASE64Decoder();
-
- private ReentrantLock lock = new ReentrantLock();
-
-
- private String key;
-
- /**
- * @see org.apache.lucene.gdata.server.authentication.AuthenticationController#initialize()
- */
- public void initialize() {
- if (this.key == null)
- throw new IllegalArgumentException("Auth key must not be null");
- if (this.key.length() < 5 || this.key.length() > 16)
- throw new IllegalArgumentException(
- "Auth key length must be greater than 4 and less than 17");
-
- try {
- Provider sunJce = new com.sun.crypto.provider.SunJCE();
- Security.addProvider(sunJce);
- KeyGenerator kgen = KeyGenerator.getInstance(ALG);
- kgen.init(448); // 448 Bit^M
- byte[] raw = this.key.getBytes();
- SecretKeySpec skeySpec = new SecretKeySpec(raw, ALG);
- this.deCrypt = Cipher.getInstance(ALG);
- this.enCrypt = Cipher.getInstance(ALG);
- this.deCrypt.init(Cipher.DECRYPT_MODE, skeySpec);
- this.enCrypt.init(Cipher.ENCRYPT_MODE, skeySpec);
- } catch (Exception e) {
- throw new AuthenticatorException(
- "Can't initialize BlowfishAuthenticationController -- "
- + e.getMessage(), e);
-
- }
- calculateTimeOffset();
- }
-
- /**
- * @see org.apache.lucene.gdata.server.authentication.AuthenticationController#authenticatAccount(org.apache.lucene.gdata.data.GDataAccount,
- * java.lang.String)
- */
- public String authenticatAccount(GDataAccount account, String requestIp) {
- try {
- String passIp = requestIp.substring(0, requestIp.lastIndexOf('.'));
- String role = Integer.toString(account.getRolesAsInt());
-
- return calculateAuthToken(passIp, role, account.getName());
- } catch (Exception e) {
- throw new AuthenticatorException("Can not authenticat account -- "
- + e.getMessage(), e);
-
- }
- }
-
- /**
- * @see org.apache.lucene.gdata.server.authentication.AuthenticationController#authenticateToken(java.lang.String,
- * java.lang.String,
- * org.apache.lucene.gdata.data.GDataAccount.AccountRole,
- * java.lang.String)
- */
- public boolean authenticateToken(final String token,
- final String requestIp, AccountRole role, String accountName) {
- if (LOG.isInfoEnabled())
- LOG.info("authenticate Token " + token + " for requestIp: "
- + requestIp);
- if (token == null || requestIp == null)
- return false;
- String passIp = requestIp.substring(0, requestIp.lastIndexOf('.'));
- String authString = null;
- try {
- authString = deCryptAuthToken(token);
- } catch (Exception e) {
- throw new AuthenticatorException("Can not decrypt token -- "
- + e.getMessage(), e);
- }
- if (authString == null)
- return false;
- try {
- StringTokenizer tokenizer = new StringTokenizer(authString,
- TOKEN_LIMITER);
- if (!tokenizer.nextToken().equals(passIp))
- return false;
- String tempAccountName = tokenizer.nextToken();
- int intRole = Integer.parseInt(tokenizer.nextToken());
- /*
- * Authentication goes either for a account role or a account. For
- * entry manipulation the account name will be retrieved by the
- * feedId otherwise it will be null If it is null the authentication
- * goes against the account role
- */
- if (tempAccountName == null
- || (!tempAccountName.equals(accountName) && !GDataAccount
- .isInRole(intRole, role)))
- return false;
- long timeout = Long.parseLong(tokenizer.nextToken());
-
- return (timeout + this.milisecondOffset) > System
- .currentTimeMillis();
- } catch (Exception e) {
- LOG.error("Error occured while encrypting token " + e.getMessage(),
- e);
- return false;
- }
-
- }
-
- private void calculateTimeOffset() {
- this.milisecondOffset = this.minuteOffset * 60 * 1000;
- }
-
- protected String calculateAuthToken(final String ipAddress,
- final String role, String accountName)
- throws IllegalBlockSizeException, BadPaddingException,
- UnsupportedEncodingException {
- StringBuilder builder = new StringBuilder();
- builder.append(ipAddress).append(TOKEN_LIMITER);
- builder.append(accountName).append(TOKEN_LIMITER);
- builder.append(role).append(TOKEN_LIMITER);
- builder.append(System.currentTimeMillis());
-
- this.lock.lock();
- try {
- byte[] toencode = builder.toString().getBytes(ENCODING);
- byte[] result = this.enCrypt.doFinal(toencode);
- return this.encoder.encode(result);
- } finally {
- this.lock.unlock();
-
- }
-
- }
-
- protected String deCryptAuthToken(final String authToken)
- throws IOException, IllegalBlockSizeException, BadPaddingException {
- this.lock.lock();
- try {
- byte[] input = this.decoder.decodeBuffer(authToken);
- byte[] result = this.deCrypt.doFinal(input);
- return new String(result, ENCODING);
- } finally {
- this.lock.unlock();
- }
-
- }
-
- /**
- * @return Returns the minuteOffset.
- */
- @Requiered
- public int getLoginTimeout() {
- return this.minuteOffset;
- }
-
- /**
- * @param minuteOffset
- * The minuteOffset to set.
- */
- @Requiered
- public void setLoginTimeout(int minuteOffset) {
- this.minuteOffset = minuteOffset;
- calculateTimeOffset();
- }
-
- /**
- * @return Returns the key.
- */
- public String getKey() {
- return this.key;
- }
-
- /**
- * @param key
- * The key to set.
- */
- public void setKey(String key) {
- this.key = key;
- }
-
- /**
- * @see org.apache.lucene.gdata.server.registry.ServerComponent#destroy()
- */
- public void destroy() {
- //
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/authentication/GDataHttpAuthenticator.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/authentication/GDataHttpAuthenticator.java
deleted file mode 100644
index 5062e75d011..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/authentication/GDataHttpAuthenticator.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.server.authentication;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.lucene.gdata.data.GDataAccount.AccountRole;
-import org.apache.lucene.gdata.server.GDataRequest;
-
-/**
- * The GData protocol is based on the widly know REST approach and therefor
- * client authentication will mostly be provided via a REST interface.
- *
- * This interface describes internally used authentication methods to be
- * implemented by http based authenticator implementations. The GData Server
- * basically has 2 different REST interfaces need authentication. One is for
- * altering feed entries and the other for administration actions.
- *
- *
The interface altering entries work with {@link com.google.gdata.client.Service.GDataRequest} object created by the handler and passed to the {@link org.apache.lucene.gdata.server.Service} instance.
- * Administration interfaces use the plain {@link javax.servlet.http.HttpServletRequest} inside the handler.
- * For each type of interface a authentication type a method has to be provided by implementing classes.
- *
- * @author Simon Willnauer
- *
- */
-public interface GDataHttpAuthenticator {
-
- /**
- * Authenticates the client request based on the given GdataRequst and required account role
- * @param request - the gdata request
- * @param role - the required role for passing the authentication
- *
- * @return true if the request successfully authenticates, otherwise false
- */
- public boolean authenticateAccount(final GDataRequest request,
- AccountRole role);
-
- /**
- * Authenticates the client request based on the given requst and required account role
- * @param request - the client request
- * @param role - the required role for passing the authentication
- * @return true if the request successfully authenticates, otherwise false
- */
- public boolean authenticateAccount(final HttpServletRequest request,
- AccountRole role);
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/authentication/package.html b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/authentication/package.html
deleted file mode 100644
index 2b5672bd965..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/authentication/package.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-Classes and Exceptions used for client authentification.
-
-
\ No newline at end of file
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/package.html b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/package.html
deleted file mode 100644
index 6363daf2743..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/package.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-GData-Server classes encapsulation all protocol-level interactions and underlaying GData components.
-
-
\ No newline at end of file
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/Component.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/Component.java
deleted file mode 100644
index 4733cdd9213..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/Component.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.server.registry;
-
-import static java.lang.annotation.ElementType.TYPE;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * The {@link Component} annotation is used to annotate a class as a
- * server-component of the GDATA-Server. Annotated class can be configured via
- * the gdata-config.xml file to be looked up by aribaty classes at runtime via
- * the
- * {@link org.apache.lucene.gdata.server.registry.GDataServerRegistry#lookup(Class, ComponentType)}
- * method.
- *
- * Classes annotated with the Component annotation need to provide a default
- * constructor to be instanciated via reflection. Components of the GData-Server
- * are definded in the
- * {@link org.apache.lucene.gdata.server.registry.ComponentType} enumeration.
- * Each of the enum types are annotated with a
- * {@link org.apache.lucene.gdata.server.registry.SuperType} annotation. This
- * annotation specifies the super class or interface of the component. A class
- * annotated with the Component annotation must implement or extends this
- * defined super-type. This enables developers to use custom implemetations of
- * the component like a custom {@link org.apache.lucene.gdata.storage.Storage}.
- *
- *
- * Each ComponentType can only registerd once as the
- * {@link org.apache.lucene.gdata.server.registry.GDataServerRegistry} does not
- * provide multipe instances of a ComponentType.
- *
- *
- * This annotation can only annotate types and can be accessed at runtime.
- * {@link java.lang.annotation.Target} ==
- * {@link java.lang.annotation.ElementType#TYPE} and
- * {@link java.lang.annotation.Retention} ==
- * {@link java.lang.annotation.RetentionPolicy#RUNTIME}.
- *
- * @see org.apache.lucene.gdata.server.registry.GDataServerRegistry
- * @see org.apache.lucene.gdata.server.registry.ComponentType
- * @see org.apache.lucene.gdata.server.registry.SuperType
- *
- *
- * @author Simon Willnauer
- *
- */
-@Target( { TYPE })
-@Retention(value = RUNTIME)
-public @interface Component {
-
- /**
- * @see ComponentType
- * @return - the component type
- */
- ComponentType componentType();
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/ComponentType.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/ComponentType.java
deleted file mode 100644
index cdbcdb06b34..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/ComponentType.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package org.apache.lucene.gdata.server.registry;
-
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import org.apache.lucene.gdata.search.SearchComponent;
-import org.apache.lucene.gdata.server.ServiceFactory;
-import org.apache.lucene.gdata.server.authentication.AuthenticationController;
-import org.apache.lucene.gdata.servlet.handler.RequestHandlerFactory;
-import org.apache.lucene.gdata.storage.StorageController;
-
-/**
- * The enumeration {@link ComponentType} defines the GDATA-Server Components
- * available via {@link org.apache.lucene.gdata.server.registry.GDataServerRegistry#lookup(Class, ComponentType)}
- * method.
- * @see org.apache.lucene.gdata.server.registry.Component
- * @see org.apache.lucene.gdata.server.registry.GDataServerRegistry
- * @author Simon Willnauer
- *
- */
-public enum ComponentType {
- /**
- * StorageController Type
- *
- * @see StorageController
- */
- @SuperType(superType = StorageController.class)
- STORAGECONTROLLER,
- /**
- * RequestHandlerFactory Type
- *
- * @see RequestHandlerFactory
- */
- @SuperType(superType = RequestHandlerFactory.class)
- REQUESTHANDLERFACTORY,
- /**
- * SearchComponent Type
- * @see SearchComponent
- */
- @SuperType(superType = SearchComponent.class)
- SEARCHCONTROLLER,
- /**
- * ServiceFactory Type
- *
- * @see ServiceFactory
- */
- @SuperType(superType = ServiceFactory.class)
- SERVICEFACTORY,
- /**
- * Super type for AuthenticationController implementations
- * @see AuthenticationController
- */
- @SuperType(superType = AuthenticationController.class)
- AUTHENTICATIONCONTROLLER
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/DataBuilderException.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/DataBuilderException.java
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/EntryEventListener.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/EntryEventListener.java
deleted file mode 100755
index 9291a7fd32a..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/EntryEventListener.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.server.registry;
-
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.data.ServerBaseFeed;
-
-/**
- * The EntryEventListener interface should be implemented by any class needs to be informed about any changes on entries.
- * To register a class as a EntryEventListener use:
- *
- *
- *
- */
-public interface EntryEventListener {
- /**
- * will be invoked on every successful update on every entry
- * @param entry the updated entry
- */
- public abstract void fireUpdateEvent(ServerBaseEntry entry);
- /**
- * will be invoked on every successful entry insert
- * @param entry
- */
- public abstract void fireInsertEvent(ServerBaseEntry entry);
- /**
- * will be invoked on every successful entry delete
- * @param entry
- */
- public abstract void fireDeleteEvent(ServerBaseEntry entry);
-
- /**
- * will be invoked on every successful feed delete
- * @param feed - the feed containing the feed id to delete all entries for
- */
- public abstract void fireDeleteAllEntries(ServerBaseFeed feed);
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/EntryEventMediator.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/EntryEventMediator.java
deleted file mode 100755
index ad5ae4d80a7..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/EntryEventMediator.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.server.registry;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.data.ServerBaseFeed;
-
-/**
- * This class will be informed about every successful entry event and
- * distributes all event to all registered
- * {@link org.apache.lucene.gdata.server.registry.EntryEventListener}
- *
- *
- *
- */
-public abstract class EntryEventMediator {
-
- private final List entryEventListener = new ArrayList(
- 5);
-
- /**
- * @return - a entry event mediator instance
- */
- public abstract EntryEventMediator getEntryEventMediator();
-
- /**
- * Registers a {@link EntryEventListener}. This listener will be fired if an
- * entry update, insert or delete occurs
- *
- * @param listener -
- * listener to register
- */
- public void registerEntryEventListener(final EntryEventListener listener) {
- if (listener == null || this.entryEventListener.contains(listener))
- return;
- this.entryEventListener.add(listener);
- }
-
- /**
- * @param entry -
- * the updated entry
- */
- public void entryUpdated(final ServerBaseEntry entry) {
- for (EntryEventListener listener : this.entryEventListener) {
- listener.fireUpdateEvent(entry);
- }
- }
-
- /**
- * @param entry -
- * the added entry
- */
- public void entryAdded(final ServerBaseEntry entry) {
- for (EntryEventListener listener : this.entryEventListener) {
- listener.fireInsertEvent(entry);
- }
- }
-
- /**
- * @param feed - the feed to delete all entries for
- */
- public void allEntriesDeleted(final ServerBaseFeed feed){
- for (EntryEventListener listener : this.entryEventListener) {
- listener.fireDeleteAllEntries(feed);
- }
- }
-
- /**
- * @param entry -
- * the deleted entry
- */
- public void entryDeleted(final ServerBaseEntry entry) {
- for (EntryEventListener listener : this.entryEventListener) {
- listener.fireDeleteEvent(entry);
- }
- }
-
- /**
- * checks if the listener is already registered.
- * @param listner - the listener to check
- * @return true if and only if the given listener is already registered, otherwise false.
- */
- public boolean isListenerRegistered(final EntryEventListener listner){
- return listner!=null&&this.entryEventListener.contains(listner);
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/FeedInstanceConfigurator.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/FeedInstanceConfigurator.java
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/GDataRequestListener.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/GDataRequestListener.java
deleted file mode 100755
index fa266d74e6f..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/GDataRequestListener.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.server.registry;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.servlet.ServletRequestEvent;
-import javax.servlet.ServletRequestListener;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.server.registry.Scope.ScopeType;
-
-/**
- * This ServletRequestListener is used by the registry to notify
- * registered {@link org.apache.lucene.gdata.server.registry.ScopeVisitor}
- * implementations when a request is initialized e.g destroyed.
- *
- *
- * @see org.apache.lucene.gdata.server.registry.ScopeVisitable
- * @see javax.servlet.ServletRequestListener
- *
- *
- */
-@Scope(scope = ScopeType.REQUEST)
-public class GDataRequestListener implements ServletRequestListener,
- ScopeVisitable {
- private final GDataServerRegistry registry;
-
- private final List visitors = new ArrayList(5);
-
- private static final Log LOG = LogFactory
- .getLog(GDataRequestListener.class);
-
- /**
- * @throws RegistryException
- *
- */
- public GDataRequestListener() throws RegistryException {
- this.registry = GDataServerRegistry.getRegistry();
- this.registry.registerScopeVisitable(this);
-
- }
-
- /**
- * @see javax.servlet.ServletRequestListener#requestDestroyed(javax.servlet.ServletRequestEvent)
- */
- public void requestDestroyed(ServletRequestEvent arg0) {
- for (ScopeVisitor visitor : this.visitors) {
- visitor.visiteDestroy();
- }
-
- }
-
- /**
- * @see javax.servlet.ServletRequestListener#requestInitialized(javax.servlet.ServletRequestEvent)
- */
- public void requestInitialized(ServletRequestEvent arg0) {
- for (ScopeVisitor visitor : this.visitors) {
- visitor.visiteInitialize();
- }
- }
-
- /**
- * @see org.apache.lucene.gdata.server.registry.ScopeVisitable#accept(org.apache.lucene.gdata.server.registry.ScopeVisitor)
- */
- public void accept(ScopeVisitor visitor) {
-
- if (!this.visitors.contains(visitor) && visitor != null) {
- this.visitors.add(visitor);
- if(LOG.isDebugEnabled())
- LOG.debug("visitor added -- " + visitor.getClass());
- }
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/GDataServerRegistry.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/GDataServerRegistry.java
deleted file mode 100644
index 00593479edc..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/GDataServerRegistry.java
+++ /dev/null
@@ -1,378 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.server.registry;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.server.registry.configuration.ComponentConfiguration;
-import org.apache.lucene.gdata.server.registry.configuration.PropertyInjector;
-import org.apache.lucene.gdata.utils.ReflectionUtils;
-
-/**
- *
- * The GDataServerRegistry represents the registry component of the GData
- * Server. All provided services and server components will be registered here.
- * The GData Server serves RSS / ATOM feeds for defined services. Each service
- * provides n feeds of a defined subclass of
- * {@link com.google.gdata.data.BaseFeed}. Each feed contains m entries
- * of a defined subclass of {@link com.google.gdata.data.BaseEntry}. To
- * generate RSS / ATOM formates a class of the type
- * {@link com.google.gdata.data.ExtensionProfile} is also defined for a service.
- *
- * The entry,feed and the ExtensionProfile classes are defined in the
- * gdata-config.xml and will be loaded when the server starts up.
- *
- *
- * The components defined in the gdata-config.xml will also be loaded and
- * instantiated at startup. If a component can not be loaded or an Exception
- * occurs the server will not start up. To cause of the exception or error will
- * be logged to the standard server output.
- *
- *
- * The GDataServerRegistry is a Singleton
- *
- *
- *
- * @author Simon Willnauer
- *
- */
-public class GDataServerRegistry extends EntryEventMediator{
- private static GDataServerRegistry INSTANCE;
-
- private static final Log LOG = LogFactory
- .getLog(GDataServerRegistry.class);
-
- private ScopeVisitable requestVisitable;
-
- private ScopeVisitable sessionVisitable;
-
- // not available yet
- private ScopeVisitable contextVisitable;
-
- private List visitorBuffer = new ArrayList(5);
-
- private final Map serviceTypeMap = new HashMap();
-
- private final Map componentMap = new HashMap(
- ComponentType.values().length);
-
- private GDataServerRegistry() {
- // private - singleton
- }
-
- /**
- * @return a Singleton registry instance
- */
- public static synchronized GDataServerRegistry getRegistry() {
- if (INSTANCE == null)
- INSTANCE = new GDataServerRegistry();
- return INSTANCE;
- }
-
- /**
- * Registers a {@link ProvidedService}
- *
- * @param configurator -
- * the configurator to register in the registry
- */
- public void registerService(ProvidedService configurator) {
- if (configurator == null) {
- LOG.warn("Feed configurator is null -- skip registration");
- return;
- }
- this.serviceTypeMap.put(configurator.getName(), configurator);
- }
-
- /**
- * @param visitor -
- * the visitor to register
- * @throws RegistryException
- */
- public synchronized void registerScopeVisitor(final ScopeVisitor visitor)
- throws RegistryException {
- if (visitor == null)
- throw new IllegalArgumentException("visitor must not be null");
- Scope scope = visitor.getClass().getAnnotation(Scope.class);
- if (scope == null)
- throw new RegistryException("Visitor has not Scope");
- if (LOG.isInfoEnabled())
- LOG.info("Register scope visitor -- " + visitor.getClass());
- if (scope.scope().equals(Scope.ScopeType.REQUEST)
- && this.requestVisitable != null)
- this.requestVisitable.accept(visitor);
- else if (scope.scope() == Scope.ScopeType.SESSION
- && this.sessionVisitable != null)
- this.sessionVisitable.accept(visitor);
- else if (scope.scope() == Scope.ScopeType.CONTEXT
- && this.contextVisitable != null)
- this.sessionVisitable.accept(visitor);
- else if (!this.visitorBuffer.contains(visitor))
- this.visitorBuffer.add(visitor);
- }
-
- /**
- * @param visitable -
- * the instance to register
- * @throws RegistryException
- * @see ScopeVisitable
- */
- public synchronized void registerScopeVisitable(
- final ScopeVisitable visitable) throws RegistryException {
- if (visitable == null)
- throw new IllegalArgumentException("visitable must not be null");
-
- Scope scope = visitable.getClass().getAnnotation(Scope.class);
- if (scope == null)
- throw new RegistryException("Visitable has not Scope");
- if (LOG.isInfoEnabled())
- LOG.info("Register scope visitable -- " + visitable.getClass());
- if (scope.scope() == Scope.ScopeType.REQUEST
- && this.requestVisitable == null)
- this.requestVisitable = visitable;
- else if (scope.scope() == Scope.ScopeType.SESSION
- && this.sessionVisitable == null)
- this.sessionVisitable = visitable;
- else if (scope.scope() == Scope.ScopeType.CONTEXT
- && this.contextVisitable == null)
- this.sessionVisitable = visitable;
-
- if (!this.visitorBuffer.isEmpty()) {
-
- List tempList = this.visitorBuffer;
- this.visitorBuffer = new ArrayList(5);
- for (ScopeVisitor visitor : tempList) {
- registerScopeVisitor(visitor);
- }
- tempList.clear();
-
- }
-
- }
-
- /**
- * Looks up the {@link ProvidedServiceConfig} by the given service name.
- *
- * @param service
- * @return - the {@link ProvidedServiceConfig} or null if the
- * no configuration for this service has been registered
- */
- public ProvidedService getProvidedService(String service) {
- if (service == null)
- throw new IllegalArgumentException(
- "Service is null - must not be null to get registered feed type");
- return this.serviceTypeMap.get(service);
- }
-
- protected void flushRegistry() {
- Collection services = this.serviceTypeMap.values();
- for (ProvidedService service : services) {
- service.destroy();
- }
- this.serviceTypeMap.clear();
- this.componentMap.clear();
- }
-
- /**
- * @param service -
- * the name of the service
- * @return - true if and only if the service is registered,
- * otherwise false.
- */
- public boolean isServiceRegistered(String service) {
- return this.serviceTypeMap.containsKey(service);
-
- }
-
- /**
- * Destroys the registry and release all resources
- */
- public void destroy() {
- for (ComponentBean component : this.componentMap.values()) {
- component.getObject().destroy();
- }
-
- flushRegistry();
-
- }
-
- /**
- * This method is the main interface to the Component Lookup Service of the
- * registry. Every GDATA - Server component like STORAGE or the INDEXER
- * component will be accessible via this method. To get a Component from the
- * lookup service specify the expected Class as an argument and the
- * component type of the component to return. For a lookup of the
- * STORAGECONTORLER the code looks like:
- *
- *
- * @param
- * the type of the expected return value
- * @param clazz -
- * Class object of the expected return value
- * @param compType -
- * The component type
- * @return the registered component or null if the component
- * can not looked up.
- */
- @SuppressWarnings("unchecked")
- public R lookup(Class clazz, ComponentType compType) {
- ComponentBean bean = this.componentMap.get(compType);
- if (bean == null)
- return null;
- if (bean.getSuperType().equals(clazz))
- return (R) bean.getObject();
- return null;
- }
-
- /**
- * All registered {@link ServerComponent} registered via this method are
- * available via the
- * {@link GDataServerRegistry#lookup(Class, ComponentType)} method. For each
- * {@link ComponentType} there will be one single instance registered in the
- * registry.
- *
- * Eventually this method invokes the initialize method of the
- * ServerComponent interface to prepare the component to be available via
- * the lookup service
- *
- *
- * @param -
- * The interface of the component to register
- * @param componentClass -
- * a implementation of a ServerComponent interface to register in
- * the registry
- * @param configuration -
- * the component configuration {@link ComponentConfiguration}
- * @throws RegistryException -
- * if the provided class does not implement the
- * {@link ServerComponent} interface, if the mandatory
- * annotations not visible at runtime or not set, if the super
- * type provided by the {@link ComponentType} for the class to
- * register is not a super type of the class or if the
- * invocation of the {@link ServerComponent#initialize()} method
- * throws an exception.
- */
- @SuppressWarnings("unchecked")
- public void registerComponent(
- final Class componentClass,
- final ComponentConfiguration configuration)
- throws RegistryException {
-
- if (componentClass == null)
- throw new IllegalArgumentException(
- "component class must not be null");
-
- if (!ReflectionUtils.implementsType(componentClass,
- ServerComponent.class))
- throw new RegistryException(
- "can not register component. the given class does not implement ServerComponent interface -- "
- + componentClass.getName());
- try {
-
- Component annotation = componentClass
- .getAnnotation(Component.class);
- if (annotation == null)
- throw new RegistryException(
- "can not register component. the given class is not a component -- "
- + componentClass.getName());
- ComponentType type = annotation.componentType();
- if (this.componentMap.containsKey(type))
- throw new RegistryException("component already registered -- "
- + type.name());
- Class superType = type.getClass().getField(type.name())
- .getAnnotation(SuperType.class).superType();
- if (!ReflectionUtils.isTypeOf(componentClass, superType))
- throw new RegistryException("Considered super type <"
- + superType.getName() + "> is not a super type of <"
- + componentClass + ">");
- ServerComponent comp = componentClass.newInstance();
- if (configuration == null) {
- if (LOG.isInfoEnabled())
- LOG.info("no configuration for ComponentType: "
- + type.name());
- } else
- configureComponent(comp, type, configuration);
- comp.initialize();
- ComponentBean bean = new ComponentBean(comp, superType);
-
- this.componentMap.put(type, bean);
- if (ReflectionUtils.implementsType(componentClass,
- ScopeVisitor.class))
- this.registerScopeVisitor((ScopeVisitor) comp);
- } catch (Exception e) {
- throw new RegistryException("Can not register component -- "
- + e.getMessage(), e);
- }
-
- }
-
- /*
- * Injects the configured properties located in the configuration into the
- * given server component
- */
- private void configureComponent(final ServerComponent component,
- final ComponentType type, final ComponentConfiguration configuration) {
- PropertyInjector injector = new PropertyInjector();
- injector.setTargetObject(component);
- injector.injectProperties(configuration);
- }
-
- private static class ComponentBean {
- private final Class superType;
-
- private final ServerComponent object;
-
- ComponentBean(final ServerComponent object, final Class superType) {
- this.superType = superType;
- this.object = object;
- }
-
- ServerComponent getObject() {
- return this.object;
- }
-
- Class getSuperType() {
- return this.superType;
- }
-
- }
-
- /**
- * @see org.apache.lucene.gdata.server.registry.EntryEventMediator#getEntryEventMediator()
- */
- @Override
- public EntryEventMediator getEntryEventMediator() {
-
- return this;
- }
-
- /**
- * @return - all registered services
- */
- public Collection getServices() {
-
- return this.serviceTypeMap.values();
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/ProvidedService.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/ProvidedService.java
deleted file mode 100644
index 2d51f67fe0e..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/ProvidedService.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.server.registry;
-
-import javax.xml.transform.Templates;
-
-import org.apache.lucene.gdata.search.config.IndexSchema;
-
-import com.google.gdata.data.ExtensionProfile;
-
-/**
- * This interface describes a service provided by the GData-Server.
- * @see org.apache.lucene.gdata.server.registry.GDataServerRegistry
- * @author Simon Willnauer
- *
- */
-public interface ProvidedService {
-
- /**
- * @return Returns the feedType.
- */
- public abstract Class getFeedType();
-
- /**
- * @return - the extension profile for this feed
- */
- public abstract ExtensionProfile getExtensionProfile();
-
- /**
- * @return the entry Type configured for this Service
- */
- public abstract Class getEntryType();
-
- /**
- * @return - the service name
- */
- public abstract String getName();
-
- /**
- * releases all dependencies and resources
- */
- public abstract void destroy();
- /**
- * @return the index schema configuration for this service
- */
- public abstract IndexSchema getIndexSchema();
- /**
- * @return the compiled xslt stylesheet to transform the feed / entry for preview
- */
- public abstract Templates getTransformTemplate();
-
-}
\ No newline at end of file
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/ProvidedServiceConfig.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/ProvidedServiceConfig.java
deleted file mode 100644
index 95f3f29fc32..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/ProvidedServiceConfig.java
+++ /dev/null
@@ -1,364 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.server.registry;
-
-import java.lang.reflect.Constructor;
-
-import javax.xml.transform.Templates;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.stream.StreamSource;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.search.config.IndexSchema;
-import org.apache.lucene.gdata.utils.Pool;
-import org.apache.lucene.gdata.utils.PoolObjectFactory;
-import org.apache.lucene.gdata.utils.SimpleObjectPool;
-
-import com.google.gdata.data.BaseEntry;
-import com.google.gdata.data.BaseFeed;
-import com.google.gdata.data.ExtensionProfile;
-
-/**
- * Standard implementation of
- * {@link org.apache.lucene.gdata.server.registry.ProvidedService} to be used
- * inside the
- * {@link org.apache.lucene.gdata.server.registry.GDataServerRegistry}
- *
- * ExtensionProfiles are used to generate and parse xml by the gdata api. For
- * that case all methods are synchronized. This will slow down the application
- * when performing lots of xml generation concurrently. For that case the
- * extensionProfile for a specific service will be pooled and reused.
- *
- *
- *
- * @author Simon Willnauer
- *
- */
-@Scope(scope = Scope.ScopeType.REQUEST)
-public class ProvidedServiceConfig implements ProvidedService, ScopeVisitor {
- private final static Log LOG = LogFactory
- .getLog(ProvidedServiceConfig.class);
-
- private static final int DEFAULT_POOL_SIZE = 5;
- private IndexSchema indexSchema;
- /*
- * To ensure a extension profile instance will not be shared within multiple
- * threads each thread requesting a config will have one instance for the
- * entire request.
- */
- protected final ThreadLocal extProfThreadLocal = new ThreadLocal();
-
- /*
- * ExtensionProfiles are used to generate and parse xml by the gdata api.
- * For that case all methodes are synchronized. This will slow down the
- * application when performing lots of xml generation concurrently. for that
- * case the extensionProfile for a specific service will be pooled and
- * reused.
- */
- private Pool profilPool;
-
- private String serviceName;
-
- private Class extends BaseEntry> entryType;
-
- private Class extends BaseFeed> feedType;
-
- private ExtensionProfile extensionProfile;
-
- private int poolSize = DEFAULT_POOL_SIZE;
-
- private Templates transformerTemplate;
-
-
- /**
- * @return Returns the poolSize.
- */
- public int getPoolSize() {
- return this.poolSize;
- }
-
- /**
- * @param poolSize
- * The poolSize to set.
- */
- public void setPoolSize(int poolSize) {
-
- this.poolSize = poolSize >= DEFAULT_POOL_SIZE ? poolSize
- : DEFAULT_POOL_SIZE;
- }
-
- /**
- * Default constructor to instantiate via reflection
- */
- public ProvidedServiceConfig() {
- try {
- GDataServerRegistry.getRegistry().registerScopeVisitor(this);
- } catch (RegistryException e) {
- throw new RuntimeException("Can not register ScopeVisitor -- "
- + e.getMessage(), e);
- }
- }
-
- /**
- * @see org.apache.lucene.gdata.server.registry.ProvidedService#getFeedType()
- */
- public Class getFeedType() {
- return this.feedType;
- }
-
- /**
- * @param feedType
- * The feedType to set.
- */
- public void setFeedType(Class feedType) {
- this.feedType = feedType;
- }
-
- /**
- * @see org.apache.lucene.gdata.server.registry.ProvidedService#getExtensionProfile()
- */
- public ExtensionProfile getExtensionProfile() {
- ExtensionProfile ext = this.extProfThreadLocal.get();
- if (ext != null) {
- return ext;
- }
- if(this.extensionProfile == null)
- return null;
- if (this.profilPool == null)
- createProfilePool();
- ext = this.profilPool.aquire();
- this.extProfThreadLocal.set(ext);
- return ext;
- }
-
- /**
- * @param extensionProfil -
- * the extension profile for this feed configuration
- */
- @SuppressWarnings("unchecked")
- public void setExtensionProfile(ExtensionProfile extensionProfil) {
- if (extensionProfil == null)
- throw new IllegalArgumentException(
- "ExtensionProfile must not be null");
- if (this.extensionProfile != null)
- return;
- this.extensionProfile = extensionProfil;
-
- }
-
- private void createProfilePool() {
- if (LOG.isInfoEnabled())
- LOG.info("Create ExtensionProfile pool with pool size:"
- + this.poolSize + " for service " + this.serviceName);
- this.profilPool = new SimpleObjectPool(this.poolSize,
- new ExtensionProfileFactory(
- this.extensionProfile.getClass(),this.entryType,this.feedType));
- }
-
- /**
- * TODO add comment
- *
- * @param
- * @param extensionProfileClass
- * @throws InstantiationException
- * @throws IllegalAccessException
- */
- public void setExtensionProfileClass(
- Class extensionProfileClass) throws InstantiationException,
- IllegalAccessException {
- if (extensionProfileClass == null)
- throw new IllegalArgumentException(
- "ExtensionProfile class must not be null");
-
- setExtensionProfile(extensionProfileClass.newInstance());
-
- }
-
- /**
- * @see org.apache.lucene.gdata.server.registry.ProvidedService#getEntryType()
- */
- public Class getEntryType() {
- return this.entryType;
- }
-
- /**
- * @param entryType
- */
- public void setEntryType(Class entryType) {
- this.entryType = entryType;
- }
-
- /**
- * @see org.apache.lucene.gdata.server.registry.ProvidedService#getName()
- */
- public String getName() {
- return this.serviceName;
- }
-
- /**
- * @param serviceName
- */
- public void setName(String serviceName) {
- this.serviceName = serviceName;
- }
-
- /**
- * @see org.apache.lucene.gdata.server.registry.ProvidedService#destroy()
- */
- public void destroy() {
- if (this.profilPool != null)
- this.profilPool.destroy();
- if (LOG.isInfoEnabled())
- LOG.info("Destroy Service " + this.serviceName
- + " -- release all resources");
- this.feedType = null;
- this.entryType = null;
- this.extensionProfile = null;
- }
-
- private static class ExtensionProfileFactory
- implements PoolObjectFactory {
- private final Class extends ExtensionProfile> clazz;
-
- private final Constructor extends ExtensionProfile> constructor;
-
- private static final Object[] constArray = new Object[0];
-
- private BaseEntry entry;
- private BaseFeed feed;
-
- ExtensionProfileFactory(Class extends ExtensionProfile> clazz, Class extends BaseEntry> entryClass, Class extends BaseFeed> feedClass) {
- this.clazz = clazz;
- try {
- this.constructor = clazz.getConstructor(new Class[0]);
- this.entry = entryClass.newInstance();
- this.feed = feedClass.newInstance();
- } catch (Exception e) {
- throw new IllegalArgumentException(
- "The given class has no default constructor -- can not use as a ExtensionProfile -- "
- + this.clazz.getName(), e);
- }
- }
-
- /**
- * @see org.apache.lucene.gdata.utils.PoolObjectFactory#getInstance()
- */
- @SuppressWarnings("unchecked")
- public Type getInstance() {
-
- try {
- Type retValue = (Type) this.constructor.newInstance(constArray);
- this.entry.declareExtensions(retValue);
- this.feed.declareExtensions(retValue);
- return retValue;
- } catch (Exception e) {
- throw new RuntimeException(
- "Can not instantiate new ExtensionProfile -- ", e);
-
- }
- }
-
- /**
- * @param type -
- * the ExtensionProfile to destroy
- * @see org.apache.lucene.gdata.utils.PoolObjectFactory#destroyInstance(Object)
- */
- public void destroyInstance(Type type) {
- //
- }
-
- }
-
- /**
- * @see org.apache.lucene.gdata.server.registry.ScopeVisitor#visiteInitialize()
- */
- public void visiteInitialize() {
- if(this.profilPool == null)
- createProfilePool();
- /*
- * don't set a extension profile for each thread. The current thread
- * might use another service and does not need the extension profile of
- * this service
- */
- }
-
- /**
- * @see org.apache.lucene.gdata.server.registry.ScopeVisitor#visiteDestroy()
- */
- public void visiteDestroy() {
- /*
- * Check every thread after request destroyed to release all profiles to
- * the pool
- */
- ExtensionProfile ext = this.extProfThreadLocal.get();
- if (ext == null) {
- if(LOG.isDebugEnabled())
- LOG.debug("ThreadLocal owns no ExtensionProfile in requestDestroy for service "
- + this.serviceName);
- return;
- }
- this.extProfThreadLocal.set(null);
- this.profilPool.release(ext);
- }
-
- /**
- * @return Returns the indexSchema.
- */
- public IndexSchema getIndexSchema() {
- return this.indexSchema;
- }
-
- /**
- * @param indexSchema The indexSchema to set.
- */
- public void setIndexSchema(IndexSchema indexSchema) {
- this.indexSchema = indexSchema;
- if(this.indexSchema != null)
- this.indexSchema.setName(this.serviceName);
- }
-
- /**
- * @see org.apache.lucene.gdata.server.registry.ProvidedService#getTransformTemplate()
- */
- public Templates getTransformTemplate() {
-
- return this.transformerTemplate;
- }
-
- /**
- * Sets and creates the preview transformer xslt template to provide a html formate for feeds and entries.
- * The given file name must be available in the classpath.
- * @param filename - the name of the file in the classpath
- */
- public void setXsltStylesheet(String filename){
- if(filename == null || filename.length() == 0){
- LOG.info("No preview stylesheet configured for service "+this.serviceName);
- return;
- }
-
- TransformerFactory factory = TransformerFactory.newInstance();
-
- try {
- this.transformerTemplate = factory.newTemplates(new StreamSource(ProvidedServiceConfig.class.getResourceAsStream(filename.startsWith("/")?filename:"/"+filename)));
- } catch (TransformerConfigurationException e) {
- throw new RuntimeException("Can not compile xslt stylesheet path: "+filename,e);
- }
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/RegistryBuilder.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/RegistryBuilder.java
deleted file mode 100644
index 146131c6e26..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/RegistryBuilder.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.server.registry;
-
-import java.io.IOException;
-
-import org.apache.commons.digester.Digester;
-import org.apache.lucene.gdata.search.config.IndexSchema;
-import org.apache.lucene.gdata.search.config.IndexSchemaField;
-import org.apache.lucene.gdata.server.registry.configuration.ComponentConfiguration;
-import org.apache.lucene.gdata.utils.SimpleSaxErrorHandler;
-import org.apache.xerces.parsers.SAXParser;
-import org.xml.sax.SAXException;
-
-/**
- * Reads the configuration file and creates the
- * {@link org.apache.lucene.gdata.server.registry.GDataServerRegistry} singleton
- * instance. All services and components will be instantiated and registered in
- * the registry.
- *
- * @author Simon Willnauer
- *
- */
-class RegistryBuilder {
-
- /**
- * builds the {@link GDataServerRegistry} accessible via the
- * {@link GDataServerRegistry#getRegistry()} method
- *
- * @throws IOException -
- * if an IOException occurs while reading the config file
- * @throws SAXException -
- * if the config file can not be parsed
- */
- static void buildRegistry() throws IOException, SAXException {
- String schemaFile = RegistryBuilder.class.getResource("/gdata-config.xsd").getFile();
- /*
- * Force using apache xerces parser for digester
- */
- SAXParser parser = new SAXParser();
- parser.setFeature("http://apache.org/xml/features/validation/schema-full-checking",true);
- parser.setFeature("http://apache.org/xml/features/validation/schema",true);
- parser.setFeature("http://xml.org/sax/features/validation",true);
- parser.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation",schemaFile);
- Digester digester = new Digester(parser);
- buildFromConfiguration(digester, GDataServerRegistry
- .getRegistry(),schemaFile);
-
- }
-
- private static void buildFromConfiguration(Digester digester,
- GDataServerRegistry registry, String schemaURL) throws IOException, SAXException {
- digester.setValidating(true);
- digester.setSchema(schemaURL);
- digester.setErrorHandler(new SimpleSaxErrorHandler());
- digester.push(registry);
- /*
- * register services
- */
- digester.addObjectCreate("gdata/service", ProvidedServiceConfig.class);
- digester.addSetProperties("gdata/service");
- digester.addSetNext("gdata/service", "registerService");
- digester.addBeanPropertySetter("gdata/service/feed-class", "feedType");
- digester.addBeanPropertySetter("gdata/service/entry-class", "entryType");
- digester.addBeanPropertySetter("gdata/service/extension-profile",
- "extensionProfileClass");
- digester.addBeanPropertySetter("gdata/service/previewStyleSheet","xsltStylesheet");
- addIndexRule(digester);
- /*
- * load components and configurations
- */
- digester.addCallMethod("gdata/server-components/component",
- "registerComponent", 2, new Class[] { Class.class , ComponentConfiguration.class});
- digester.addCallParam("gdata/server-components/component/class",0);
- digester.addObjectCreate("gdata/server-components/component/configuration",ComponentConfiguration.class);
- digester.addCallMethod("gdata/server-components/component/configuration/property","set",2,new Class[]{String.class,String.class});
- digester.addCallParam("gdata/server-components/component/configuration/property",0,"name");
- digester.addCallParam("gdata/server-components/component/configuration/property",1);
- //second parameter on registerComponent -- top of the stack (Component configuration)
- digester.addCallParam("gdata/server-components/component/configuration",1,0);
- digester.parse(RegistryBuilder.class
- .getResourceAsStream("/gdata-config.xml"));
-
- }
-
-
- private static void addIndexRule(Digester digester){
- digester.addObjectCreate("gdata/service/index-schema", IndexSchema.class);
- digester.addSetNext("gdata/service/index-schema", "setIndexSchema");
- digester.addSetProperties("gdata/service/index-schema");
- digester.addSetProperties("gdata/service/index-schema/index");
- digester.addBeanPropertySetter("gdata/service/index-schema/index/maxMergeDocs");
- digester.addBeanPropertySetter("gdata/service/index-schema/index/maxBufferedDocs");
- digester.addBeanPropertySetter("gdata/service/index-schema/index/maxFieldLength");
- digester.addBeanPropertySetter("gdata/service/index-schema/index/mergeFactor");
- digester.addBeanPropertySetter("gdata/service/index-schema/index/indexLocation");
- digester.addBeanPropertySetter("gdata/service/index-schema/index/useCompoundFile");
- digester.addCallMethod("gdata/service/index-schema/index/defaultAnalyzer", "serviceAnalyzer",1,new Class[]{Class.class});
-
- //call method on top of the stack addSchemaField
- digester.addCallMethod("gdata/service/index-schema/field","addSchemaField",1,new Class[]{IndexSchemaField.class});
- digester.addObjectCreate("gdata/service/index-schema/field",IndexSchemaField.class);
- //set parameter for method call -- parameter is IndexSchemaField
- digester.addCallParam("gdata/service/index-schema/field",0,0);
- digester.addSetProperties("gdata/service/index-schema/field");
- digester.addBeanPropertySetter("gdata/service/index-schema/field/path");
- digester.addBeanPropertySetter("gdata/service/index-schema/field/store","storeByName");
- digester.addBeanPropertySetter("gdata/service/index-schema/field/index","indexByName");
- digester.addBeanPropertySetter("gdata/service/index-schema/field/analyzer","analyzerClass");
-
-// call method on top of the stack addSchemaField
- digester.addCallMethod("gdata/service/index-schema/custom","addSchemaField",1,new Class[]{IndexSchemaField.class});
- digester.addObjectCreate("gdata/service/index-schema/custom",IndexSchemaField.class);
- //set parameter for method call -- parameter is IndexSchemaField
- digester.addCallParam("gdata/service/index-schema/custom",0,0);
- digester.addSetProperties("gdata/service/index-schema/custom");
- digester.addBeanPropertySetter("gdata/service/index-schema/custom/path");
- digester.addBeanPropertySetter("gdata/service/index-schema/custom/store","storeByName");
- digester.addBeanPropertySetter("gdata/service/index-schema/custom/index","indexByName");
- digester.addBeanPropertySetter("gdata/service/index-schema/custom/analyzer","analyzerClass");
- digester.addBeanPropertySetter("gdata/service/index-schema/custom/field-class","fieldClass");
-// digester.addCallMethod("gdata/service/index-schema/custom/field-class","fieldClass",1,new Class[]{Class.class});
-
-
-// call method on top of the stack addSchemaField
- digester.addCallMethod("gdata/service/index-schema/mixed","addSchemaField",1,new Class[]{IndexSchemaField.class});
- digester.addObjectCreate("gdata/service/index-schema/mixed",IndexSchemaField.class);
- //set parameter for method call -- parameter is IndexSchemaField
- digester.addCallParam("gdata/service/index-schema/mixed",0,0);
- digester.addSetProperties("gdata/service/index-schema/mixed");
- digester.addBeanPropertySetter("gdata/service/index-schema/mixed","type");
- digester.addBeanPropertySetter("gdata/service/index-schema/mixed/path");
- digester.addBeanPropertySetter("gdata/service/index-schema/mixed/store","storeByName");
- digester.addBeanPropertySetter("gdata/service/index-schema/mixed/index","indexByName");
- digester.addBeanPropertySetter("gdata/service/index-schema/mixed/contenttype","typePath");
- digester.addBeanPropertySetter("gdata/service/index-schema/mixed/analyzer","analyzerClass");
-
- }
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/RegistryContextListener.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/RegistryContextListener.java
deleted file mode 100644
index 40016e227f2..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/RegistryContextListener.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.server.registry;
-
-import javax.servlet.ServletContextEvent;
-import javax.servlet.ServletContextListener;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * This Listener creates the
- * {@link org.apache.lucene.gdata.server.registry.GDataServerRegistry} when the
- * context is loaded. The registry will be loaded before the
- * {@link org.apache.lucene.gdata.servlet.RequestControllerServlet} is loaded.
- * The Registry will be loaded and set up before the REST interface is available.
- *
- * This ContextListener has to be configured in the web.xml
- * deployment descriptor.
- *
- *
- * When the
- * {@link javax.servlet.ServletContextListener#contextDestroyed(javax.servlet.ServletContextEvent)}
- * method is called the registry will be destroyed using
- * {@link org.apache.lucene.gdata.server.registry.GDataServerRegistry#destroy()}
- * method.
- *
- *
- * @author Simon Willnauer
- *
- */
-public class RegistryContextListener implements ServletContextListener {
- private GDataServerRegistry serverRegistry;
-
- private static final Log LOG = LogFactory
- .getLog(RegistryContextListener.class);
-
- /**
- * @see javax.servlet.ServletContextListener#contextInitialized(javax.servlet.ServletContextEvent)
- */
- public void contextInitialized(ServletContextEvent arg0) {
- LOG.info("RegistryContextListener has been loaded");
-
- try {
- RegistryBuilder.buildRegistry();
- this.serverRegistry = GDataServerRegistry.getRegistry();
- /*
- * catch all exceptions and destroy the registry to release all resources.
- * some components start lots of threads, the will remain running if the registry is not destroyed
- */
- } catch (Throwable e) {
- GDataServerRegistry.getRegistry().destroy();
- LOG.error("can not register required components", e);
- throw new RuntimeException("Can not register required components",
- e);
- }
-
-
- }
-
- /**
- * @see javax.servlet.ServletContextListener#contextDestroyed(javax.servlet.ServletContextEvent)
- */
- public void contextDestroyed(ServletContextEvent arg0) {
- LOG.info("Destroying context");
- /*
- * this might be null if startup fails
- * --> prevent null pointer exception
- */
- if(this.serverRegistry != null)
- this.serverRegistry.destroy();
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/RegistryException.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/RegistryException.java
deleted file mode 100644
index a904138ceb5..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/RegistryException.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package org.apache.lucene.gdata.server.registry;
-
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * This exception is thrown by the
- * {@link org.apache.lucene.gdata.server.registry.GDataServerRegistry} if
- * registering a service or a component fails.
- *
- * @author Simon Willnauer
- *
- */
-public class RegistryException extends Exception {
-
-
- private static final long serialVersionUID = -3563720639871194466L;
-
- /**
- * Constructs a new Registry Exception.
- */
- public RegistryException() {
- super();
-
- }
-
- /**
- * Constructs a new Registry Exception with the specified detail message.
- * @param arg0 - detail message
- */
- public RegistryException(String arg0) {
- super(arg0);
-
- }
-
- /**
- * Constructs a new Registry Exception with the specified detail message and nested exception.
- * @param arg0 - detail message
- * @param arg1 - nested exception
- */
- public RegistryException(String arg0, Throwable arg1) {
- super(arg0, arg1);
-
- }
-
- /** Constructs a new Registry Exception with a nested exception.
- * @param arg0 - nested exception
- */
- public RegistryException(Throwable arg0) {
- super(arg0);
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/Scope.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/Scope.java
deleted file mode 100755
index 0ff6ae592a7..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/Scope.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.server.registry;
-
-import static java.lang.annotation.ElementType.TYPE;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * The Scope annotation is used in
- * {@link org.apache.lucene.gdata.server.registry.ScopeVisitable} and
- * {@link org.apache.lucene.gdata.server.registry.ScopeVisitor} implementations
- * to indicate which scope should be visited.
- *
- *
- *
- */
-@Target( { TYPE })
-@Retention(value = RUNTIME)
-public @interface Scope {
- /**
- * @return - the scope type the class was annotated with
- */
- ScopeType scope();
-
- /**
- * Defines a Scope for {@link Scope} annotations
- *
- *
- *
- */
- public static enum ScopeType {
- /**
- * Request scope
- */
- REQUEST,
- /**
- * Session scope
- */
- SESSION,
- /**
- * Context scope
- */
- CONTEXT
-
- }
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/ScopeVisitable.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/ScopeVisitable.java
deleted file mode 100755
index 5eb36ba9370..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/ScopeVisitable.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.server.registry;
-
-/**
- * Implementation of this interface accept
- * {@link org.apache.lucene.gdata.server.registry.ScopeVisitor} objects and call
- * their methods on the desired action.
- *
- *
- *
- */
-public interface ScopeVisitable {
- /**
- * @param visitor -
- * the visitor to accept
- */
- public abstract void accept(ScopeVisitor visitor);
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/ScopeVisitor.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/ScopeVisitor.java
deleted file mode 100755
index eddb883d113..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/ScopeVisitor.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.server.registry;
-
-/**
- *
- * ScopeVisitor is used to implement the Visitor
- * pattern in GDATAServer. An object of this interface can be passed to a
- * ScopeVistable which will then call its methods.
- * {@link org.apache.lucene.gdata.server.registry.Component} Classes registered
- * in the {@link org.apache.lucene.gdata.server.registry.GDataServerRegistry}
- * will be added to the Visitableimplementation automatically. Please refer to
- * the Gang of Four book of Design Patterns for more details on the
- * Visitor pattern.
- *
- *
- * A scope can be Session, Request or Context if one of the ScopeVisitors for
- * the desired scope is available by the registry.
- *
- *
- * This site
- * has further discussion on design patterns and links to the GOF book. This link describes the
- * Visitor pattern in detail.
- *
- *
- *
- *
- */
-public interface ScopeVisitor {
- /**
- * Visites the initialization of the scope
- */
- public abstract void visiteInitialize();
-
- /**
- * Visites the destory of the scope
- *
- */
- public abstract void visiteDestroy();
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/ServerComponent.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/ServerComponent.java
deleted file mode 100644
index 2d1e20b87a8..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/ServerComponent.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.server.registry;
-
-/**
- * To Register a class as a component in the
- * {@link org.apache.lucene.gdata.server.registry.GDataServerRegistry} the class
- * or a super class must implements this interface.
- *
- * ServerComponent defines a method initialize and
- * destroy. initialize will be called when the component
- * is registered and destroy when the registry is destroyed (usually
- * at server shut down).
- * @see org.apache.lucene.gdata.server.registry.GDataServerRegistry
- * @author Simon Willnauer
- *
- */
-public interface ServerComponent {
- /**
- * will be call when the component is registered.
- * if this fails the server must not startup.
- */
- public abstract void initialize();
-
- /**
- * will be called when the registry is going down e.g. when the {@link GDataServerRegistry#destroy()} method is called.
- */
- public abstract void destroy();
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/SuperType.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/SuperType.java
deleted file mode 100644
index 9c6eb052cdd..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/SuperType.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.server.registry;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * This Annotation is use to annotate
- * {@link org.apache.lucene.gdata.server.registry.ComponentType} elements to
- * specify an interface e.g. super type of a defined component.
- *
This annotation will be visible at runtime
- * @see org.apache.lucene.gdata.server.registry.Component
- * @see org.apache.lucene.gdata.server.registry.GDataServerRegistry
- *
- * @author Simon Willnauer
- *
- */
-@Target( { FIELD })
-@Retention(value = RUNTIME)
-public @interface SuperType {
- /**
- *
- * @return the specified super type
- */
- Class superType();
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/configuration/ComponentConfiguration.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/configuration/ComponentConfiguration.java
deleted file mode 100755
index c5f2909f19d..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/configuration/ComponentConfiguration.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.server.registry.configuration;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Simple configuration class storing properties as key with defined property
- * values as values in a Map. As a map cannot
- * contain duplicate keys the first use of a key can not be replaced. If a key
- * is used twice a {@link java.lang.IllegalArgumentException} will be thrown.
- * @see Map
- *
- *
- */
-public class ComponentConfiguration {
- private final Map configMap;
-
- /**
- * Creates a new ComponentConfiguration object and initializes the internal
- * map.
- */
- public ComponentConfiguration() {
- super();
- this.configMap = new HashMap();
- }
-
- /**
- * Stores a key / value pair as a property. If a key is used twice the first
- * call will set the key / value pair. Any subsequent calls with a already
- * set key will throw a IllegalArgumentException.
- *
- * @param key -
- * the property as a key
- * @param value -
- * the value for the key
- *@see Map#put(Object, Object)
- */
- public void set(final String key, final String value) {
- if (this.configMap.containsKey(key))
- throw new IllegalArgumentException("key has already been used");
- this.configMap.put(key, value);
- }
-
- /**
- * Returns the value of the key or null if the key is not set.
- * @param key - the key
- * @return - the value for the key or null if the key is not set.
- * @see Map#get(java.lang.Object)
- */
- public String get(final String key) {
- return this.configMap.get(key);
- }
-
- /**
- * @param key - a string key
- * @return - true if the key is set, otherwise false
- * @see Map#containsKey(java.lang.Object)
- */
- public boolean contains(String key) {
- return this.configMap.containsKey(key);
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/configuration/InjectionException.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/configuration/InjectionException.java
deleted file mode 100755
index b1e54a749f3..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/configuration/InjectionException.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.server.registry.configuration;
-
-/**
- * Will be throw if an exception occures while injecting properties, a type or
- * cast exception occures or a
- * {@link org.apache.lucene.gdata.server.registry.configuration.Requiered}
- * property is not available.
- *
- *
- *
- */
-public class InjectionException extends RuntimeException {
-
- /**
- *
- */
- private static final long serialVersionUID = 3559845601111510210L;
-
- /**
- * Constructs a new InjectionException
- */
- public InjectionException() {
- super();
- }
-
- /**
- * Constructs a new InjectionException
- *
- * @param message -
- * the exception message
- */
- public InjectionException(String message) {
- super(message);
-
- }
-
- /**
- * Constructs a new InjectionException
- *
- * @param message -
- * the exception message
- * @param cause -
- * the root cause of this exception
- */
- public InjectionException(String message, Throwable cause) {
- super(message, cause);
-
- }
-
- /**
- * Constructs a new InjectionException
- *
- * @param cause -
- * the root cause of this exception
- */
- public InjectionException(Throwable cause) {
- super(cause);
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/configuration/PropertyInjector.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/configuration/PropertyInjector.java
deleted file mode 100755
index a3ced123156..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/configuration/PropertyInjector.java
+++ /dev/null
@@ -1,262 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.server.registry.configuration;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-import java.util.Map.Entry;
-
-import org.apache.lucene.gdata.utils.ReflectionUtils;
-
-/**
- * PropertyInjector is used to set member variables / properties of classes via
- * setter methods using the
- * {@link org.apache.lucene.gdata.server.registry.configuration.ComponentConfiguration}
- * class.
- *
- * To populate a object with properties from a ComponentConfiguration instance
- * the class or a superclass of the object to populate has to provide at least
- * one setter method with a single parameter. The object to populate is set via
- * the {@link PropertyInjector#setTargetObject} method. The class of the object
- * will be analyzed for setter methods having a "set" prefix in their method
- * name. If one of the found setter methods is annotated with
- * {@link org.apache.lucene.gdata.server.registry.configuration.Requiered} this
- * property is interpreted as a mandatory property. Mandatory properties must be
- * available in the provided ComponentConfiguration, if not the injection will
- * fail.
- * The
- * {@link org.apache.lucene.gdata.server.registry.configuration.ComponentConfiguration}
- * contains key / value pairs where the key must match the signature of the
- * setter method without the 'set' prefix and must begin with a lower case
- * character. KeybufferSize does match a method signature
- * of setBufferSize The type of the parameter will be
- * reflected via the Reflection API and instantiated with the given value if
- * possible.
- *
- *
- * Setter methods without a Required annotation will be set if
- * the property is present in the ComponentConfiguration
- *
- *
This class does not support overloaded setter methods.
- *
- * @see org.apache.lucene.gdata.server.registry.configuration.Requiered
- * @see org.apache.lucene.gdata.server.registry.configuration.ComponentConfiguration
- */
-public class PropertyInjector {
- private static final String SETTER_PREFIX = "set";
-
- private Class targetClass;
-
- private Object target;
-
- private Map requieredProperties = new HashMap();
-
- private Map optionalProperties = new HashMap();
-
- /**
- * Sets the object to be populated with the properties provided in the ComponentConfiguration.
- * @param o - the object to populate
- */
- public void setTargetObject(final Object o) {
- if (o == null)
- throw new IllegalArgumentException("TargetObject must not be null");
- this.target = o;
- this.targetClass = o.getClass();
- try {
- registerProperties(this.targetClass);
- } catch (Exception e) {
- throw new InjectionException("can access field -- "
- + e.getMessage(), e);
-
- }
- if (this.requieredProperties.isEmpty()
- && this.optionalProperties.isEmpty())
- throw new InjectionException(
- "Given type has no public setter methods -- "
- + o.getClass().getName());
-
- }
-
- protected int getRequiredSize() {
- return this.requieredProperties.size();
- }
-
- protected int getOptionalSize() {
- return this.optionalProperties.size();
- }
-
- private void registerProperties(final Class clazz)
- throws SecurityException, NoSuchFieldException {
- if (clazz == null)
- return;
- Method[] methodes = clazz.getMethods();
- for (int i = 0; i < methodes.length; i++) {
- if (methodes[i].getName()
- .startsWith(PropertyInjector.SETTER_PREFIX)) {
- String methodName = methodes[i].getName();
- String fieldName = getFieldName(methodName);
- if (methodes[i].getAnnotation(Requiered.class) != null)
- this.requieredProperties.put(fieldName, methodes[i]);
- else
- this.optionalProperties.put(fieldName, methodes[i]);
-
- }
-
- }
- registerProperties(clazz.getSuperclass());
- }
-
- private String getFieldName(final String setterMethodName) {
- // remove 'set' prefix --> first char as lowerCase
- String retVal = setterMethodName.substring(3);
- String firstLetter = retVal.substring(0, 1);
- retVal = retVal.replaceFirst(firstLetter, firstLetter.toLowerCase());
- return retVal;
- }
-
- /**
- * Injects the properties stored in the ComponentConfiguration
- * to the corresponding methods of the target object
- * @param bean - configuration bean containing all properties to set.
- *
- */
- public void injectProperties(final ComponentConfiguration bean) {
- if (bean == null)
- throw new IllegalArgumentException("bean must not be null");
- if (this.target == null)
- throw new IllegalStateException("target is not set -- null");
- Set> requiered = this.requieredProperties
- .entrySet();
- // set required properties
- for (Entry entry : requiered) {
- if (!bean.contains(entry.getKey()))
- throw new InjectionException(
- "Required property can not be set -- value not in configuration bean; Property: "
- + entry.getKey()
- + "for class "
- + this.targetClass.getName());
- populate(bean, entry);
-
- }
- Set> optinal = this.optionalProperties.entrySet();
- // set optional properties
- for (Entry entry : optinal) {
- if (bean.contains(entry.getKey()))
- populate(bean, entry);
- }
-
- }
-
- private void populate(ComponentConfiguration bean,
- Entry entry) {
- String value = bean.get(entry.getKey());
- Method m = entry.getValue();
- Class>[] parameterTypes = m.getParameterTypes();
- if (parameterTypes.length > 1)
- throw new InjectionException("Setter has more than one parameter "
- + m.getName() + " -- can not invoke method -- ");
- Object parameter = null;
- try {
-
- parameter = createObject(value, parameterTypes[0]);
- } catch (InjectionException e) {
- throw new InjectionException(
- "parameter object creation failed for method "
- + m.getName() + " in class: "
- + this.targetClass.getName(), e);
- }
- // only setters with one parameter are supported
- Object[] parameters = { parameter };
- try {
- m.invoke(this.target, parameters);
- } catch (Exception e) {
- throw new InjectionException("Can not set value of type "
- + value.getClass().getName()
- + " -- can not invoke method -- " + e.getMessage(), e);
-
- }
- }
-
- private Object createObject(String s, Class> clazz) {
-
- try {
- // if class is requested use s as fully qualified class name
- if (clazz == Class.class)
- return Class.forName(s);
- // check for primitive type
- if (clazz.isPrimitive())
- clazz = ReflectionUtils.getPrimitiveWrapper(clazz);
- boolean defaultConst = false;
- boolean stringConst = false;
- Constructor[] constructors = clazz.getConstructors();
- if (constructors.length == 0)
- defaultConst = true;
- for (int i = 0; i < constructors.length; i++) {
- if (constructors[i].getParameterTypes().length == 0) {
- defaultConst = true;
- continue;
- }
- if (constructors[i].getParameterTypes().length == 1
- && constructors[i].getParameterTypes()[0]
- .equals(String.class))
- stringConst = true;
- }
- /*
- * if there is a string constructor use the string as a parameter
- */
- if (stringConst) {
- Constructor constructor = clazz
- .getConstructor(new Class[] { String.class });
- return constructor.newInstance(new Object[] { s });
- }
- /*
- * if no string const. but a default const. -- use the string as a
- * class name
- */
- if (defaultConst)
- return Class.forName(s).newInstance();
- throw new InjectionException(
- "Parameter can not be created -- no default or String constructor found for class "
- + clazz.getName());
-
- } catch (Exception e) {
-
- throw new InjectionException("can not create object for setter", e);
- }
-
- }
-
- /**
- * Sets all members to their default values and clears the internal used
- * {@link Map} instances
- *
- * @see Map#clear()
- */
- public void clear() {
- this.target = null;
- this.targetClass = null;
- this.optionalProperties.clear();
- this.requieredProperties.clear();
- }
-
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/configuration/Requiered.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/configuration/Requiered.java
deleted file mode 100755
index 0fcabed8f1d..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/configuration/Requiered.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.server.registry.configuration;
-
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * This annotation is used to define mandatory properties via their setter
- * methodes. It will be present at runtime.
- *
- * @see org.apache.lucene.gdata.server.registry.configuration.PropertyInjector
- * @see org.apache.lucene.gdata.server.registry.configuration.ComponentConfiguration
- *
- *
- */
-@Target( { METHOD })
-@Retention(value = RUNTIME)
-public @interface Requiered {
-//
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/package.html b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/package.html
deleted file mode 100644
index dc9b7a6430f..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/server/registry/package.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-Internal registry - registering services and server components
-
-
\ No newline at end of file
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/AbstractGdataServlet.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/AbstractGdataServlet.java
deleted file mode 100644
index dfda9df868d..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/AbstractGdataServlet.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.servlet;
-
-import java.io.IOException;
-
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.lucene.gdata.server.registry.ComponentType;
-import org.apache.lucene.gdata.server.registry.GDataServerRegistry;
-import org.apache.lucene.gdata.servlet.handler.RequestHandlerFactory;
-
-/**
- *
- * Provides an abstract class to be subclassed to create an GDATA servlet
- * suitable for a GDATA serverside implementation.
- *
- * @see javax.servlet.http.HttpServlet
- *
- * @author Simon Willnauer
- *
- */
-public abstract class AbstractGdataServlet extends HttpServlet {
- private static final String METHOD_HEADER_NAME = "x-http-method-override";
-
- private static final String METHOD_DELETE = "DELETE";
-
- private static final String METHOD_GET = "GET";
-
- private static final String METHOD_POST = "POST";
-
- private static final String METHOD_PUT = "PUT";
-
- protected static RequestHandlerFactory HANDLER_FACTORY = null;
-
- /**
- * This overwrites the protected service method to dispatch
- * the request to the correponding do method. There is
- * ususaly no need for overwriting this method. The GData protool and the
- * Google GData API uses the x-http-method-override header to
- * get through firewalls. The http method will be overritten by the
- * x-http-method-override and dispatched to the
- * doXxx methods defined in this class. This method
- * is an GDATA-specific version of the {@link javax.servlet.Servlet#service}
- * method.
- *
- * @see HttpServlet#service(javax.servlet.http.HttpServletRequest,
- * javax.servlet.http.HttpServletResponse)
- */
- @Override
- protected void service(HttpServletRequest arg0, HttpServletResponse arg1)
- throws ServletException, IOException {
- if (arg0.getHeader(METHOD_HEADER_NAME) == null) {
- super.service(arg0, arg1);
- return;
- }
- overrideMethod(arg0, arg1);
-
- }
-
- private void overrideMethod(HttpServletRequest arg0,
- HttpServletResponse arg1) throws ServletException, IOException {
- final String method = arg0.getMethod();
- final String overrideHeaderMethod = arg0.getHeader(METHOD_HEADER_NAME);
- if (overrideHeaderMethod.equals(method)) {
- super.service(arg0, arg1);
- return;
- }
- // These methodes are use by GDATA Client APIs
- if (overrideHeaderMethod.equals(METHOD_DELETE)) {
- doDelete(arg0, arg1);
- } else if (overrideHeaderMethod.equals(METHOD_GET)) {
- doGet(arg0, arg1);
- } else if (overrideHeaderMethod.equals(METHOD_POST)) {
- doPost(arg0, arg1);
- } else if (overrideHeaderMethod.equals(METHOD_PUT)) {
- doPut(arg0, arg1);
- } else {
- // if another method has been overwritten follow the HttpServlet
- // implementation
- super.service(arg0, arg1);
- }
-
- }
-
- /**
- *
- * @see javax.servlet.GenericServlet#init(javax.servlet.ServletConfig)
- */
- public void init(ServletConfig arg0) throws ServletException {
- HANDLER_FACTORY = GDataServerRegistry.getRegistry().lookup(RequestHandlerFactory.class,ComponentType.REQUESTHANDLERFACTORY);
- if(HANDLER_FACTORY == null)
- throw new ServletException("service not available");
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/AccountAdministrationServlet.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/AccountAdministrationServlet.java
deleted file mode 100644
index 9e1d5cbe4d4..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/AccountAdministrationServlet.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.servlet;
-
-import java.io.IOException;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.servlet.handler.GDataRequestHandler;
-
-/**
- * This Servlet provides an REST interface to create / update and delete user instances.
- * @author Simon Willnauer
- *
- */
-public class AccountAdministrationServlet extends AbstractGdataServlet {
-
- private static final Log LOGGER = LogFactory.getLog(AccountAdministrationServlet.class);
-
- /**
- *
- */
- private static final long serialVersionUID = 8215863212137543185L;
-
- @Override
- protected void doDelete(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
- GDataRequestHandler handler = HANDLER_FACTORY.getDeleteAccountHandler();
- if(LOGGER.isInfoEnabled())
- LOGGER.info("Process delete Account request");
- handler.processRequest(arg0,arg1);
-
- }
-
- @Override
- protected void doPost(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
- GDataRequestHandler handler = HANDLER_FACTORY.getInsertAccountHandler();
- if(LOGGER.isInfoEnabled())
- LOGGER.info("Process insert Account request");
- handler.processRequest(arg0,arg1);
-
- }
-
- @Override
- protected void doPut(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
-
- GDataRequestHandler handler = HANDLER_FACTORY.getUpdateAccountHandler();
- if(LOGGER.isInfoEnabled())
- LOGGER.info("Process update Account request");
- handler.processRequest(arg0,arg1);
- }
-
-
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/AuthenticationServlet.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/AuthenticationServlet.java
deleted file mode 100644
index eb68a1e96ed..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/AuthenticationServlet.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.servlet;
-
-import java.io.IOException;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.lucene.gdata.servlet.handler.AuthenticationHandler;
-
-/**
- * REST interface for handling authentification requests from clients to get a
- * auth token either as a cookie or as a plain auth token. This Servlet uses a
- * single {@link org.apache.lucene.gdata.servlet.handler.AuthenticationHandler}
- * instance to handle the incoming requests.
- *
- * @author Simon Willnauer
- *
- */
-public class AuthenticationServlet extends HttpServlet {
-
- private final AuthenticationHandler handler = new AuthenticationHandler();
-
- private static final long serialVersionUID = 7132478125868917848L;
-
- @SuppressWarnings("unused")
- @Override
- protected void doPost(HttpServletRequest request,
- HttpServletResponse response) throws ServletException, IOException {
- this.handler.processRequest(request, response);
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/FeedAdministrationServlet.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/FeedAdministrationServlet.java
deleted file mode 100644
index 0ada64eca3a..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/FeedAdministrationServlet.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.servlet;
-
-import java.io.IOException;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.servlet.handler.GDataRequestHandler;
-
-/**
- * This Servlet provides an REST interface to create / update and delete Feed instances.
- *
- * @author Simon Willnauer
- *
- */
-public class FeedAdministrationServlet extends AbstractGdataServlet {
- private static final Log LOGGER = LogFactory.getLog(FeedAdministrationServlet.class);
- /**
- *
- */
- private static final long serialVersionUID = -905586350743277032L;
-
- @Override
- protected void doDelete(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
- GDataRequestHandler handler = HANDLER_FACTORY.getDeleteFeedHandler();
- if(LOGGER.isInfoEnabled())
- LOGGER.info("Process delete feed request");
- handler.processRequest(arg0,arg1);
-
- }
-
- @Override
- protected void doPost(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
- GDataRequestHandler handler = HANDLER_FACTORY.getInsertFeedHandler();
- if(LOGGER.isInfoEnabled())
- LOGGER.info("Process insert feed request");
- handler.processRequest(arg0,arg1);
-
- }
-
- @Override
- protected void doPut(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
- GDataRequestHandler handler = HANDLER_FACTORY.getUpdateFeedHandler();
- if(LOGGER.isInfoEnabled())
- LOGGER.info("Process update feed request");
- handler.processRequest(arg0,arg1);
-
- }
-
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/RequestControllerServlet.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/RequestControllerServlet.java
deleted file mode 100644
index 58c45537f56..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/RequestControllerServlet.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.servlet;
-
-import java.io.IOException;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.servlet.handler.GDataRequestHandler;
-
-/**
- * Provides a clean basic interface for GDATA Client API and requests to the
- * GDATA Server. This Servlet dispatches the incoming requests to defined GDATA
- * request handlers. Each of the handler processes the incoming request and
- * responds according to the requested action.
- *
- * @author Simon Willnauer
- *
- */
-public class RequestControllerServlet extends AbstractGdataServlet {
- private static final Log LOGGER = LogFactory.getLog(RequestControllerServlet.class);
-
- /**
- * Version ID since this class implements
- *
- * @see java.io.Serializable
- */
- private static final long serialVersionUID = 7540810742476175576L;
-
- /**
- * @see javax.servlet.http.HttpServlet#doDelete(javax.servlet.http.HttpServletRequest,
- * javax.servlet.http.HttpServletResponse)
- */
- @Override
- protected void doDelete(HttpServletRequest arg0, HttpServletResponse arg1)
- throws ServletException, IOException {
- GDataRequestHandler hanlder = HANDLER_FACTORY.getEntryDeleteHandler();
- if(LOGGER.isInfoEnabled())
- LOGGER.info("Process DELETE request");
-
- hanlder.processRequest(arg0, arg1);
- }
-
- /**
- * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest,
- * javax.servlet.http.HttpServletResponse)
- */
- @Override
- protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1)
- throws ServletException, IOException {
- GDataRequestHandler hanlder = HANDLER_FACTORY.getFeedQueryHandler();
- if(LOGGER.isInfoEnabled())
- LOGGER.info("Process GET request");
- hanlder.processRequest(arg0, arg1);
- }
-
- /**
- * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest,
- * javax.servlet.http.HttpServletResponse)
- */
- @Override
- protected void doPost(HttpServletRequest arg0, HttpServletResponse arg1)
- throws ServletException, IOException {
- GDataRequestHandler hanlder = HANDLER_FACTORY.getEntryInsertHandler();
- if(LOGGER.isInfoEnabled())
- LOGGER.info("Process POST request");
- hanlder.processRequest(arg0, arg1);
- }
-
- /**
- * @see javax.servlet.http.HttpServlet#doPut(javax.servlet.http.HttpServletRequest,
- * javax.servlet.http.HttpServletResponse)
- */
- @Override
- protected void doPut(HttpServletRequest arg0, HttpServletResponse arg1)
- throws ServletException, IOException {
- GDataRequestHandler hanlder = HANDLER_FACTORY.getEntryUpdateHandler();
- if(LOGGER.isInfoEnabled())
- LOGGER.info("Process PUT request");
- hanlder.processRequest(arg0, arg1);
- }
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/AbstractAccountHandler.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/AbstractAccountHandler.java
deleted file mode 100644
index 7f857accf92..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/AbstractAccountHandler.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.servlet.handler;
-
-import java.io.IOException;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.data.GDataAccount;
-import org.apache.lucene.gdata.data.GDataAccount.AccountRole;
-import org.apache.lucene.gdata.server.GDataResponse;
-import org.apache.lucene.gdata.server.ServiceException;
-import org.apache.lucene.gdata.server.ServiceFactory;
-import org.apache.lucene.gdata.server.administration.AccountBuilder;
-import org.apache.lucene.gdata.server.administration.AdminService;
-import org.apache.lucene.gdata.server.registry.ComponentType;
-import org.apache.lucene.gdata.server.registry.GDataServerRegistry;
-import org.xml.sax.SAXException;
-
-/**
- * @author Simon Willnauer
- *
- */
-public abstract class AbstractAccountHandler extends RequestAuthenticator
- implements GDataRequestHandler {
- private static final Log LOG = LogFactory
- .getLog(AbstractAccountHandler.class);
-
- private boolean authenticated = false;
-
- private int error;
-
- private String errorMessage = "";
-
- private boolean isError = false;
-
- protected AdminService service;
-
- /**
- * @see org.apache.lucene.gdata.servlet.handler.GDataRequestHandler#processRequest(javax.servlet.http.HttpServletRequest,
- * javax.servlet.http.HttpServletResponse)
- */
- @SuppressWarnings("unused")
- public void processRequest(HttpServletRequest request,
- HttpServletResponse response) throws ServletException, IOException {
- try{
- this.authenticated = authenticateAccount(request,
- AccountRole.USERADMINISTRATOR);
-
- if (this.authenticated) {
- GDataServerRegistry registry = GDataServerRegistry.getRegistry();
- ServiceFactory factory = registry.lookup(ServiceFactory.class,
- ComponentType.SERVICEFACTORY);
- try {
-
- GDataAccount account = getAccountFromRequest(request);
- if (!account.requiredValuesSet()) {
- setError(GDataResponse.SERVER_ERROR,
- "Required server component not available");
- throw new AccountHandlerException(
- "Required values are not set -- account can not be saved -- "
- + account);
- }
- this.service = factory.getAdminService();
- processServiceAction(account);
- } catch (ServiceException e) {
- LOG.error("Can't process account action -- " + e.getMessage(),
- e);
- setError(e.getErrorCode(), "");
- }
- catch (AccountHandlerException e) {
- LOG.error("Can't process account action -- " + e.getMessage(),
- e);
- }
- }else{
- setError(GDataResponse.UNAUTHORIZED,"Authorization failed");
- }
- sendResponse(response);
- }finally{
- if(this.service!=null)
- this.service.close();
- }
-
- }
-
-
-
-
- protected GDataAccount getAccountFromRequest(
- final HttpServletRequest request) throws AccountHandlerException {
- try {
- GDataAccount account = AccountBuilder.buildAccount(request
- .getReader());
- if (account == null) {
- setError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "");
- throw new AccountHandlerException(
- "unexpected value -- parsed account is null");
- }
- return account;
- } catch (IOException e) {
- setError(HttpServletResponse.SC_BAD_REQUEST, "can not read input");
- throw new AccountHandlerException("Can't read from request reader",
- e);
- } catch (SAXException e) {
- setError(HttpServletResponse.SC_BAD_REQUEST,
- "can not parse gdata account");
- throw new AccountHandlerException(
- "Can not parse incoming gdata account", e);
- }
- }
-
- protected void sendResponse(HttpServletResponse response) {
-
- if (!this.isError)
- return;
- try {
- response.sendError(this.error, this.errorMessage);
- } catch (IOException e) {
- LOG.warn("can send error in RequestHandler ", e);
- }
- }
-
- protected void setError(int error, String message) {
- this.error = error;
- this.errorMessage = message;
- this.isError = true;
- }
-
- protected int getErrorCode() {
- return this.error;
- }
-
- protected String getErrorMessage() {
- return this.errorMessage;
- }
-
- protected abstract void processServiceAction(final GDataAccount account)
- throws ServiceException;
-
- static class AccountHandlerException extends Exception {
-
- /**
- *
- */
- private static final long serialVersionUID = 3140463271122190694L;
-
- /**
- * Constructs a new AccountHandlerException with an exception
- * message and the exception caused this exception.
- *
- * @param arg0 -
- * the exception message
- * @param arg1 -
- * the exception cause
- */
- public AccountHandlerException(String arg0, Throwable arg1) {
- super(arg0, arg1);
-
- }
-
- /**
- * Constructs a new AccountHandlerException with an exception
- * message.
- *
- * @param arg0 -
- * the exception message
- */
- public AccountHandlerException(String arg0) {
- super(arg0);
-
- }
-
- }
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/AbstractFeedHandler.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/AbstractFeedHandler.java
deleted file mode 100644
index 10ce873442a..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/AbstractFeedHandler.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.servlet.handler;
-
-import java.io.IOException;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.data.GDataAccount;
-import org.apache.lucene.gdata.data.ServerBaseFeed;
-import org.apache.lucene.gdata.data.GDataAccount.AccountRole;
-import org.apache.lucene.gdata.server.GDataEntityBuilder;
-import org.apache.lucene.gdata.server.GDataResponse;
-import org.apache.lucene.gdata.server.ServiceException;
-import org.apache.lucene.gdata.server.ServiceFactory;
-import org.apache.lucene.gdata.server.administration.AdminService;
-import org.apache.lucene.gdata.server.registry.ComponentType;
-import org.apache.lucene.gdata.server.registry.GDataServerRegistry;
-import org.apache.lucene.gdata.server.registry.ProvidedService;
-
-import com.google.gdata.util.ParseException;
-
-/**
- *
- * @author Simon Willnauer
- *
- */
-public abstract class AbstractFeedHandler extends RequestAuthenticator implements GDataRequestHandler {
- private static final Log LOG = LogFactory.getLog(AbstractFeedHandler.class);
-
- protected static final String PARAMETER_ACCOUNT = "account";
-
- protected static final String PARAMETER_SERVICE = "service";
- private int error;
- protected boolean authenticated = false;
-
- private String errorMessage = "";
- private boolean isError = false;
-
- /**
- * @see org.apache.lucene.gdata.servlet.handler.GDataRequestHandler#processRequest(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
- */
- @SuppressWarnings("unused")
- public void processRequest(HttpServletRequest request,
- HttpServletResponse response) throws ServletException, IOException {
- this.authenticated = authenticateAccount(request,AccountRole.FEEDAMINISTRATOR);
- if(!this.authenticated)
- setError(GDataResponse.UNAUTHORIZED,"Authorization failed");
-
- }
-
- protected ServerBaseFeed createFeedFromRequest(HttpServletRequest request) throws ParseException, IOException, FeedHandlerException{
- GDataServerRegistry registry = GDataServerRegistry.getRegistry();
- String providedService = request.getParameter(PARAMETER_SERVICE);
- if(!registry.isServiceRegistered(providedService)){
- setError(GDataResponse.NOT_FOUND,"no such service");
- throw new FeedHandlerException("ProvicdedService is not registered -- Name: "+providedService);
- }
- ProvidedService provServiceInstance = registry.getProvidedService(providedService);
- if(providedService == null){
- setError(GDataResponse.BAD_REQUEST,"no such service");
- throw new FeedHandlerException("no such service registered -- "+providedService);
- }
- try{
- ServerBaseFeed retVal = new ServerBaseFeed(GDataEntityBuilder.buildFeed(request.getReader(),provServiceInstance));
- retVal.setServiceConfig(provServiceInstance);
- return retVal;
- }catch (IOException e) {
- if(LOG.isInfoEnabled())
- LOG.info("Can not read from input stream - ",e);
- setError(GDataResponse.BAD_REQUEST,"Can not read from input stream");
- throw e;
- }catch (ParseException e) {
- if(LOG.isInfoEnabled())
- LOG.info("feed can not be parsed - ",e);
- setError(GDataResponse.BAD_REQUEST,"incoming feed can not be parsed");
- throw e;
- }
-
- }
-
-
- protected GDataAccount createRequestedAccount(HttpServletRequest request) throws FeedHandlerException{
- GDataServerRegistry registry = GDataServerRegistry.getRegistry();
- ServiceFactory serviceFactory = registry.lookup(ServiceFactory.class,ComponentType.SERVICEFACTORY);
-
- if(serviceFactory == null){
- setError(GDataResponse.SERVER_ERROR, "Required server component not available");
- throw new FeedHandlerException("Required server component not available -- "+ServiceFactory.class.getName());
- }
- AdminService service = serviceFactory.getAdminService();
- String account = request.getParameter(PARAMETER_ACCOUNT);
- try{
- return service.getAccount(account);
- }catch (ServiceException e) {
- if(LOG.isInfoEnabled())
- LOG.info("no account for requested account - "+account,e);
- setError(HttpServletResponse.SC_BAD_REQUEST,"no such account");
- throw new FeedHandlerException(e.getMessage(),e);
- }
- }
-
- protected void sendResponse(HttpServletResponse response){
-
- if(!this.isError)
- return;
- try{
- response.sendError(this.error,this.errorMessage);
- }catch (IOException e) {
- LOG.warn("can send error in RequestHandler ",e);
- }
- }
-
- protected void setError(int error, String message){
- this.error = error;
- this.errorMessage = message;
- this.isError = true;
- }
- protected int getErrorCode(){
- return this.error;
- }
-
- protected String getErrorMessage(){
- return this.errorMessage;
- }
-
- static class FeedHandlerException extends Exception{
-
- /**
- *
- */
- private static final long serialVersionUID = 1L;
-
- /**
- * Creates a new FeedHandlerException with a exception message and the exception cause this ex.
- * @param arg0 - the message
- * @param arg1 - the cause
- */
- public FeedHandlerException(String arg0, Throwable arg1) {
- super(arg0, arg1);
-
- }
-
- /**
- * Creates a new FeedHandlerException with a exception message.
- * @param arg0 - message
- */
- public FeedHandlerException(String arg0) {
- super(arg0 );
-
- }
-
- }
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/AbstractGdataRequestHandler.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/AbstractGdataRequestHandler.java
deleted file mode 100644
index d9140145170..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/AbstractGdataRequestHandler.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.servlet.handler;
-
-import java.io.IOException;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.server.GDataRequest;
-import org.apache.lucene.gdata.server.GDataRequestException;
-import org.apache.lucene.gdata.server.GDataResponse;
-import org.apache.lucene.gdata.server.Service;
-import org.apache.lucene.gdata.server.ServiceFactory;
-import org.apache.lucene.gdata.server.GDataRequest.GDataRequestType;
-import org.apache.lucene.gdata.server.registry.ComponentType;
-import org.apache.lucene.gdata.server.registry.GDataServerRegistry;
-
-/**
- * @author Simon Willnauer
- *
- */
-public abstract class AbstractGdataRequestHandler extends RequestAuthenticator implements
- GDataRequestHandler {
- private final static Log LOG = LogFactory
- .getLog(AbstractGdataRequestHandler.class);
- /*
- * UTF-8 is the encoding used in the client API to send the entries to the server
- */
- private final static String ENCODING = "UTF-8";
- protected Service service;
- protected GDataRequest feedRequest;
- protected GDataResponse feedResponse;
-
- /**
- * @see org.apache.lucene.gdata.servlet.handler.GDataRequestHandler#processRequest(javax.servlet.http.HttpServletRequest,
- * javax.servlet.http.HttpServletResponse)
- */
- public abstract void processRequest(HttpServletRequest request,
- HttpServletResponse response) throws ServletException, IOException;
-
- protected void initializeRequestHandler(final HttpServletRequest request, final HttpServletResponse response, final GDataRequestType type)
- throws GDataRequestException, ServletException {
- this.feedRequest = new GDataRequest(request, type);
- this.feedResponse = new GDataResponse(response);
- this.feedResponse.setEncoding(ENCODING);
-
- try {
- this.feedRequest.initializeRequest();
- } catch (GDataRequestException e) {
- setError(e.getErrorCode());
- LOG.warn("Couldn't initialize FeedRequest - " + e.getMessage(), e);
- throw e;
- }
- getService(this.feedRequest);
- }
-
-
-
- protected void sendError() throws IOException {
- this.feedResponse.sendError();
-
- }
-
- protected void setFeedResponseFormat() {
- this.feedResponse.setOutputFormat(this.feedRequest.getRequestedResponseFormat());
- }
-
- protected void setFeedResponseStatus(int status) {
- this.feedResponse.setResponseCode(status);
- }
-
- protected void setError(int error) {
- this.feedResponse.setError(error);
- }
-
- private void getService(GDataRequest request) throws ServletException {
- GDataServerRegistry registry = GDataServerRegistry.getRegistry();
- ServiceFactory serviceFactory = registry.lookup(ServiceFactory.class,ComponentType.SERVICEFACTORY);
- this.service = serviceFactory.getService(request);
- if(this.service == null)
- throw new ServletException("Service not available");
-
- }
-
- protected void closeService(){
- this.service.close();
- }
-
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/AuthenticationHandler.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/AuthenticationHandler.java
deleted file mode 100644
index 6161fbe9645..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/AuthenticationHandler.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.servlet.handler;
-
-import java.io.IOException;
-import java.io.Writer;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.data.GDataAccount;
-import org.apache.lucene.gdata.server.GDataResponse;
-import org.apache.lucene.gdata.server.ServiceException;
-import org.apache.lucene.gdata.server.ServiceFactory;
-import org.apache.lucene.gdata.server.administration.AdminService;
-import org.apache.lucene.gdata.server.authentication.AuthenticationController;
-import org.apache.lucene.gdata.server.authentication.AuthenticationException;
-import org.apache.lucene.gdata.server.registry.ComponentType;
-import org.apache.lucene.gdata.server.registry.GDataServerRegistry;
-
-
-
-/**
- * @author Simon Willnauer
- *
- */
-public class AuthenticationHandler implements GDataRequestHandler {
- private static final Log LOG = LogFactory.getLog(AuthenticationHandler.class);
- private final AuthenticationController controller;
- private final static String errorKey = "Error";
- private final static char seperatory = '=';
- private final ServiceFactory serviceFactory;
- private final GDataServerRegistry registry;
- /**
- *
- */
- public AuthenticationHandler() {
- this.registry = GDataServerRegistry.getRegistry();
- this.controller = this.registry.lookup(AuthenticationController.class, ComponentType.AUTHENTICATIONCONTROLLER);
- this.serviceFactory = this.registry.lookup(ServiceFactory.class, ComponentType.SERVICEFACTORY);
- }
-
- /**
- * @see org.apache.lucene.gdata.servlet.handler.GDataRequestHandler#processRequest(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
- */
- @SuppressWarnings("unused")
- public void processRequest(HttpServletRequest request,
- HttpServletResponse response) throws ServletException, IOException {
-
- try {
- String serviceName = request.getParameter(AuthenticationController.SERVICE_PARAMETER);
- if(LOG.isInfoEnabled()){
- String application = request.getParameter(AuthenticationController.APPLICATION_PARAMETER);
- LOG.info("Authentication request for service: "+serviceName+"; Application name: "+application);
- }
-
- if(!this.registry.isServiceRegistered(serviceName))
- throw new AuthenticationException("requested Service "+serviceName+"is not registered");
- String password = request.getParameter(AuthenticationController.PASSWORD_PARAMETER);
- String accountName = request.getParameter(AuthenticationController.ACCOUNT_PARAMETER);
- String clientIp = request.getRemoteHost();
-
-
-
- GDataAccount account = getAccount(accountName);
- if(account == null || !account.getPassword().equals(password))
- throw new AuthenticationException("Account is null or password does not match");
-
- String token = this.controller.authenticatAccount(account,clientIp);
- sendToken(response,token);
- if(LOG.isInfoEnabled()){
-
- LOG.info("Account authenticated -- "+account);
- }
- } catch (AuthenticationException e){
- LOG.error("BadAuthentication -- "+e.getMessage(),e);
- sendError(response, GDataResponse.FORBIDDEN,"BadAuthentication");
- }catch (Exception e) {
- LOG.error("Unexpected Exception -- SERVERERROR -- "+e.getMessage(),e);
- sendError(response,GDataResponse.SERVER_ERROR, "Service not available");
- }
- }
-
-
- private GDataAccount getAccount(String accountName) throws ServiceException{
-
- AdminService service = this.serviceFactory.getAdminService();
- try{
- return service.getAccount(accountName);
- }finally{
- service.close();
- }
-
-
- }
- private void sendError(HttpServletResponse response, int code, String message)throws IOException{
- Writer writer = response.getWriter();
- writer.write(errorKey);
- writer.write(seperatory);
- writer.write(message);
- response.sendError(code);
- }
-
- private void sendToken(HttpServletResponse response, String token) throws IOException{
- Writer responseWriter = response.getWriter();
- Cookie cookie = new Cookie(AuthenticationController.TOKEN_KEY,token);
- response.addCookie(cookie);
- responseWriter.write(AuthenticationController.TOKEN_KEY);
- responseWriter.write(seperatory);
- responseWriter.write(token);
- responseWriter.close();
- }
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/DefaultDeleteHandler.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/DefaultDeleteHandler.java
deleted file mode 100644
index 7d33bdbd4df..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/DefaultDeleteHandler.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.servlet.handler;
-
-import java.io.IOException;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.data.GDataAccount.AccountRole;
-import org.apache.lucene.gdata.server.GDataRequestException;
-import org.apache.lucene.gdata.server.GDataResponse;
-import org.apache.lucene.gdata.server.ServiceException;
-import org.apache.lucene.gdata.server.GDataRequest.GDataRequestType;
-
-/**
- * Default Handler implementation. This handler processes the incoming
- * {@link org.apache.lucene.gdata.server.GDataRequest} and deletes the requested
- * feed entry from the storage and the search component.
- *
- * The handler sends following response to the client:
- *
- *
- *
if the entry could be deleted - HTTP status code 200 OK
- *
if an error occurs - HTTP status code 500 INTERNAL SERVER ERROR
- *
if the resource could not found - HTTP status code 404 NOT FOUND
- *
- *
- * @author Simon Willnauer
- *
- */
-public class DefaultDeleteHandler extends AbstractGdataRequestHandler {
- private static final Log LOG = LogFactory
- .getLog(DefaultDeleteHandler.class);
-
- /**
- * @throws ServletException
- * @see org.apache.lucene.gdata.servlet.handler.AbstractGdataRequestHandler#processRequest(javax.servlet.http.HttpServletRequest,
- * javax.servlet.http.HttpServletResponse)
- */
- @Override
- public void processRequest(HttpServletRequest request,
- HttpServletResponse response) throws IOException, ServletException {
- try {
- initializeRequestHandler(request, response,GDataRequestType.DELETE);
- } catch (GDataRequestException e) {
- sendError();
- return;
- }
- if(!authenticateAccount(request,AccountRole.ENTRYAMINISTRATOR)){
- setError(GDataResponse.UNAUTHORIZED);
- sendError();
- return;
- }
-
- try {
- this.service.deleteEntry(this.feedRequest, this.feedResponse);
-
- } catch (ServiceException e) {
- LOG.error("Could not process DeleteFeed request - "
- + e.getMessage(), e);
- setError(e.getErrorCode());
- sendError();
- }finally{
- closeService();
- }
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/DefaultGetHandler.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/DefaultGetHandler.java
deleted file mode 100644
index d1fed95bce5..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/DefaultGetHandler.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.servlet.handler;
-
-import java.io.IOException;
-import java.util.Date;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.server.GDataRequestException;
-import org.apache.lucene.gdata.server.Service;
-import org.apache.lucene.gdata.server.ServiceException;
-import org.apache.lucene.gdata.server.GDataRequest.GDataRequestType;
-import org.apache.lucene.gdata.utils.DateFormater;
-
-import com.google.gdata.data.BaseEntry;
-import com.google.gdata.data.BaseFeed;
-
-/**
- * Default Handler implementation. This handler processes the incoming
- * {@link org.apache.lucene.gdata.server.GDataRequest} and retrieves the
- * requested feed from the underlying storage.
- *
- * This hander also processes search queries and retrieves the search hits from
- * the underlying search component. The user query will be accessed via the
- * {@link org.apache.lucene.gdata.server.GDataRequest} instance passed to the
- * {@link Service} class.
- *
- *
- * The DefaultGetHandler supports HTTP Conditional GET. It set the Last-Modified
- * response header based upon the value of the element in the
- * returned feed or entry. A client can send this value back as the value of the
- * If-Modified-Since request header to avoid retrieving the content again if it
- * hasn't changed. If the content hasn't changed since the If-Modified-Since
- * time, then the GData service returns a 304 (Not Modified) HTTP response.
- *
- *
- * @author Simon Willnauer
- *
- */
-public class DefaultGetHandler extends AbstractGdataRequestHandler {
- private static final Log LOG = LogFactory.getLog(DefaultGetHandler.class);
-
- /**
- * @see org.apache.lucene.gdata.servlet.handler.AbstractGdataRequestHandler#processRequest(javax.servlet.http.HttpServletRequest,
- * javax.servlet.http.HttpServletResponse)
- */
- @Override
- public void processRequest(HttpServletRequest request,
- HttpServletResponse response) throws IOException, ServletException {
- try {
- initializeRequestHandler(request, response, GDataRequestType.GET);
- } catch (GDataRequestException e) {
- sendError();
- return;
- }
-
- try {
- String modifiedSince = this.feedRequest.getModifiedSince();
- if (!checkIsModified(modifiedSince)) {
- this.feedResponse
- .setStatus(HttpServletResponse.SC_NOT_MODIFIED);
- return;
- }
- if (LOG.isInfoEnabled())
- LOG.info("Requested output formate: "
- + this.feedRequest.getRequestedResponseFormat());
- this.feedResponse.setOutputFormat(this.feedRequest
- .getRequestedResponseFormat());
- if (this.feedRequest.isFeedRequested()) {
- BaseFeed feed = this.service.getFeed(this.feedRequest,
- this.feedResponse);
-
- this.feedResponse.sendResponse(feed, this.feedRequest
- .getConfigurator());
- } else {
- BaseEntry entry = this.service.getSingleEntry(this.feedRequest,
- this.feedResponse);
- this.feedResponse.sendResponse(entry, this.feedRequest
- .getConfigurator());
- }
-
- } catch (ServiceException e) {
- LOG.error("Could not process GetFeed request - " + e.getMessage(),
- e);
- setError(e.getErrorCode());
- sendError();
- }finally{
- closeService();
- }
- }
-
- /**
- *
- * returns true if the resource has been modified since the specified
- * request header value
- */
- protected boolean checkIsModified(String lastModified)
- throws ServiceException {
- if (lastModified == null)
- return true;
- try {
- Date clientDate = DateFormater.parseDate(lastModified,DateFormater.HTTP_HEADER_DATE_FORMAT,DateFormater.HTTP_HEADER_DATE_FORMAT_TIME_OFFSET);
- Date entityDate;
- if (this.feedRequest.isFeedRequested())
- entityDate = this.service.getFeedLastModified(this.feedRequest
- .getFeedId());
- else
- entityDate = this.service.getEntryLastModified(this.feedRequest
- .getEntryId(),this.feedRequest.getFeedId());
- if(LOG.isInfoEnabled())
- LOG.info("comparing date clientDate: "+clientDate+"; last modified: "+entityDate);
- return (entityDate.getTime()-clientDate.getTime() > 1000);
- } catch (java.text.ParseException e) {
- LOG.info("Couldn't parse Last-Modified header -- "+lastModified,e);
-
- }
- return true;
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/DefaultInsertHandler.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/DefaultInsertHandler.java
deleted file mode 100644
index f37a0f97fe3..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/DefaultInsertHandler.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.servlet.handler;
-
-import java.io.IOException;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.data.GDataAccount.AccountRole;
-import org.apache.lucene.gdata.server.GDataRequestException;
-import org.apache.lucene.gdata.server.GDataResponse;
-import org.apache.lucene.gdata.server.ServiceException;
-import org.apache.lucene.gdata.server.GDataRequest.GDataRequestType;
-
-import com.google.gdata.data.BaseEntry;
-
-/**
- * Default Handler implementation. This handler processes the incoming
- * {@link org.apache.lucene.gdata.server.GDataRequest} and inserts the requested
- * feed entry into the storage and the search component.
- *
- * The handler sends following response to the client:
- *
- *
- *
if the entry was added - HTTP status code 200 OK
- *
if an error occurs - HTTP status code 500 INTERNAL SERVER ERROR
- *
if the resource could not found - HTTP status code 404 NOT FOUND
- *
- *
The added entry will be send back to the client if the insert request was successful.
- *
- * @author Simon Willnauer
- *
- */
-public class DefaultInsertHandler extends AbstractGdataRequestHandler {
- private static final Log LOG = LogFactory.getLog(DefaultInsertHandler.class);
- /**
- * @throws ServletException
- * @see org.apache.lucene.gdata.servlet.handler.GDataRequestHandler#processRequest(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
- */
- @Override
- public void processRequest(HttpServletRequest request,
- HttpServletResponse response) throws IOException, ServletException {
- try {
- initializeRequestHandler(request,response,GDataRequestType.INSERT);
- } catch (GDataRequestException e) {
- sendError();
- return;
- }
- if(!authenticateAccount(this.feedRequest,AccountRole.ENTRYAMINISTRATOR)){
- setError(GDataResponse.UNAUTHORIZED);
- sendError();
- return;
- }
-
- try{
- BaseEntry entry = this.service.createEntry(this.feedRequest,this.feedResponse);
- setFeedResponseFormat();
- setFeedResponseStatus(GDataResponse.CREATED);
- this.feedResponse.sendResponse(entry, this.feedRequest.getConfigurator());
-
- }catch (ServiceException e) {
- LOG.error("Could not process GetFeed request - "+e.getMessage(),e);
- setError(e.getErrorCode());
- sendError();
- }finally{
- closeService();
- }
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/DefaultRequestHandlerFactory.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/DefaultRequestHandlerFactory.java
deleted file mode 100644
index d10133895b0..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/DefaultRequestHandlerFactory.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.servlet.handler;
-
-import org.apache.lucene.gdata.server.registry.Component;
-import org.apache.lucene.gdata.server.registry.ComponentType;
-
-/**
- * Default implementation for RequestHandlerFactory Builds the
- * {@link org.apache.lucene.gdata.servlet.handler.GDataRequestHandler}
- * instances.
- * This class should not be access directy. The class will be registered in the {@link org.apache.lucene.gdata.server.registry.GDataServerRegistry}.
- * Use {@link org.apache.lucene.gdata.server.registry.GDataServerRegistry#lookup(Class, ComponentType)}
- *
- * @author Simon Willnauer
- *
- */
-@Component(componentType=ComponentType.REQUESTHANDLERFACTORY)
-public class DefaultRequestHandlerFactory extends RequestHandlerFactory {
-
-
- /**
- * public constructor to enable loading via the registry
- * @see org.apache.lucene.gdata.server.registry.Component
- * @see org.apache.lucene.gdata.server.registry.GDataServerRegistry
- */
- public DefaultRequestHandlerFactory() {
- //
- }
-
- /**
- * @see org.apache.lucene.gdata.servlet.handler.RequestHandlerFactory#getEntryUpdateHandler()
- */
- @Override
- public GDataRequestHandler getEntryUpdateHandler() {
-
- return new DefaultUpdateHandler();
- }
-
- /**
- * @see org.apache.lucene.gdata.servlet.handler.RequestHandlerFactory#getEntryDeleteHandler()
- */
- @Override
- public GDataRequestHandler getEntryDeleteHandler() {
-
- return new DefaultDeleteHandler();
- }
-
- /**
- * @see org.apache.lucene.gdata.servlet.handler.RequestHandlerFactory#getFeedQueryHandler()
- */
- @Override
- public GDataRequestHandler getFeedQueryHandler() {
-
- return new DefaultGetHandler();
- }
-
- /**
- * @see org.apache.lucene.gdata.servlet.handler.RequestHandlerFactory#getEntryInsertHandler()
- */
- @Override
- public GDataRequestHandler getEntryInsertHandler() {
-
- return new DefaultInsertHandler();
- }
-
- /**
- * @see org.apache.lucene.gdata.servlet.handler.RequestHandlerFactory#getInsertAccountHandler()
- */
- @Override
- public GDataRequestHandler getInsertAccountHandler() {
-
- return new InsertAccountStrategy();
- }
-
- /**
- * @see org.apache.lucene.gdata.servlet.handler.RequestHandlerFactory#getDeleteAccountHandler()
- */
- @Override
- public GDataRequestHandler getDeleteAccountHandler() {
-
- return new DeleteAccountStrategy();
- }
-
- /**
- * @see org.apache.lucene.gdata.servlet.handler.RequestHandlerFactory#getUpdateAccountHandler()
- */
- @Override
- public GDataRequestHandler getUpdateAccountHandler() {
-
- return new UpdateAccountStrategy();
- }
-
- /**
- * @see org.apache.lucene.gdata.servlet.handler.RequestHandlerFactory#getInsertFeedHandler()
- */
- @Override
- public GDataRequestHandler getInsertFeedHandler() {
-
- return new InsertFeedHandler();
- }
-
- /**
- * @see org.apache.lucene.gdata.servlet.handler.RequestHandlerFactory#getUpdateFeedHandler()
- */
- @Override
- public GDataRequestHandler getUpdateFeedHandler() {
-
- return new UpdateFeedHandler();
- }
-
- /**
- * @see org.apache.lucene.gdata.servlet.handler.RequestHandlerFactory#getDeleteFeedHandler()
- */
- @Override
- public GDataRequestHandler getDeleteFeedHandler() {
-
- return new DeleteFeedHandler();
- }
-
- /**
- * @see org.apache.lucene.gdata.server.registry.ServerComponent#initialize()
- */
- public void initialize() {
- //
- }
-
- /**
- * @see org.apache.lucene.gdata.server.registry.ServerComponent#destroy()
- */
- public void destroy() {
- //
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/DefaultUpdateHandler.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/DefaultUpdateHandler.java
deleted file mode 100644
index e22b724496e..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/DefaultUpdateHandler.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.servlet.handler;
-
-import java.io.IOException;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.data.GDataAccount.AccountRole;
-import org.apache.lucene.gdata.server.GDataRequestException;
-import org.apache.lucene.gdata.server.GDataResponse;
-import org.apache.lucene.gdata.server.ServiceException;
-import org.apache.lucene.gdata.server.GDataRequest.GDataRequestType;
-
-import com.google.gdata.data.BaseEntry;
-
-/**
- * Default Handler implementation. This handler processes the incoming
- * {@link org.apache.lucene.gdata.server.GDataRequest} and updates the requested
- * feed entry in the storage and the search component.
- *
- * The handler sends following response to the client:
- *
- *
- *
if the entry was successfully updated - HTTP status code 200 OK
- *
if an error occurs - HTTP status code 500 INTERNAL SERVER ERROR
- *
if the resource could not found - HTTP status code 404 NOT FOUND
- *
- *
- * @author Simon Willnauer
- *
- */
-public class DefaultUpdateHandler extends AbstractGdataRequestHandler {
- private static final Log LOG = LogFactory
- .getLog(DefaultUpdateHandler.class);
-
- /**
- * @throws ServletException
- * @see org.apache.lucene.gdata.servlet.handler.AbstractGdataRequestHandler#processRequest(javax.servlet.http.HttpServletRequest,
- * javax.servlet.http.HttpServletResponse)
- */
- @Override
- public void processRequest(HttpServletRequest request,
- HttpServletResponse response) throws IOException, ServletException {
- try {
- initializeRequestHandler(request, response,GDataRequestType.UPDATE);
- } catch (GDataRequestException e) {
- setError(GDataResponse.UNAUTHORIZED);
- sendError();
- return;
- }
- if(!authenticateAccount(request,AccountRole.ENTRYAMINISTRATOR)){
- sendError();
- return;
- }
-
- try {
- BaseEntry entry = this.service.updateEntry(this.feedRequest,
- this.feedResponse);
- setFeedResponseFormat();
- this.feedResponse.sendResponse(entry, this.feedRequest.getConfigurator());
-
- }
- catch (ServiceException e) {
- LOG.error("Could not process UpdateFeed request - "
- + e.getMessage(), e);
- setError(e.getErrorCode());
- sendError();
- }finally{
- closeService();
- }
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/DeleteAccountStrategy.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/DeleteAccountStrategy.java
deleted file mode 100644
index b808a2a3720..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/DeleteAccountStrategy.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.servlet.handler;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.data.GDataAccount;
-import org.apache.lucene.gdata.server.ServiceException;
-
-/**
- * @author Simon Willnauer
- *
- */
-public class DeleteAccountStrategy extends AbstractAccountHandler {
-
- private static final Log LOG = LogFactory.getLog(DefaultDeleteHandler.class);
-
-
-
- @Override
- protected void processServiceAction(GDataAccount account) throws ServiceException {
- try{
- this.service.deleteAccount(account);
- }catch (ServiceException e) {
- LOG.error("Can't delete account -- "+e.getMessage(),e);
- throw e;
- }
-
- }
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/DeleteFeedHandler.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/DeleteFeedHandler.java
deleted file mode 100644
index 881432a21f3..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/DeleteFeedHandler.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.servlet.handler;
-
-import java.io.IOException;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.data.ServerBaseFeed;
-import org.apache.lucene.gdata.server.GDataResponse;
-import org.apache.lucene.gdata.server.ServiceException;
-import org.apache.lucene.gdata.server.ServiceFactory;
-import org.apache.lucene.gdata.server.administration.AdminService;
-import org.apache.lucene.gdata.server.registry.ComponentType;
-import org.apache.lucene.gdata.server.registry.GDataServerRegistry;
-
-/**
- * @author Simon Willnauer
- *
- */
-public class DeleteFeedHandler extends AbstractFeedHandler{
- private static final Log LOG = LogFactory.getLog(DeleteFeedHandler.class);
-
- /**
- * @throws IOException
- * @see org.apache.lucene.gdata.servlet.handler.GDataRequestHandler#processRequest(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
- */
- @Override
- public void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- super.processRequest(request,response);
- if(this.authenticated){
- AdminService service = null;
- try {
- ServerBaseFeed feed = createDeleteFeed(request);
-
- GDataServerRegistry registry = GDataServerRegistry.getRegistry();
- ServiceFactory serviceFactory = registry.lookup(ServiceFactory.class,ComponentType.SERVICEFACTORY);
- if(serviceFactory == null){
- setError(GDataResponse.SERVER_ERROR,"required component is not available");
- throw new FeedHandlerException("Can't save feed - ServiceFactory is null");
- }
- service = serviceFactory.getAdminService();
- service.deleteFeed(feed);
- } catch (FeedHandlerException e) {
- LOG.error("Can not delete feed -- "+e.getMessage(),e);
- }catch (ServiceException e) {
- LOG.error("Can not delete feed -- "+e.getMessage(),e);
- setError(e.getErrorCode(),"can not create feed");
- }finally{
- if(service != null)
- service.close();
- }
- }
- sendResponse(response);
-
-
-
- }
-
- private ServerBaseFeed createDeleteFeed(final HttpServletRequest request) throws FeedHandlerException {
- String feedId = request.getParameter("feedid");
- if(feedId == null){
- setError(GDataResponse.BAD_REQUEST,"No feed id specified");
- throw new FeedHandlerException("no feed Id specified");
- }
- ServerBaseFeed retVal = new ServerBaseFeed();
- retVal.setId(feedId);
- return retVal;
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/GDataRequestHandler.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/GDataRequestHandler.java
deleted file mode 100644
index c42785cd6d3..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/GDataRequestHandler.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.servlet.handler;
-
-import java.io.IOException;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * Based on the Command pattern [GoF], the Command and Controller Strategy
- * suggests providing a generic interface to the handler components to which the
- * controller may delegate responsibility, minimizing the coupling among these
- * components.
- *
- * Adding to or changing the work that needs to be completed by these handlers
- * does not require any changes to the interface between the controller and the
- * handlers, but rather to the type and/or content of the commands. This provides
- * a flexible and easily extensible mechanism for developers to add request
- * handling behaviors.
- *
- * The controller invokes the processRequest method from the corresponding servlet doXXX
- * method to delegate the request to the handler.
- *
- *
- * @author Simon Willnauer
- *
- */
-public interface GDataRequestHandler {
- /**
- * Processes the GDATA Client request
- *
- * @param request - the client request to be processed
- * @param response - the response to the client request
- * @throws ServletException - if a servlet exception is thrown by the request or response
- * @throws IOException - if an input/output error occurs due to accessing an IO steam
- */
- public abstract void processRequest(HttpServletRequest request,
- HttpServletResponse response) throws ServletException, IOException;
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/GDataRequestHandlerException.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/GDataRequestHandlerException.java
deleted file mode 100644
index 0c1c593294a..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/GDataRequestHandlerException.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.servlet.handler;
-
-/**
- * @author Simon Willnauer
- *
- */
-public class GDataRequestHandlerException extends RuntimeException {
-
- /**
- *
- */
- private static final long serialVersionUID = -418225239671624153L;
-
-
- /**
- *
- */
- public GDataRequestHandlerException() {
- super();
-
- }
-
- /**
- * @param arg0
- */
- public GDataRequestHandlerException(String arg0) {
- super(arg0);
-
- }
-
- /**
- * @param arg0
- * @param arg1
- */
- public GDataRequestHandlerException(String arg0, Throwable arg1) {
- super(arg0, arg1);
-
- }
-
- /**
- * @param arg0
- */
- public GDataRequestHandlerException(Throwable arg0) {
- super(arg0);
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/InsertAccountStrategy.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/InsertAccountStrategy.java
deleted file mode 100644
index f13eaeb36db..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/InsertAccountStrategy.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.servlet.handler;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.data.GDataAccount;
-import org.apache.lucene.gdata.server.ServiceException;
-
-/**
- * @author Simon Willnauer
- *
- */
-public class InsertAccountStrategy extends AbstractAccountHandler {
- private static final Log LOG = LogFactory.getLog(InsertAccountStrategy.class);
-
-
-
- @Override
- protected void processServiceAction(GDataAccount account) throws ServiceException {
- try{
- this.service.createAccount(account);
- }catch (ServiceException e) {
- LOG.error("Can't create account -- "+e.getMessage(),e);
- throw e;
- }
-
- }
-
-
-
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/InsertFeedHandler.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/InsertFeedHandler.java
deleted file mode 100644
index bda76f6b41e..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/InsertFeedHandler.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.servlet.handler;
-
-import java.io.IOException;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.data.GDataAccount;
-import org.apache.lucene.gdata.data.ServerBaseFeed;
-import org.apache.lucene.gdata.server.GDataResponse;
-import org.apache.lucene.gdata.server.ServiceException;
-import org.apache.lucene.gdata.server.ServiceFactory;
-import org.apache.lucene.gdata.server.administration.AdminService;
-import org.apache.lucene.gdata.server.registry.ComponentType;
-import org.apache.lucene.gdata.server.registry.GDataServerRegistry;
-
-import com.google.gdata.util.ParseException;
-
-/**
- * @author Simon Willnauer
- *
- */
-public class InsertFeedHandler extends AbstractFeedHandler {
- private static final Log LOG = LogFactory.getLog(InsertFeedHandler.class);
-
- /**
- * @see org.apache.lucene.gdata.servlet.handler.GDataRequestHandler#processRequest(javax.servlet.http.HttpServletRequest,
- * javax.servlet.http.HttpServletResponse)
- */
- @SuppressWarnings("unused")
- public void processRequest(HttpServletRequest request,
- HttpServletResponse response) throws ServletException, IOException {
- super.processRequest(request, response);
- if (this.authenticated) {
- AdminService service = null;
- try {
- ServerBaseFeed feed = createFeedFromRequest(request);
- GDataAccount account = createRequestedAccount(request);
-
- GDataServerRegistry registry = GDataServerRegistry
- .getRegistry();
- ServiceFactory serviceFactory = registry.lookup(
- ServiceFactory.class, ComponentType.SERVICEFACTORY);
- if (serviceFactory == null) {
- setError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
- "required component is not available");
- throw new FeedHandlerException(
- "Can't save feed - ServiceFactory is null");
- }
- service = serviceFactory.getAdminService();
- service.createFeed(feed, account);
- } catch (ServiceException e) {
- setError(GDataResponse.SERVER_ERROR,
- "can not create feed");
- LOG.error("Can not create feed -- " + e.getMessage(), e);
- } catch (FeedHandlerException e) {
- LOG.error("Can not create feed -- " + e.getMessage(), e);
-
- }catch (ParseException e) {
- LOG.error("Can not create feed -- " + e.getMessage(), e);
- }finally{
- if(service != null)
- service.close();
- }
-
- }
- sendResponse(response);
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/RequestAuthenticator.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/RequestAuthenticator.java
deleted file mode 100644
index 9dc9b437854..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/RequestAuthenticator.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.servlet.handler;
-
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.data.GDataAccount;
-import org.apache.lucene.gdata.data.GDataAccount.AccountRole;
-import org.apache.lucene.gdata.server.GDataRequest;
-import org.apache.lucene.gdata.server.ServiceException;
-import org.apache.lucene.gdata.server.ServiceFactory;
-import org.apache.lucene.gdata.server.administration.AdminService;
-import org.apache.lucene.gdata.server.authentication.AuthenticationController;
-import org.apache.lucene.gdata.server.authentication.AuthenticatorException;
-import org.apache.lucene.gdata.server.authentication.GDataHttpAuthenticator;
-import org.apache.lucene.gdata.server.registry.ComponentType;
-import org.apache.lucene.gdata.server.registry.GDataServerRegistry;
-
-/**
- * The RequestAuthenticator provides access to the registered
- * {@link org.apache.lucene.gdata.server.authentication.AuthenticationController}
- * as a super class for all request handler requiereing authentication for
- * access. This class implements the
- * {@link org.apache.lucene.gdata.server.authentication.GDataHttpAuthenticator}
- * to get the auth token from the given request and call the needed Components
- * to authenticat the client.
- *
- * For request handler handling common requests like entry insert or update the
- * authentication will be based on the account name verified as the owner of the
- * feed to alter. If the accountname in the token does not match the name of the
- * account which belongs to the feed the given role will be used for
- * autentication. Authentication using the
- * {@link #authenticateAccount(HttpServletRequest, org.apache.lucene.gdata.data.GDataAccount.AccountRole)}
- * method, the account name will be ignored, authentication will be based on the
- * given AccountRole
- *
- *
- * @author Simon Willnauer
- *
- */
-public class RequestAuthenticator implements GDataHttpAuthenticator {
- private static final Log LOG = LogFactory
- .getLog(RequestAuthenticator.class);
-
- /**
- * @see org.apache.lucene.gdata.server.authentication.GDataHttpAuthenticator#authenticateAccount(org.apache.lucene.gdata.server.GDataRequest,
- * org.apache.lucene.gdata.data.GDataAccount.AccountRole)
- */
- public boolean authenticateAccount(GDataRequest request, AccountRole role) {
- String clientIp = request.getRemoteAddress();
- if (LOG.isDebugEnabled())
- LOG
- .debug("Authenticating Account for GDataRequest -- modifying entries -- Role: "
- + role + "; ClientIp: " + clientIp);
-
- AuthenticationController controller = GDataServerRegistry.getRegistry()
- .lookup(AuthenticationController.class,
- ComponentType.AUTHENTICATIONCONTROLLER);
- ServiceFactory factory = GDataServerRegistry.getRegistry().lookup(
- ServiceFactory.class, ComponentType.SERVICEFACTORY);
- AdminService adminService = factory.getAdminService();
- GDataAccount account;
- try {
- account = adminService.getFeedOwningAccount(request.getFeedId());
- String token = getTokenFromRequest(request.getHttpServletRequest());
- if (LOG.isDebugEnabled())
- LOG.debug("Got Token: " + token + "; for requesting account: "
- + account);
- if (account != null && token != null)
- return controller.authenticateToken(token, clientIp,
- AccountRole.ENTRYAMINISTRATOR, account.getName());
-
- } catch (ServiceException e) {
- LOG.error("can get GDataAccount for feedID -- "
- + request.getFeedId(), e);
- throw new AuthenticatorException(" Service exception occured", e);
-
- }finally{
-
- if(adminService!=null)
- adminService.close();
-
- }
-
- return false;
- }
-
- /**
- * @see org.apache.lucene.gdata.server.authentication.GDataHttpAuthenticator#authenticateAccount(javax.servlet.http.HttpServletRequest,
- * org.apache.lucene.gdata.data.GDataAccount.AccountRole)
- */
- public boolean authenticateAccount(HttpServletRequest request,
- AccountRole role) {
- String clientIp = request.getRemoteAddr();
- if (LOG.isDebugEnabled())
- LOG
- .debug("Authenticating Account for GDataRequest -- modifying entries -- Role: "
- + role + "; ClientIp: " + clientIp);
- AuthenticationController controller = GDataServerRegistry.getRegistry()
- .lookup(AuthenticationController.class,
- ComponentType.AUTHENTICATIONCONTROLLER);
- String token = getTokenFromRequest(request);
- if (LOG.isDebugEnabled())
- LOG.debug("Got Token: " + token + ";");
- if (token == null)
- return false;
- return controller.authenticateToken(token, clientIp, role, null);
-
- }
-
- protected String getTokenFromRequest(HttpServletRequest request) {
- String token = request
- .getHeader(AuthenticationController.AUTHORIZATION_HEADER);
- if (token == null || !token.startsWith("GoogleLogin")) {
- Cookie[] cookies = request.getCookies();
- if (cookies == null) {
- return null;
- }
- for (int i = 0; i < cookies.length; i++) {
- if (cookies[i].getName().equals(
- AuthenticationController.TOKEN_KEY)) {
- token = cookies[i].getValue();
- break;
- }
-
- }
- }
- if (token != null)
- token = token.substring(token.indexOf("=") + 1);
- return token;
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/RequestHandlerFactory.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/RequestHandlerFactory.java
deleted file mode 100644
index b3a9cd6ae32..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/RequestHandlerFactory.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.servlet.handler;
-
-import org.apache.lucene.gdata.server.registry.ServerComponent;
-
-/**
- * Abstract Superclass for RequestHandlerFactories
- * @author Simon Willnauer
- *
- */
-public abstract class RequestHandlerFactory implements ServerComponent {
-
-
-
-
- /**
- * public constructor to enable loading via the registry
- * @see org.apache.lucene.gdata.server.registry.Component
- * @see org.apache.lucene.gdata.server.registry.GDataServerRegistry
- */
- public RequestHandlerFactory() {
- super();
-
- }
-
-
- /**
- * Creates a EntryUpdateHandler which processes a GDATA UPDATE request.
- * @return - a RequestHandlerInstance
- */
- public abstract GDataRequestHandler getEntryUpdateHandler();
-
- /**
- * Creates a EntryDeleteHandler which processes a GDATA DELETE request.
- * @return - a RequestHandlerInstance
- */
- public abstract GDataRequestHandler getEntryDeleteHandler();
-
- /**
- * Creates a FeedQueryHandler which processes a GDATA Query / Get request.
- * @return - a RequestHandlerInstance
- */
- public abstract GDataRequestHandler getFeedQueryHandler();
-
- /**
- * Creates a EntryInsertHandler which processes a GDATA Insert request.
- * @return - a RequestHandlerInstance
- */
- public abstract GDataRequestHandler getEntryInsertHandler();
- /**
- * Creates a InsertAccountHandler which processes a Account Insert request.
- * @return - a RequestHandlerInstance
- */
- public abstract GDataRequestHandler getInsertAccountHandler();
- /**
- * Creates a DeleteAccountHandler which processes a Account Delete request.
- * @return - a RequestHandlerInstance
- */
- public abstract GDataRequestHandler getDeleteAccountHandler();
- /**
- * Creates a UpdateAccountHandler which processes a Account Update request.
- * @return - a RequestHandlerInstance
- */
- public abstract GDataRequestHandler getUpdateAccountHandler();
- /**
- * Creates a InsertFeedHandler which processes a Feed Insert request.
- * @return - a RequestHandlerInstance
- */
- public abstract GDataRequestHandler getInsertFeedHandler();
- /**
- * Creates a UpdateFeedHandler which processes a Feed Insert request.
- * @return - a RequestHandlerInstance
- */
- public abstract GDataRequestHandler getUpdateFeedHandler();
- /**
- * Creates a DeleteFeedHandler which processes a Feed Insert request.
- * @return - a RequestHandlerInstance
- */
- public abstract GDataRequestHandler getDeleteFeedHandler();
-
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/UpdateAccountStrategy.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/UpdateAccountStrategy.java
deleted file mode 100644
index 38735f6dec3..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/UpdateAccountStrategy.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.servlet.handler;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.data.GDataAccount;
-import org.apache.lucene.gdata.server.ServiceException;
-
-/**
- * @author Simon Willnauer
- *
- */
-public class UpdateAccountStrategy extends AbstractAccountHandler {
-
- private static final Log LOG = LogFactory.getLog(UpdateAccountStrategy.class);
-
-
-
- @Override
- protected void processServiceAction(GDataAccount account) throws ServiceException {
- try{
- this.service.updateAccount(account);
- }catch (ServiceException e) {
- LOG.error("Can't update account -- "+e.getMessage(),e);
- throw e;
- }
-
- }
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/UpdateFeedHandler.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/UpdateFeedHandler.java
deleted file mode 100644
index c6db626adaa..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/UpdateFeedHandler.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.servlet.handler;
-
-import java.io.IOException;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.data.GDataAccount;
-import org.apache.lucene.gdata.data.ServerBaseFeed;
-import org.apache.lucene.gdata.server.GDataResponse;
-import org.apache.lucene.gdata.server.ServiceException;
-import org.apache.lucene.gdata.server.ServiceFactory;
-import org.apache.lucene.gdata.server.administration.AdminService;
-import org.apache.lucene.gdata.server.registry.ComponentType;
-import org.apache.lucene.gdata.server.registry.GDataServerRegistry;
-
-/**
- * @author Simon Willnauer
- *
- */
-public class UpdateFeedHandler extends AbstractFeedHandler {
- private static final Log LOG = LogFactory.getLog(UpdateFeedHandler.class);
-
- /**
- * @see org.apache.lucene.gdata.servlet.handler.AbstractFeedHandler#processRequest(javax.servlet.http.HttpServletRequest,
- * javax.servlet.http.HttpServletResponse)
- */
- @SuppressWarnings("unused")
- @Override
- public void processRequest(HttpServletRequest request,
- HttpServletResponse response) throws ServletException, IOException {
- super.processRequest(request, response);
- if (this.authenticated) {
- AdminService service= null;
- try {
- ServerBaseFeed feed = createFeedFromRequest(request);
- GDataAccount account = createRequestedAccount(request);
-
- GDataServerRegistry registry = GDataServerRegistry
- .getRegistry();
- ServiceFactory serviceFactory = registry.lookup(
- ServiceFactory.class, ComponentType.SERVICEFACTORY);
- if (serviceFactory == null) {
- setError(GDataResponse.SERVER_ERROR,
- "required component is not available");
- throw new FeedHandlerException(
- "Can't update feed - ServiceFactory is null");
- }
- service = serviceFactory.getAdminService();
- service.updateFeed(feed, account);
- } catch (ServiceException e) {
- setError(e.getErrorCode(),
- "can not update feed");
- LOG.error("Can not update feed -- " + e.getMessage(), e);
- } catch (Exception e) {
-
- LOG.error("Can not update feed -- " + e.getMessage(), e);
-
- }finally{
- if(service != null)
- service.close();
- }
- }
- sendResponse(response);
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/package.html b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/package.html
deleted file mode 100644
index c41f397b769..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/handler/package.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-GData Request Handler.
-
-
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/package.html b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/package.html
deleted file mode 100644
index ac6f4d46fc2..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/servlet/package.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-Servlets acting as basic interfaces for gdata requests.
-
-
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/IDGenerator.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/IDGenerator.java
deleted file mode 100644
index 35a09fd0edf..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/IDGenerator.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.storage;
-
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-import java.security.SecureRandom;
-import java.util.concurrent.ArrayBlockingQueue;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * This is the main entry ID generator to generate unique ids for each entry.
- * The Generator uses {@link java.security.SecureRandom} Numbers and the
- * {@link java.lang.System#currentTimeMillis()} to create a semi-unique sting;
- * The string will be digested by a {@link java.security.MessageDigest} which
- * returns a byte array. The generator encodes the byte array as a hex string.
- *
- * The generated Id's will cached in a
- * {@link java.util.concurrent.BlockingQueue} and reproduced if an id has been
- * removed.
- *
- *
- * @author Simon Willnauer
- *
- */
-public class IDGenerator {
- final AtomicBoolean stopped = new AtomicBoolean(false);
-
- private final SecureRandom secureRandom;
-
- private final MessageDigest mdigest;
-
- private final BlockingQueue blockingQueue;
-
- private Thread runner;
-
- private static final int DEFAULT_CAPACITY = 10;
-
- protected static final Log LOGGER = LogFactory.getLog(IDGenerator.class);
-
- private static final String RUNNER_THREAD_NAME = "GDATA-ID Generator";
-
- /**
- * Constructs a new ID generator. with a fixed capacity of prebuild ids. The
- * default capacity is 10. Every given parameter less than 10 will be
- * ignored.
- *
- * @param capacity -
- * capacity of the prebuild id queue
- * @throws NoSuchAlgorithmException -
- * if the algorithm does not exist
- */
- public IDGenerator(int capacity) throws NoSuchAlgorithmException {
-
- this.secureRandom = SecureRandom.getInstance("SHA1PRNG");
- this.mdigest = MessageDigest.getInstance("SHA-1");
- this.blockingQueue = new ArrayBlockingQueue(
- (capacity < DEFAULT_CAPACITY ? DEFAULT_CAPACITY : capacity),
- false);
- startIDProducer();
-
- }
-
- /**
- * This method takes a gnerated id from the IDProducer queue and retruns it.
- * If no ID is available this method will wait until an ID is produced. This
- * implementation is thread-safe.
- *
- * @return a UID
- * @throws InterruptedException -
- * if interrupted while waiting
- */
- public String getUID() throws InterruptedException {
- return this.blockingQueue.take();
- }
-
- private void startIDProducer() {
- if (this.runner == null) {
- UIDProducer producer = new UIDProducer(this.blockingQueue,
- this.secureRandom, this.mdigest);
- this.runner = new Thread(producer);
- this.runner.setDaemon(true);
- this.runner.setName(RUNNER_THREAD_NAME);
- this.runner.start();
- }
- }
-
- /**
- * @return the current size of the queue
- */
- public int getQueueSize() {
- return this.blockingQueue.size();
- }
-
- /**
- * Stops the id-producer
- */
- public void stopIDGenerator() {
- this.stopped.set(true);
- this.runner.interrupt();
-
- }
-
- private class UIDProducer implements Runnable {
- SecureRandom random;
-
- BlockingQueue queue;
-
- MessageDigest digest;
-
- UIDProducer(BlockingQueue queue, SecureRandom random,
- MessageDigest digest) {
- this.queue = queue;
- this.random = random;
- this.digest = digest;
-
- }
-
- /**
- * @see java.lang.Runnable#run()
- */
- public void run() {
-
- while (!IDGenerator.this.stopped.get()) {
- try {
- this.queue.put(produce());
- } catch (InterruptedException e) {
- LOGGER
- .warn("UIDProducer has been interrupted -- runner is going down");
- return;
- }
- }
-
- }
-
- private String produce() {
- String randomNumber = Integer.toString(this.random.nextInt());
- byte[] byteResult = this.digest.digest(randomNumber.getBytes());
- return hexEncode(byteResult);
- }
-
- }
-
- /**
- * Encodes a given byte array into a hex string.
- *
- * @param input -
- * the byte array to encode
- * @return hex string representation of the given byte array
- */
- static String hexEncode(byte[] input) {
- StringBuffer result = new StringBuffer();
- char[] digits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
- 'a', 'b', 'c', 'd', 'e', 'f' };
- for (int idx = 0; idx < input.length; ++idx) {
- byte b = input[idx];
- result.append(digits[(b & 0xf0) >> 4]);
- result.append(digits[b & 0x0f]);
- }
- return result.toString();
- }
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/ModificationConflictException.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/ModificationConflictException.java
deleted file mode 100755
index 0077c963e0d..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/ModificationConflictException.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.storage;
-
-/**
- * This exception will be thrown if a Version conflict occures while updateing
- * or deleteing an entry. Or if one entry is modified concurrently.
- *
- *
- *
- */
-public class ModificationConflictException extends StorageException {
-
- /**
- *
- */
- private static final long serialVersionUID = 1L;
-
- /**
- * Constructs a new ModificationConflictException
- */
- public ModificationConflictException() {
- super();
- }
-
- /**
- * Constructs a new ModificationConflictException
- *
- * @param message -
- * the exception message
- */
- public ModificationConflictException(String message) {
- super(message);
-
- }
-
- /**
- * Constructs a new ModificationConflictException
- *
- * @param message -
- * the exception message
- * @param cause -
- * the root cause of this exception
- */
- public ModificationConflictException(String message, Throwable cause) {
- super(message, cause);
-
- }
-
- /**
- * Constructs a new ModificationConflictException
- *
- * @param cause -
- * the root cause of this exception
- */
- public ModificationConflictException(Throwable cause) {
- super(cause);
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/ResourceNotFoundException.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/ResourceNotFoundException.java
deleted file mode 100644
index f7470fa48ff..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/ResourceNotFoundException.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.storage;
-
-/**
- * This exception will be thrown if an requested resource of a resource to modify can not be found
- * @author Simon Willnauer
- *
- */
-public class ResourceNotFoundException extends StorageException {
-
-
- private static final long serialVersionUID = -8549987918130998249L;
-
- /**
- * Constructs an empty ResourceNotFoundException
- */
- public ResourceNotFoundException() {
- super();
- // TODO Auto-generated constructor stub
- }
-
- /**
- * Constructs a new ResourceNotFoundException with an exception message
- * @param message - the exception message
- */
- public ResourceNotFoundException(String message) {
- super(message);
- // TODO Auto-generated constructor stub
- }
-
- /**
- * Constructs a new ResourceNotFoundException with an exception message and a root cause
- * @param message - the exception message
- * @param cause - the root cause of this exception
- */
- public ResourceNotFoundException(String message, Throwable cause) {
- super(message, cause);
- // TODO Auto-generated constructor stub
- }
-
- /**
- * Constructs a new ResourceNotFoundException with a root cause
- * @param cause - the root cause of this exception
- *
- */
- public ResourceNotFoundException(Throwable cause) {
- super(cause);
- // TODO Auto-generated constructor stub
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/Storage.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/Storage.java
deleted file mode 100644
index 48375d70b06..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/Storage.java
+++ /dev/null
@@ -1,276 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.storage;
-
-import org.apache.lucene.gdata.data.GDataAccount;
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.data.ServerBaseFeed;
-
-import com.google.gdata.data.BaseEntry;
-import com.google.gdata.data.BaseFeed;
-
-/**
- * A interface every storage implementation must provide to access the
- * Storage. It describes all access methodes needed to store,
- * retrieve and look up data stored in the Storage component. This
- * interface acts as a Facade to hide the storage implementation from
- * the user.
- *
- * This could also act as a proxy for a remote storage. It also removes any
- * restrictions from custom storage implementations.
- *
- *
- *
- * @author Simon Willnauer
- *
- */
-/*
- * not final yet
- */
-public interface Storage {
-
- /**
- *
- * Stores the given entry. The ServerBaseEntry must provide a feed id and
- * the service type. configuration for the entry.
- *
- * @param entry -
- * the entry to store
- *
- * @return - the stored Entry for the server response
- * @throws StorageException -
- * if the entry can not be stored or required field are not set.
- */
- public abstract BaseEntry storeEntry(ServerBaseEntry entry)
- throws StorageException;
-
- /**
- * Deletes the given entry. The ServerBaseEntry just hase to provide the
- * entry id to be deleted.
- *
- * @param entry -
- * the entry to delete from the storage
- * @throws StorageException -
- * if the entry can not be deleted or the entry does not exist
- * or required field are not set.
- */
- public abstract void deleteEntry(ServerBaseEntry entry)
- throws StorageException;
-
- /**
- * Updates the given entry. The ServerBaseEntry must provide a feed id,
- * service id and the
- * {@link org.apache.lucene.gdata.server.registry.ProvidedService}
- *
- * @param entry -
- * the entry to update
- *
- * @return - the updated entry for server response.
- * @throws StorageException -
- * if the entry can not be updated or does not exist or required
- * field are not set.
- */
- public abstract BaseEntry updateEntry(ServerBaseEntry entry)
- throws StorageException;
-
- /**
- * Retrieves the requested feed from the storage. The given ServerBaseFeed
- * must provide information about the feed id, max-result count and the
- * start index. To create feeds and entries also the service type must be
- * provided.
- *
- * @param feed -
- * the to retieve from the storage
- * @return the requested feed
- * @throws StorageException -
- * the feed does not exist or can not be retrieved or required
- * field are not set.
- */
- public abstract BaseFeed getFeed(ServerBaseFeed feed)
- throws StorageException;
-
- /**
- * Retrieves the requested entry from the storage. The given entry must
- * provide information about the entry id and service type.
- *
- * @param entry -
- * the entry to retrieve
- * @return - the requested entry
- * @throws StorageException -
- * if the entry does not exist or can not be created or required
- * field are not set.
- */
- public abstract BaseEntry getEntry(ServerBaseEntry entry)
- throws StorageException;
-
- /**
- * Saves a new account. Required attributes to set are password
- * and accountname
- *
- * @param account -
- * the account to save
- * @throws StorageException -
- * if the account can not be stored or the account already
- * exists or required field are not set.
- */
- public abstract void storeAccount(final GDataAccount account)
- throws StorageException;
-
- /**
- * Updates an existing account. Required attributes to set are
- * password and accountname
- *
- * @param account -
- * the account to update
- * @throws StorageException -
- * if the account does not exist or required field are not set.
- */
- public abstract void updateAccount(final GDataAccount account)
- throws StorageException;
-
- /**
- * Deletes the account for the given account name. All feeds and entries
- * referencing this account will be deleted as well!
- *
- * @param accountname -
- * the name of the account to delete
- * @throws StorageException -
- * if the account does not exist
- */
- public abstract void deleteAccount(final String accountname)
- throws StorageException;
-
- /**
- * Stores a new feed for a existing account. The Feed must provide
- * information about the service type to store the feed for and the feed id
- * used for accessing and retrieving the feed from the storage. Each feed is
- * associated with a provided service. This method does check wheather a
- * feed with the same feed id as the given feed does already exists.
- *
- * @see org.apache.lucene.gdata.server.registry.ProvidedService
- * @param feed -
- * the feed to create
- * @param accountname -
- * the account name belongs to the feed
- * @throws StorageException -
- * if the feed already exists or the feed can not be stored
- */
- public abstract void storeFeed(final ServerBaseFeed feed, String accountname)
- throws StorageException;
-
- /**
- * Deletes the feed for the given feed id. All Entries referencing the given
- * feed id will be deleted as well.
- *
- * @param feedId -
- * the feed id for the feed to delete.
- * @throws StorageException -
- * if the feed for the feed id does not exist or the feed can
- * not be deleted
- */
- public abstract void deleteFeed(final String feedId)
- throws StorageException;
-
- /**
- * Updates a stored feed. The Feed must provide information about the
- * service type to store the feed for and the feed id used for accessing and
- * retrieving the feed from the storage.
- *
- * @param feed -
- * the feed to update
- * @param accountname -
- * the account name belongs to the feed
- * @throws StorageException -
- * if the feed does not exist or the feed can not be updated
- */
- public abstract void updateFeed(final ServerBaseFeed feed,
- String accountname) throws StorageException;
-
- /**
- * Retrieves the service name for a stored feed
- *
- * @param feedId -
- * the feed id
- * @return - the name of the service
- * @throws StorageException -
- * if no feed for the provided id is stored
- */
- public abstract String getServiceForFeed(String feedId)
- throws StorageException;
-
- /**
- *
- * Retrieves the {@link GDataAccount} for the given account name
- * @param accountName -
- * the name of the requested account
- * @return - a {@link GDataAccount} instance for the requested account name
- * @throws StorageException -
- * if no account for the account name is stored
- *
- */
- public abstract GDataAccount getAccount(String accountName)
- throws StorageException;
-
- /**
- * close this storage instance. This method will be called by clients after
- * use.
- */
- public abstract void close();
-
- /**
- * Each feed belongs to one specific account. This method retrieves the
- * account name for
- *
- * @param feedId -
- * the id of the feed to retrieve the accountname
- * @return - the name / id of the account associated with the feed for the
- * given feed id
- * @throws StorageException -
- * if the feed is not stored or the storage can not be accessed
- */
- public String getAccountNameForFeedId(String feedId)
- throws StorageException;
-
- /**
- * Retrieves the date of the last modification for the given id
- *
- * @param entryId -
- * the entry Id
- * @param feedId -
- * the feed which contains the entry
- * @return - The date of the last modifiaction in milliseconds or
- * new Long(0) if the resource can not be found eg.
- * the time can not be accessed
- * @throws StorageException -
- * if the storage can not be accessed
- */
- public Long getEntryLastModified(String entryId, String feedId)
- throws StorageException;
-
- /**
- * Retrieves the date of the last modification for the given id
- *
- * @param feedId -
- * the feed Id
- * @return - The date of the last modifiaction in milliseconds or
- * new Long(0) if the resource can not be found eg.
- * the time can not be accessed
- * @throws StorageException -
- * if the storage can not be accessed
- */
- public Long getFeedLastModified(String feedId) throws StorageException;
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/StorageController.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/StorageController.java
deleted file mode 100644
index b4f9710da38..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/StorageController.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.storage;
-
-import org.apache.lucene.gdata.server.registry.ServerComponent;
-
-/**
- * An interface to define a central storage controller acting as a
- * Stroage Factory. The StroageController manages the
- * storage logic. Subclasses of {@link StorageController} can be registered as
- * {@link org.apache.lucene.gdata.server.registry.Component} in the
- * {@link org.apache.lucene.gdata.server.registry.GDataServerRegistry}. A
- * single instance of the contorller will be loaded and passed to clients via
- * the lookup service.
- *
- * This instances, registered in the registry must be thread save as they are
- * shared between several clients
- *
- *
- * Each StroageController implementation must provide a super user
- * {@link org.apache.lucene.gdata.data.GDataAccount} with all
- * {@link org.apache.lucene.gdata.data.GDataAccount.AccountRole} set. This
- * account must have the defined name administrator and a default
- * password password. The password has to be updated by the server
- * administrator before production use.
- * To get the predefinded GDataAccount use {@link org.apache.lucene.gdata.data.GDataAccount#createAdminAccount()}
- *
- *
- *
- * @author Simon Willnauer
- *
- */
-public interface StorageController extends ServerComponent {
- /**
- * Destroys the controller - this method is called by the registry when the
- * context will be destroyed
- */
- public abstract void destroy();
-
- /**
- * Creates Storage instances to access the underlaying storage component
- *
- * @return a storage instance
- * @throws StorageException -
- * if the storage instance can not be created
- */
- public abstract Storage getStorage() throws StorageException;
-
- /**
- * Releases a new unique ID
- * @return - unique ID
- */
- public abstract String releaseId();
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/StorageException.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/StorageException.java
deleted file mode 100644
index ad715a7b8eb..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/StorageException.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.storage;
-
-/**
- * The StorageException will be throw if any error or exception inside the
- * storage implementation occures. This exception hides all other exceptions
- * from inside the storage.
- *
- * @author Simon Willnauer
- *
- */
-public class StorageException extends RuntimeException {
-
- /**
- *
- */
- private static final long serialVersionUID = -4997572416934126511L;
-
- /**
- * Constructs a new StorageException
- */
- public StorageException() {
- super();
-
- }
-
- /**
- * Constructs a new StorageException
- *
- * @param message -
- * the exception message
- */
- public StorageException(String message) {
- super(message);
-
- }
-
- /**
- * Constructs a new StorageException
- *
- * @param message -
- * the exception message
- * @param cause -
- * the root cause of this exception
- */
- public StorageException(String message, Throwable cause) {
- super(message, cause);
-
- }
-
- /**
- * Constructs a new StorageException
- *
- * @param cause -
- * the root cause of this exception
- */
- public StorageException(Throwable cause) {
- super(cause);
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/StorageFactory.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/StorageFactory.java
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/db4o/DB4oController.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/db4o/DB4oController.java
deleted file mode 100755
index 9bfa540ad84..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/db4o/DB4oController.java
+++ /dev/null
@@ -1,426 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.storage.db4o;
-
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Proxy;
-import java.security.NoSuchAlgorithmException;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.data.GDataAccount;
-import org.apache.lucene.gdata.data.ServerBaseFeed;
-import org.apache.lucene.gdata.server.registry.Component;
-import org.apache.lucene.gdata.server.registry.ComponentType;
-import org.apache.lucene.gdata.server.registry.Scope;
-import org.apache.lucene.gdata.server.registry.ScopeVisitor;
-import org.apache.lucene.gdata.server.registry.configuration.Requiered;
-import org.apache.lucene.gdata.storage.IDGenerator;
-import org.apache.lucene.gdata.storage.Storage;
-import org.apache.lucene.gdata.storage.StorageController;
-import org.apache.lucene.gdata.storage.StorageException;
-import org.apache.lucene.gdata.storage.db4o.DB4oStorage.DB4oEntry;
-import org.apache.lucene.gdata.utils.Pool;
-import org.apache.lucene.gdata.utils.PoolObjectFactory;
-import org.apache.lucene.gdata.utils.SimpleObjectPool;
-
-import com.db4o.Db4o;
-import com.db4o.ObjectContainer;
-import com.db4o.ObjectServer;
-import com.google.gdata.data.BaseEntry;
-import com.google.gdata.data.BaseFeed;
-
-/**
- * The DB4o StorageContorller can be used as a persitence component for the
- * gdata-server. To use DB4o a third party jar needs to added to the lib
- * directory of the project. If the jar is not available in the lib directory
- * all db4o dependent class won't be included in the build.
- *
- * If the jar is present in the lib directory this class can be configured as a
- * {@link org.apache.lucene.gdata.server.registry.ComponentType#STORAGECONTROLLER}
- * via the gdata-config.xml file. For detailed config documentation see
- * the wiki page.
- *
- *
- * The DB4oController can run as a client or as a server to serve other running
- * db4o clients in the network. To achive the best performance out of the db4o
- * caching layer connections to the server will be reused in a connection pool.
- * A connection will not be shared withing more than one thread. The controller
- * release one connection per request and returns the connection when the
- * request has been destroyed.
- *
- * @see db4o website
- * @see org.apache.lucene.gdata.utils.Pool
- *
- *
- *
- *
- */
-@Component(componentType = ComponentType.STORAGECONTROLLER)
-@Scope(scope = Scope.ScopeType.REQUEST)
-public class DB4oController implements StorageController, ScopeVisitor {
- private static final Log LOG = LogFactory.getLog(DB4oController.class);
-
- private final ThreadLocal threadLocalStorage = new ThreadLocal();
-
- private Pool containerPool;
-
- private ObjectServer server;
-
- private final IDGenerator idGenerator;
-
- private boolean weakReferences;
-
- private boolean runAsServer;
-
- private int port;
-
- private String filePath;
-
- private String user;
-
- private String password;
-
- private String host;
-
- private int containerPoolSize;
-
- /**
- * @throws NoSuchAlgorithmException
- *
- */
- public DB4oController() throws NoSuchAlgorithmException {
-
- this.idGenerator = new IDGenerator(15);
-
- }
-
- ObjectContainer releaseContainer() {
- return this.server.openClient();
-
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.StorageController#destroy()
- */
- public void destroy() {
- this.containerPool.destroy();
- this.idGenerator.stopIDGenerator();
- this.server.close();
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.StorageController#getStorage()
- */
- public Storage getStorage() throws StorageException {
- Storage retVal = this.threadLocalStorage.get();
- if (retVal != null)
- return retVal;
-
- retVal = new DB4oStorage(this.containerPool.aquire(), this);
-
- this.threadLocalStorage.set(retVal);
- return retVal;
- }
-
- /**
- * @see org.apache.lucene.gdata.server.registry.ServerComponent#initialize()
- */
- public void initialize() {
- if (LOG.isInfoEnabled())
- LOG.info("Initialize " + this.toString());
-
- Db4o.configure().objectClass(DB4oEntry.class).objectField("updated")
- .indexed(true);
- Db4o.configure().objectClass(BaseEntry.class).objectField("id")
- .indexed(true);
- Db4o.configure().objectClass(BaseFeed.class).objectField("id").indexed(
- true);
- Db4o.configure().objectClass(GDataAccount.class).objectField("name")
- .indexed(true);
- Db4o.configure().objectClass(ServerBaseFeed.class).cascadeOnDelete(
- false);
- Db4o.configure().objectClass(ServerBaseFeed.class)
- .maximumActivationDepth(0);
- Db4o.configure().objectClass(BaseFeed.class).minimumActivationDepth(1);
- Db4o.configure().objectClass(BaseEntry.class)
- .minimumActivationDepth(1);
- Db4o.configure().objectClass(BaseFeed.class).cascadeOnDelete(true);
- Db4o.configure().objectClass(DB4oEntry.class).cascadeOnDelete(true);
- Db4o.configure().objectClass(GDataAccount.class).cascadeOnDelete(true);
- Db4o.configure().weakReferences(this.weakReferences);
- Db4o.configure().optimizeNativeQueries(false);
- if (this.runAsServer) {
- this.server = Db4o.openServer(this.filePath, this.port);
- if(this.server == null)
- throw new RuntimeException("Can't create server at confiugred destination -- "+this.filePath);
- this.server.grantAccess(this.user, this.password);
- } else {
- InvocationHandler handler = new ObjectServerDecorator(this.user,
- this.password, this.host, this.port);
- this.server = (ObjectServer) Proxy.newProxyInstance(this.getClass()
- .getClassLoader(), new Class[] { ObjectServer.class },
- handler);
- }
-
- PoolObjectFactory factory = new ObjectContinerFactory(
- this.server);
- this.containerPool = new SimpleObjectPool(
- this.containerPoolSize, factory);
- try {
- createAdminAccount();
- } catch (StorageException e) {
- LOG.error("Can not create admin account -- ",e);
- }
- }
-
- private void createAdminAccount() throws StorageException {
- GDataAccount adminAccount = GDataAccount.createAdminAccount();
- visiteInitialize();
- Storage sto = this.getStorage();
- try {
- sto.getAccount(adminAccount.getName());
- } catch (Exception e) {
- this.getStorage().storeAccount(adminAccount);
- } finally {
- visiteDestroy();
- }
-
- }
-
-
- /**
- * @see org.apache.lucene.gdata.storage.StorageController#releaseId()
- */
- public String releaseId(){
- try{
- return this.idGenerator.getUID();
- }catch (InterruptedException e) {
- throw new StorageException("ID producer has been interrupted",e);
- }
- }
-
- /**
- * @see org.apache.lucene.gdata.server.registry.ScopeVisitor#visiteInitialize()
- */
- public void visiteInitialize() {
- if (LOG.isInfoEnabled())
- LOG.info("Opened Storage -- request initialized");
- Storage storage = this.threadLocalStorage.get();
- if (storage != null) {
- LOG.warn("Storage already opened");
- return;
- }
-
- storage = new DB4oStorage(this.containerPool.aquire(), this);
-
- this.threadLocalStorage.set(storage);
- }
-
- /**
- * @see org.apache.lucene.gdata.server.registry.ScopeVisitor#visiteDestroy()
- */
- public void visiteDestroy() {
- Storage storage = this.threadLocalStorage.get();
- if (storage == null) {
- LOG.warn("no Storage opened -- threadlocal returned null");
- return;
- }
- this.containerPool.release(((DB4oStorage)storage).getContainer());
- this.threadLocalStorage.remove();
- if (LOG.isInfoEnabled())
- LOG.info("Closed Storage -- request destroyed");
- }
-
- private static class ObjectContinerFactory implements
- PoolObjectFactory {
- private final ObjectServer server;
-
- ObjectContinerFactory(final ObjectServer server) {
- this.server = server;
- }
-
- /**
- * @see org.apache.lucene.gdata.utils.PoolObjectFactory#getInstance()
- */
- public ObjectContainer getInstance() {
-
- return this.server.openClient();
- }
-
- /**
- * @param type -
- * object container to destroy (close)
- * @see org.apache.lucene.gdata.utils.PoolObjectFactory#destroyInstance(Object)
- */
- public void destroyInstance(ObjectContainer type) {
- type.close();
- }
-
- }
-
- /**
- * @return Returns the filePath.
- */
- public String getFilePath() {
- return this.filePath;
- }
-
- /**
- * @param filePath
- * The filePath to set.
- */
- public void setFilePath(String filePath) {
- this.filePath = filePath;
- }
-
- /**
- * @return Returns the host.
- */
- public String getHost() {
- return this.host;
- }
-
- /**
- * @param host
- * The host to set.
- */
- @Requiered
- public void setHost(String host) {
- this.host = host;
- }
-
- /**
- * @return Returns the password.
- */
- public String getPassword() {
- return this.password;
- }
-
- /**
- * @param password
- * The password to set.
- */
- @Requiered
- public void setPassword(String password) {
- this.password = password;
- }
-
- /**
- * @return Returns the port.
- */
- public int getPort() {
- return this.port;
- }
-
- /**
- * @param port
- * The port to set.
- */
- @Requiered
- public void setPort(int port) {
- this.port = port;
- }
-
- /**
- * @return Returns the runAsServer.
- */
- public boolean isRunAsServer() {
- return this.runAsServer;
- }
-
- /**
- * @param runAsServer
- * The runAsServer to set.
- */
- @Requiered
- public void setRunAsServer(boolean runAsServer) {
- this.runAsServer = runAsServer;
- }
-
- /**
- * @return Returns the user.
- */
- public String getUser() {
- return this.user;
- }
-
- /**
- * @param user
- * The user to set.
- */
- @Requiered
- public void setUser(String user) {
- this.user = user;
- }
-
- /**
- * @return Returns the weakReferences.
- */
- public boolean isUseWeakReferences() {
- return this.weakReferences;
- }
-
- /**
- * @param weakReferences
- * The weakReferences to set.
- */
- @Requiered
- public void setUseWeakReferences(boolean weakReferences) {
- this.weakReferences = weakReferences;
- }
-
- /**
- * @return Returns the containerPoolSize.
- */
- public int getContainerPoolSize() {
- return this.containerPoolSize;
- }
-
- /**
- * @param containerPoolSize
- * The containerPoolSize to set.
- */
- @Requiered
- public void setContainerPoolSize(int containerPoolSize) {
- this.containerPoolSize = containerPoolSize < 1 ? 1 : containerPoolSize;
- }
-
- /**
- * @see java.lang.Object#toString()
- */
- @Override
- public String toString() {
- StringBuilder builder = new StringBuilder(this.getClass().getName())
- .append(" ");
- builder.append("host: ").append(this.host).append(" ");
- builder.append("port: ").append(this.port).append(" ");
- builder.append("pool size: ").append(this.containerPoolSize)
- .append(" ");
- builder.append("runs as server: ").append(this.runAsServer).append(" ");
- builder.append("use weak references: ").append(this.weakReferences)
- .append(" ");
- builder.append("user: ").append(this.user).append(" ");
- builder.append("password length: ").append(
- this.password == null ? "no password" : this.password.length())
- .append(" ");
-
- return builder.toString();
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/db4o/DB4oStorage.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/db4o/DB4oStorage.java
deleted file mode 100755
index e58fc06b556..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/db4o/DB4oStorage.java
+++ /dev/null
@@ -1,810 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.storage.db4o;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.data.GDataAccount;
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.data.ServerBaseFeed;
-import org.apache.lucene.gdata.storage.ModificationConflictException;
-import org.apache.lucene.gdata.storage.ResourceNotFoundException;
-import org.apache.lucene.gdata.storage.Storage;
-import org.apache.lucene.gdata.storage.StorageController;
-import org.apache.lucene.gdata.storage.StorageException;
-
-import com.db4o.ObjectContainer;
-import com.db4o.ObjectSet;
-import com.db4o.query.Query;
-import com.google.gdata.data.BaseEntry;
-import com.google.gdata.data.BaseFeed;
-import com.google.gdata.data.DateTime;
-
-/**
- *
- * Storage implementation for the DB4o storage component
- *
- *
- */
-public class DB4oStorage implements Storage {
- private static final Log LOG = LogFactory.getLog(DB4oStorage.class);
-
- private static final int RENDER_ACTIVATION_DEPTH = 100;
-
- private final ObjectContainer container;
-
- private final StorageController controller;
-
- private final List semaphore = new ArrayList();
-
-
- protected DB4oStorage(final ObjectContainer container,
- StorageController controller) {
- this.container = container;
- this.controller = controller;
- }
-
- private void createSemaphore(String key)
- throws ModificationConflictException {
- this.semaphore.add(key);
- if (this.container.ext().setSemaphore(key, 0))
- return;
- throw new ModificationConflictException(
- "can not create semaphore for key -- " + key);
- }
-
- private void releaseAllSemaphore() {
- for (String key : this.semaphore) {
- this.container.ext().releaseSemaphore(key);
- }
- this.semaphore.clear();
- }
-
- private void releaseSemaphore(String key) {
- if (this.semaphore.contains(key)) {
- this.container.ext().releaseSemaphore(key);
- this.semaphore.remove(key);
- }
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#storeEntry(org.apache.lucene.gdata.data.ServerBaseEntry)
- */
- public BaseEntry storeEntry(ServerBaseEntry entry) throws StorageException {
- if (entry == null)
- throw new StorageException("Can not store entry -- is null");
-
- if (entry.getFeedId() == null)
- throw new StorageException("can not store entry -- feed id is null");
- if (LOG.isDebugEnabled())
- LOG.debug("Storing entry for feed: " + entry.getFeedId());
- BaseFeed feed = getFeedOnly(entry.getFeedId(),entry.getServiceType());
- refreshPersistentObject(feed);
- try {
- StringBuilder idBuilder = new StringBuilder(entry.getFeedId());
- idBuilder.append(this.controller.releaseId());
- entry.setId(idBuilder.toString());
- } catch (StorageException e) {
- LOG.error("Can not create uid for entry -- " + e.getMessage(), e);
- throw new StorageException("Can not create uid for entry -- "
- + e.getMessage(), e);
-
- }
- setUpdated(entry, feed);
- DB4oEntry intEntry = new DB4oEntry();
- intEntry.setEntry(entry.getEntry());
- intEntry.setUpdateTime(entry.getUpdated().getValue());
- intEntry.setFeedId(feed.getId());
- intEntry.setVersion(entry.getVersion());
-
-
- try {
- this.container.set(feed);
- this.container.set(intEntry);
- this.container.commit();
- } catch (Exception e) {
- LOG
- .error("Error occured on persisting changes -- rollback changes");
- this.container.rollback();
- throw new StorageException("Can not persist changes -- "
- + e.getMessage(), e);
- }
- if (LOG.isInfoEnabled())
- LOG.info("Stored Entry for entryID: " + entry.getId()
- + " -- feedID: " + entry.getFeedId());
- return entry.getEntry();
- }
-
- private void setUpdated(ServerBaseEntry entry, DB4oEntry intEntry) {
- if (entry.getUpdated().compareTo(intEntry.getEntry().getUpdated()) <= 0) {
- if (LOG.isDebugEnabled())
- LOG
- .debug("Set new UpdateTime to entry new entry time is less or equal the time of the stored entry -- old Entry: "
- + intEntry.getEntry().getUpdated()
- + "; new Entry: " + entry.getUpdated());
- entry.setUpdated(new DateTime(System.currentTimeMillis(), entry
- .getUpdated().getTzShift()));
- }
-
- }
-
- private void setUpdated(ServerBaseEntry entry,
- BaseFeed feed) {
- if (entry.getUpdated() != null){
- long timeInMilli = entry.getUpdated().getValue();
- int tzShift = entry.getUpdated().getTzShift();
- feed.setUpdated(new DateTime(timeInMilli, tzShift));
- }
- else{
- int timezone = 0;
- if(feed.getUpdated() != null){
- timezone = feed.getUpdated().getTzShift();
- }
- long timeInMilli = System.currentTimeMillis();
- entry.setUpdated(new DateTime(timeInMilli,timezone));
- feed.setUpdated(new DateTime(timeInMilli,timezone));
- }
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#deleteEntry(org.apache.lucene.gdata.data.ServerBaseEntry)
- */
- public void deleteEntry(ServerBaseEntry entry) throws StorageException {
- if (entry == null)
- throw new StorageException("Can not delete entry -- is null");
- if (entry.getFeedId() == null)
- throw new StorageException(
- "can not delete entry -- feed id is null");
- if (entry.getId() == null)
- throw new StorageException("Can not delete entry -- id is null");
- if (LOG.isDebugEnabled())
- LOG.debug("delete entry for feed: " + entry.getFeedId()
- + " entry ID: " + entry.getId());
- DB4oEntry persistentEntry = getInternalEntry(entry.getId());
- // lock the entry to prevent concurrent access
- createSemaphore(entry.getId());
- refreshPersistentObject(persistentEntry);
- if(persistentEntry.getVersion() != entry.getVersion())
- throw new ModificationConflictException(
- "Current version does not match given version -- currentVersion: "+persistentEntry.getVersion()+"; given Version: "+entry.getVersion() );
- BaseFeed feed = getFeedOnly(entry.getFeedId(),entry.getServiceType());
- refreshPersistentObject(feed);
- DateTime time = DateTime.now();
- if (persistentEntry.getEntry().getUpdated() != null)
- time.setTzShift(persistentEntry.getEntry().getUpdated().getTzShift());
- feed.setUpdated(time);
- try {
- //delete the entry
- this.container.delete(persistentEntry.getEntry());
- this.container.delete(persistentEntry);
- this.container.set(feed);
- this.container.commit();
-
- } catch (Exception e) {
- LOG
- .error("Error occured on persisting changes -- rollback changes");
- this.container.rollback();
- throw new StorageException("Can not persist changes -- "
- + e.getMessage(), e);
- } finally {
- releaseSemaphore(entry.getId());
- }
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#updateEntry(org.apache.lucene.gdata.data.ServerBaseEntry)
- */
- public BaseEntry updateEntry(ServerBaseEntry entry) throws StorageException {
- if (entry == null)
- throw new StorageException("Can not update entry -- is null");
- if (entry.getFeedId() == null)
- throw new StorageException(
- "can not delete entry -- feed id is null");
- if (entry.getId() == null)
- throw new StorageException("Can not delete entry -- id is null");
-
- DB4oEntry persistentEntry = getInternalEntry(entry.getId());
- // lock the entry to prevent concurrent access
- createSemaphore(entry.getId());
- refreshPersistentObject(persistentEntry);
- if(persistentEntry.getVersion() != entry.getVersion())
- throw new ModificationConflictException(
- "Current version does not match given version -- currentVersion: "+persistentEntry.getVersion()+"; given Version: "+entry.getVersion() );
-
- setUpdated(entry, persistentEntry);
- BaseFeed feed = getFeedOnly(entry.getFeedId(),entry.getServiceType());
- refreshPersistentObject(feed);
- BaseEntry retVal = entry.getEntry();
- DB4oEntry newEntry = new DB4oEntry();
- newEntry.setEntry(retVal);
- newEntry.setUpdateTime(entry.getUpdated().getValue());
- newEntry.setFeedId(feed.getId());
- // increment Version
- newEntry.setVersion((entry.getVersion())+1);
-
- setUpdated(entry, feed);
- try {
- this.container.set(feed);
- this.container.set(newEntry);
- this.container.delete(persistentEntry.getEntry());
- this.container.delete(persistentEntry);
- this.container.commit();
- } catch (Exception e) {
- LOG
- .error("Error occured on persisting changes -- rollback changes");
- this.container.rollback();
- throw new StorageException("Can not persist changes -- "
- + e.getMessage(), e);
- } finally {
- releaseSemaphore(entry.getId());
- }
- return retVal;
-
- }
-
-
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#getFeed(org.apache.lucene.gdata.data.ServerBaseFeed)
- */
- @SuppressWarnings("unchecked")
- public BaseFeed getFeed(ServerBaseFeed feed) throws StorageException {
- if (feed.getId() == null)
- throw new StorageException("can not get feed -- feed id is null");
- if (feed.getStartIndex() < 1)
- feed.setStartIndex(1);
- if (feed.getItemsPerPage() < 0)
- feed.setItemsPerPage(25);
-
- if (LOG.isInfoEnabled())
- LOG.info("Fetching feed for feedID: " + feed.getId()
- + "; start-index: " + feed.getStartIndex()
- + "; items per page: " + feed.getItemsPerPage());
-
- BaseFeed persistentFeed = getFeedOnly(feed.getId(),feed.getServiceType());
- /*
- * prevent previously added entries in long running storage instances
- */
- clearDynamicElements(persistentFeed);
- Query query = this.container.query();
- query.constrain(DB4oEntry.class);
- query.descend("feedId").constrain(feed.getId()).equal();
- query.descend("updateTime").orderDescending();
-
- ObjectSet set = query.execute();
-
- int size = set.size();
-
- if (size < feed.getStartIndex()) {
- if (LOG.isDebugEnabled())
- LOG.debug("no entries found for feed constrain -- feedID: "
- + feed.getId() + "; start-index: "
- + feed.getStartIndex() + "; items per page: "
- + feed.getItemsPerPage());
- return persistentFeed;
- }
-
- int start = feed.getStartIndex() - 1;
- int items = start + feed.getItemsPerPage();
- if (items > size)
- items = size;
-
- List sublist = set.subList(start, items);
-
- for (DB4oEntry entry : sublist) {
- persistentFeed.getEntries().add(clearDynamicElements(entry.getEntry()));
- }
- this.container.activate(persistentFeed,RENDER_ACTIVATION_DEPTH);
- return persistentFeed;
-
- }
-
- @SuppressWarnings("unchecked")
- private BaseFeed getFeedOnly(final String feedId, final String serviceId)
- throws StorageException {
- if(!checkService(feedId,serviceId))
- throw new StorageException();
- Query query = this.container.query();
- query.constrain(ServerBaseFeed.class);
-
- query.constrain(BaseFeed.class);
-
- query.descend("id").constrain(feedId).equal();
-
- ObjectSet set = query.execute();
- if (set.size() > 1)
- throw new StorageException("Query for feed id " + feedId
- + " returns more than one result");
- if (set.hasNext())
- return (BaseFeed) set.next();
- throw new ResourceNotFoundException("can not find feed for given feed id -- "
- + feedId);
-
- }
- private boolean checkService(String feedId,String serviceId){
- Query query = this.container.query();
- query.constrain(ServerBaseFeed.class);
- query.descend("feed").descend("id").constrain(feedId).equal();
- query.descend("serviceType").constrain(serviceId).equal();
- return query.execute().size() == 1;
- }
- private ObjectSet getEnriesForFeedID(String feedId) {
- Query query = this.container.query();
- query.constrain(DB4oEntry.class);
- query.descend("feedId").constrain(feedId).equal();
-
- return query.execute();
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#getEntry(org.apache.lucene.gdata.data.ServerBaseEntry)
- */
-
- public BaseEntry getEntry(ServerBaseEntry entry) throws StorageException {
- if (entry == null)
- throw new StorageException("can not retrieve entry -- is null");
- if (entry.getId() == null)
- throw new StorageException("can not retrieve entry -- id is null");
- if (LOG.isInfoEnabled())
- LOG.info("Retrieving entry for entryID: " + entry.getId());
- DB4oEntry retval = getInternalEntry(entry.getId());
- this.container.activate(retval.getEntry(),RENDER_ACTIVATION_DEPTH);
- return clearDynamicElements(retval.getEntry());
- }
-
- @SuppressWarnings("unchecked")
- private DB4oEntry getInternalEntry(String id) throws StorageException {
- Query query = this.container.query();
- query.constrain(DB4oEntry.class);
- query.descend("entry").descend("id").constrain(id).equal();
- ObjectSet resultSet = query.execute();
- if (resultSet.size() > 1)
- throw new StorageException(
- "Entry query returned not a unique result");
- if (resultSet.hasNext())
- return resultSet.next();
- throw new ResourceNotFoundException("no entry with entryID: " + id
- + " stored -- query returned no result");
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#storeAccount(org.apache.lucene.gdata.data.GDataAccount)
- */
- public void storeAccount(GDataAccount account) throws StorageException {
- if (account == null)
- throw new StorageException("can not store account -- is null");
- if (account.getName() == null)
- throw new StorageException("can not store account -- name is null");
- if (account.getPassword() == null)
- throw new StorageException(
- "can not store account -- password is null");
- try {
- getAccount(account.getName());
- throw new IllegalStateException("account with accountname: "
- + account.getName() + " already exists");
- } catch (IllegalStateException e) {
- throw new StorageException("Account already exists");
- } catch (StorageException e) {
- if (LOG.isDebugEnabled())
- LOG
- .debug("checked account for existence -- does not exist -- store account");
- }
- try {
- this.container.set(account);
- this.container.commit();
- } catch (Exception e) {
- LOG
- .error("Error occured on persisting changes -- rollback changes");
- this.container.rollback();
- throw new StorageException("Can not persist changes -- "
- + e.getMessage(), e);
- }
- if (LOG.isInfoEnabled())
- LOG.info("Stored account: " + account);
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#updateAccount(org.apache.lucene.gdata.data.GDataAccount)
- */
- public void updateAccount(GDataAccount account) throws StorageException {
- if (account == null)
- throw new StorageException("can not update account -- is null");
- if (account.getName() == null)
- throw new StorageException("can not update account -- name is null");
- if (account.getPassword() == null)
- throw new StorageException(
- "can not update account -- password is null");
- GDataAccount persitentAccount = getAccount(account.getName());
- refreshPersistentObject(persitentAccount);
- try {
- this.container.set(account);
- this.container.delete(persitentAccount);
- this.container.commit();
- } catch (Exception e) {
- LOG
- .error("Error occured on persisting changes -- rollback changes");
- this.container.rollback();
- throw new StorageException("Can not persist changes -- "
- + e.getMessage(), e);
- }
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#deleteAccount(java.lang.String)
- */
- public void deleteAccount(String accountname) throws StorageException {
- if (accountname == null)
- throw new StorageException(
- "can not delete account -- account name is null");
- GDataAccount account = this.getAccount(accountname);
- refreshPersistentObject(account);
- if (LOG.isInfoEnabled())
- LOG.info("delete account -- account name: " + accountname);
- try {
- this.container.delete(account);
- this.container.commit();
- } catch (Exception e) {
- LOG
- .error("Error occured on persisting changes -- rollback changes");
- this.container.rollback();
- throw new StorageException("Can not persist changes -- "
- + e.getMessage(), e);
- }
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#storeFeed(org.apache.lucene.gdata.data.ServerBaseFeed,
- * java.lang.String)
- */
- public void storeFeed(ServerBaseFeed feed, String accountname)
- throws StorageException {
- if (feed == null)
- throw new StorageException("Can not store feed -- is null");
- if (feed.getId() == null)
- throw new StorageException("Can not store feed -- id is null");
- if(feed.getServiceType() == null)
- throw new StorageException("Can not store feed -- service type is null");
- if(accountname == null)
- throw new StorageException("Account name is null");
- Query query = this.container.query();
- query.constrain(ServerBaseFeed.class);
- query.descend("feed").descend("id").constrain(feed.getId()).equal();
- ObjectSet set = query.execute();
- if (set.hasNext())
- throw new StorageException("feed with feedID " + feed.getId()
- + " is already stored");
- GDataAccount account = getAccount(accountname);
- refreshPersistentObject(account);
- feed.setAccount(account);
- /*
- * service config not required in db4o storage.
- * Entries/Feeds don't have to be build from xml
- */
- feed.setServiceConfig(null);
- try {
- this.container.set(feed);
- this.container.commit();
- } catch (Exception e) {
- LOG
- .error("Error occured on persisting changes -- rollback changes");
- this.container.rollback();
- throw new StorageException("Can not persist changes -- "
- + e.getMessage(), e);
- }
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#deleteFeed(java.lang.String)
- */
- public void deleteFeed(String feedId) throws StorageException {
- if (feedId == null)
- throw new StorageException("can not delete feed -- feed id is null");
- Query query = this.container.query();
- query.constrain(ServerBaseFeed.class);
- query.descend("feed").descend("id").constrain(feedId).equal();
- ObjectSet set = query.execute();
- if (set.size() > 1)
- throw new StorageException(
- "Feed query returned not a unique result");
- if (set.size() == 0)
- throw new StorageException("no feed with feedID: " + feedId
- + " stored -- query returned no result");
-
- ServerBaseFeed feed = (ServerBaseFeed) set.next();
- refreshPersistentObject(feed);
- ObjectSet entrySet = getEnriesForFeedID(feed.getId());
- try {
- this.container.delete(feed);
- this.container.delete(feed.getFeed());
- for (Object object : entrySet) {
- refreshPersistentObject(object);
- this.container.delete(object);
- }
-
- this.container.commit();
- } catch (Exception e) {
- LOG
- .error("Error occured on persisting changes -- rollback changes");
- this.container.rollback();
- throw new StorageException("Can not persist changes -- "
- + e.getMessage(), e);
- }
-
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#updateFeed(org.apache.lucene.gdata.data.ServerBaseFeed,
- * java.lang.String)
- */
- @SuppressWarnings("unchecked")
- public void updateFeed(ServerBaseFeed feed, String accountname)
- throws StorageException {
- if (feed == null)
- throw new StorageException("Can not update feed -- is null");
- if (feed.getId() == null)
- throw new StorageException("Can not update feed -- id is null");
- if(feed.getServiceType() == null)
- throw new StorageException("Can not update feed -- service type is null");
- if(accountname == null)
- throw new StorageException("Account name is null");
- GDataAccount account = getAccount(accountname);
- Query query = this.container.query();
- query.constrain(ServerBaseFeed.class);
- query.descend("feed").descend("id").constrain(feed.getId());
- ObjectSet set= query.execute();
- if (set.size() > 1)
- throw new StorageException("Query for feed id " + feed.getId()
- + " returns more than one result");
- if (set.size() < 1)
- throw new StorageException("can not find feed for given feed id -- "
- + feed.getId());
- ServerBaseFeed result = set.next();
- refreshPersistentObject(result);
- BaseFeed oldFeed = result.getFeed();
- result.setAccount(account);
- result.setFeed(feed.getFeed());
- try {
- this.container.delete(oldFeed);
- this.container.set(result);
- this.container.commit();
- } catch (Exception e) {
- LOG
- .error("Error occurred on persisting changes -- rollback changes");
- this.container.rollback();
- throw new StorageException("Can not persist changes -- "
- + e.getMessage(), e);
- }
-
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#getServiceForFeed(java.lang.String)
- */
- @SuppressWarnings("unchecked")
- public String getServiceForFeed(final String feedId) throws StorageException {
- if(feedId == null)
- throw new StorageException("can not get Service for feed -- feed id is null");
- if(LOG.isInfoEnabled())
- LOG.info("Retrieving Service for feed -- feed id: "+feedId);
- Query query = this.container.query();
- query.constrain(ServerBaseFeed.class);
- query.descend("feed").descend("id").constrain(feedId);
- ObjectSet feed = query.execute();
- if (feed.size() > 1)
- throw new StorageException("Query for feed id " + feedId
- + " returns more than one result");
- if (feed.size() < 1)
- throw new StorageException("can not find feed for given feed id -- "
- + feedId);
-
- ServerBaseFeed result = feed.next();
- if(LOG.isInfoEnabled())
- LOG.info("Retrieved Service for feed -- serviceType: "+result.getServiceType());
- return result.getServiceType();
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#getAccount(java.lang.String)
- */
- public GDataAccount getAccount(String accountName) throws StorageException {
- if (accountName == null)
- throw new StorageException(
- "Can not get account -- account name is null");
- if (LOG.isInfoEnabled())
- LOG.info("Retrieving account for account name: " + accountName);
- Query query = this.container.query();
- query.constrain(GDataAccount.class);
- query.descend("name").constrain(accountName).equal();
- ObjectSet set = query.execute();
- if (set.size() > 1)
- throw new StorageException(
- "Account query returned not a unique result -- account name: "
- + accountName);
- if (!set.hasNext())
- throw new ResourceNotFoundException(
- "No such account stored -- query returned not result for account name: "
- + accountName);
-
- return (GDataAccount) set.next();
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#close()
- */
- public void close() {
- releaseAllSemaphore();
-
- }
-
-
-
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#getAccountNameForFeedId(java.lang.String)
- */
-
- public String getAccountNameForFeedId(String feedId)
- throws StorageException {
- if(feedId == null)
- throw new StorageException("feed id is null");
- GDataAccount account = getServerBaseFeed(feedId).getAccount();
- if(account == null)
- throw new IllegalStateException("No account stored with feed -- feedID: "+feedId);
-
- return account.getName();
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#getEntryLastModified(java.lang.String, java.lang.String)
- */
- public Long getEntryLastModified(String entryId, final String feedId)
- throws StorageException {
- if(entryId == null)
- throw new StorageException("Entry ID is null");
- return new Long(getInternalEntry(entryId).getUpdateTime());
- }
-
- @SuppressWarnings("unchecked")
- private ServerBaseFeed getServerBaseFeed(String feedId)throws StorageException{
- Query query = this.container.query();
- query.constrain(ServerBaseFeed.class);
- query.descend("feed").descend("id").constrain(feedId);
- ObjectSet feed = query.execute();
- if (feed.size() > 1)
- throw new StorageException("Query for feed id " + feedId
- + " returns more than one result");
- if (feed.size() < 1)
- throw new StorageException("can not find feed for given feed id -- "
- + feedId);
- return feed.next();
- }
-
- /*
- * !Caution! -- could instantiate a lot of objects if used with certain classes!!
- * Refresh a persisted object with a depth of 100
- *
- */
- private void refreshPersistentObject(Object o){
- this.container.ext().refresh(o,100);
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#getFeedLastModified(java.lang.String)
- */
- public Long getFeedLastModified(String feedId) throws StorageException {
- if(feedId == null)
- throw new StorageException("can not get last modified -- id is null");
- ServerBaseFeed feed = getServerBaseFeed(feedId);
- return new Long(feed.getUpdated().getValue());
-
- }
-
- private BaseEntry clearDynamicElements(BaseEntry entry){
- this.container.ext().refresh(entry.getLinks(), 2);
- return entry;
- }
- private BaseFeed clearDynamicElements(BaseFeed feed){
- this.container.ext().refresh(feed.getLinks(), 2);
- feed.getEntries().clear();
- return feed;
- }
- ObjectContainer getContainer(){
- return this.container;
- }
-
- static class DB4oEntry {
- private BaseEntry entry;
-
- private int version;
-
- private String feedId;
-
- private long updateTime;
-
- /**
- * @return Returns the entry.
- */
- protected BaseEntry getEntry() {
- return this.entry;
- }
-
- /**
- * @param entry
- * The entry to set.
- */
- protected void setEntry(BaseEntry entry) {
- this.entry = entry;
- }
-
- /**
- * @return Returns the feed.
- */
- protected String getFeedId() {
- return this.feedId;
- }
-
- /**
- * @param feed
- * The feed to set.
- */
- protected void setFeedId(String feed) {
- this.feedId = feed;
- }
-
- /**
- * @return Returns the updateTime.
- */
- protected long getUpdateTime() {
- return this.updateTime;
- }
-
- /**
- * @param updateTime
- * The updateTime to set.
- */
- protected void setUpdateTime(long updateTime) {
- this.updateTime = updateTime;
- }
-
- /**
- * @return Returns the version.
- */
- public int getVersion() {
- return this.version;
- }
-
- /**
- * @param version The version to set.
- */
- public void setVersion(int version) {
- this.version = version;
- if(this.entry != null)
- this.entry.setVersionId(""+this.version);
- }
-
- }
-
-
-
-
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/db4o/ObjectServerDecorator.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/db4o/ObjectServerDecorator.java
deleted file mode 100755
index f6f2895e7dc..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/db4o/ObjectServerDecorator.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.storage.db4o;
-
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-
-import com.db4o.Db4o;
-import com.db4o.ObjectServer;
-
-/**
- *
- *
- */
-public class ObjectServerDecorator implements InvocationHandler {
- private final int port;
- private final String user;
- private final String password;
- private final String host;
- private Method openClient;
- /**
- *
- */
- public ObjectServerDecorator(String user, String password, String host, int port) {
- this.user = user;
- this.password = password;
- this.host = host;
- this.port = port;
- try {
- this.openClient = ObjectServer.class.getMethod("openClient",new Class[]{});
- } catch (Exception e) {
- //ignore method is visible
- e.printStackTrace();
- }
- }
-
- /**
- * @see java.lang.reflect.InvocationHandler#invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])
- */
- public Object invoke(Object arg0, Method arg1, Object[] arg2)
- throws Throwable {
- if(arg1.equals(this.openClient)){
- return Db4o.openClient(this.host,this.port, this.user, this.password);
- }
- Class clazz = arg1.getReturnType();
-
- if(!clazz.isPrimitive())
- return null;
- if(clazz == Boolean.TYPE)
- return false;
- return 0;
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/db4o/package.html b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/db4o/package.html
deleted file mode 100755
index a0210c43341..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/db4o/package.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-DB4o storage implementation (needs third patry jar) DB4o Website
-
-
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/ConcurrentStorageLock.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/ConcurrentStorageLock.java
deleted file mode 100755
index 45f9177ffd8..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/ConcurrentStorageLock.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.storage.lucenestorage;
-
-/**
- *
- *
- *
- */
-public interface ConcurrentStorageLock {
-
- public abstract boolean setLock(final String key);
- public abstract boolean releaseLock(final String key);
- public abstract boolean releaseThreadLocks();
- public abstract boolean isKeyLocked(final String key);
- public abstract void close();
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/ModifiedEntryFilter.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/ModifiedEntryFilter.java
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/SingleHostConcurrentStorageLock.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/SingleHostConcurrentStorageLock.java
deleted file mode 100755
index 658369d5e7f..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/SingleHostConcurrentStorageLock.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.storage.lucenestorage;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-
-/**
- *
- *
- */
-public class SingleHostConcurrentStorageLock implements ConcurrentStorageLock {
- private volatile static ConcurrentStorageLock INSTANCE = null;
- private final Map locks;
- private final Map threads;
- private final ReentrantReadWriteLock synLock = new ReentrantReadWriteLock();
- private final Lock readLock = this.synLock.readLock();
- private final Lock writeLock = this.synLock.writeLock();
- private final AtomicBoolean isClosed = new AtomicBoolean(false);
- /**
- *
- */
- private SingleHostConcurrentStorageLock() {
- super();
- this.locks = new HashMap(10);
- this.threads = new HashMap(10);
- }
- protected static synchronized ConcurrentStorageLock getConcurrentStorageLock(){
- if(INSTANCE == null)
- INSTANCE = new SingleHostConcurrentStorageLock();
- return INSTANCE;
- }
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.ConcurrentStorageLock#setLock(java.lang.String)
- */
- public boolean setLock(String key) {
- this.writeLock.lock();
- try{
- if(this.isClosed.get())
- throw new IllegalStateException("Lock has been closed");
- Thread t = Thread.currentThread();
- if(this.threads.containsKey(t))
- throw new ConcurrencyException("one thread must not obtain more than one lock -- single thread can not modify more than one resource");
- if(this.locks.containsKey(key)){
- return false;
- }
- this.locks.put(key, t);
- this.threads.put(t,key);
- return true;
-
- }finally{
- this.writeLock.unlock();
- }
-
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.ConcurrentStorageLock#releaseLock(java.lang.String)
- */
- public boolean releaseLock(String key) {
- this.writeLock.lock();
- try{
- if(this.isClosed.get())
- throw new IllegalStateException("Lock has been closed");
- Thread t = Thread.currentThread();
- if(!this.threads.containsKey(t))
- return false;
-
- if(!this.locks.containsKey(key))
- return false;
- if(t != this.locks.get(key))
- throw new ConcurrencyException("Illegal lock access -- current thread is not owner");
- this.locks.remove(key);
- this.threads.remove(t);
- return true;
-
- }finally{
- this.writeLock.unlock();
- }
-
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.ConcurrentStorageLock#releaseThreadLocks()
- */
- public boolean releaseThreadLocks() {
- this.writeLock.lock();
- try{
- if(this.isClosed.get())
- throw new IllegalStateException("Lock has been closed");
- Thread t = Thread.currentThread();
- if(!this.threads.containsKey(t))
- return false;
- String key = this.threads.get(t);
- this.threads.remove(t);
- if(!this.locks.containsKey(key))
- return false;
- this.locks.remove(key);
- return true;
-
- }finally{
- this.writeLock.unlock();
- }
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.ConcurrentStorageLock#isKeyLocked(java.lang.String)
- */
- public boolean isKeyLocked(String key) {
- this.readLock.lock();
- try{
- if(this.isClosed.get())
- throw new IllegalStateException("Lock has been closed");
- return this.locks.containsKey(key);
- }finally{
- this.readLock.unlock();
- }
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.ConcurrentStorageLock#close()
- */
- public void close() {
- this.writeLock.lock();
- try{
- if(this.isClosed.get())
- throw new IllegalStateException("Lock has been closed");
- this.isClosed.set(true);
- this.locks.clear();
- this.threads.clear();
- INSTANCE = new SingleHostConcurrentStorageLock();
- }finally{
- this.writeLock.unlock();
- }
- }
-
-
- protected void forceClear(){
- this.writeLock.lock();
- try{
- if(this.isClosed.get())
- throw new IllegalStateException("Lock has been closed");
- this.locks.clear();
- this.threads.clear();
-
- }finally{
- this.writeLock.unlock();
- }
- }
- static class ConcurrencyException extends RuntimeException{
-
- private static final long serialVersionUID = 6388236477729760962L;
-
- ConcurrencyException(String message){
- super(message);
- }
- }
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/StorageAccountWrapper.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/StorageAccountWrapper.java
deleted file mode 100644
index 8728b362130..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/StorageAccountWrapper.java
+++ /dev/null
@@ -1,128 +0,0 @@
-package org.apache.lucene.gdata.storage.lucenestorage;
-
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
-import org.apache.lucene.gdata.data.GDataAccount;
-
-/**
- * Wrapps a User Object.
- * The wrapper provides also a Lucene repesentation of the user;
- * User Objects will not be Buffered in the lucene storage component. Each User will be written imidialtely.
- * @author Simon Willnauer
- *
- */
-public class StorageAccountWrapper implements StorageWrapper{
- private static final Log LOG = LogFactory.getLog(StorageAccountWrapper.class);
-
- /**
- * Lucene field for the username
- */
- public static final String FIELD_ACCOUNTNAME = "accountName";
- /**
- * Lucene field for the password
- */
- public static final String FIELD_PASSWORD = "passwd";
- /**
- * Lucene field for the author name
- */
- public static final String FIELD_AUTHORNAME = "author";
- /**
- * Lucene field for the author mail address
- */
- public static final String FIELD_AUTHORMAIL = "authorMail";
- /**
- * Lucene field for the author link
- */
- public static final String FIELD_AUTHORHREF = "authorHref";
- /**
- * Lucene field fot the userroles
- */
- public static final String FIELD_ROLES = "userroles";
- private final GDataAccount user;
- /**
- * @param user - the user to be wrapped
- */
- public StorageAccountWrapper(final GDataAccount user) {
- if(user == null)
- throw new IllegalArgumentException("user must not be null");
- this.user = user;
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageWrapper#getLuceneDocument()
- */
- public Document getLuceneDocument() {
- Document doc = new Document();
-
- doc.add(new Field(FIELD_ACCOUNTNAME,this.user.getName(),Field.Store.YES,Field.Index.UN_TOKENIZED));
- doc.add(new Field(FIELD_PASSWORD,this.user.getPassword()==null?"":this.user.getPassword(),Field.Store.YES,Field.Index.NO));
- doc.add(new Field(FIELD_AUTHORNAME,this.user.getAuthorname()==null?"":this.user.getAuthorname(),Field.Store.YES,Field.Index.NO));
- doc.add(new Field(FIELD_AUTHORMAIL,this.user.getAuthorMail()==null?"":this.user.getAuthorMail(),Field.Store.YES,Field.Index.NO));
- doc.add(new Field(FIELD_AUTHORHREF,this.user.getAuthorLink()==null?"":this.user.getAuthorLink().toString(),Field.Store.YES,Field.Index.NO));
- doc.add(new Field(FIELD_ROLES, Integer.toString(this.user.getRolesAsInt()),Field.Store.YES,Field.Index.NO));
-
- return doc;
- }
-
-
-
-
- /**
- * @param doc - a lucene document representation of an user
- * @return - the user to build from the document. or null if the document is null
- */
- public static GDataAccount buildEntity(final Document doc){
- if(doc == null)
- return null;
-
- GDataAccount user = new GDataAccount();
- user.setName(doc.get(FIELD_ACCOUNTNAME));
- user.setPassword(doc.get(FIELD_PASSWORD));
- user.setAuthorname(doc.get(FIELD_AUTHORNAME));
- user.setAuthorMail(doc.get(FIELD_AUTHORMAIL));
- try{
- user.setRolesAsInt(Integer.parseInt(doc.get(FIELD_ROLES)));
- }catch (NumberFormatException e) {
- LOG.info("Can't parse userroles: "+user.getName()+" throws NumberFormatException. -- skipping --",e);
- }
- try {
- if(doc.get(FIELD_AUTHORHREF)!= null)
- user.setAuthorLink(new URL(doc.get(FIELD_AUTHORHREF)));
- } catch (MalformedURLException e) {
- LOG.info("SPECIFIED URL for user: "+user.getName()+" throws MalformedURLException. -- skipping --",e);
- }
- return user;
- }
-
-
-
- /**
- * @return - the wrapped user
- */
- public GDataAccount getUser() {
- return this.user;
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/StorageBuffer.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/StorageBuffer.java
deleted file mode 100644
index ceaf4def3ca..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/StorageBuffer.java
+++ /dev/null
@@ -1,359 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.storage.lucenestorage;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.Map.Entry;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReadWriteLock;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.storage.lucenestorage.StorageEntryWrapper.StorageOperation;
-import org.apache.lucene.gdata.utils.ModifiedEntryFilter;
-
-import com.google.gdata.data.BaseEntry;
-import com.google.gdata.data.ExtensionProfile;
-import com.google.gdata.data.Link;
-
-/**
- * The StorageBuffer is used to buffer incoming updates, deletes and inserts to
- * the storage. The storage uses an lucene index to store the enries. As
- * modifying the index all the time an altering request comes in is not
- * efficent. The entries will be added to the buffer to be available for
- * incoming storage queries. If the loadfactor for the
- * {@link org.apache.lucene.gdata.storage.lucenestorage.StorageModifier} is
- * reached the modifier will perform a batch update on the index. Each entry
- * will be associated with a feed id inside a associative datastructure to
- * return a requested entry efficiently.
- *
- * This implementation uses {@link java.util.concurrent.locks.ReadWriteLock}.
- * The read lock may be held simultaneously by multiple reader threads, so long
- * as there are no writers. The write lock is exclusive.
- *
- *
- * The entry and feed ID's must not be a composite key. The entry and feed ID
- * must be unique.
- *
- *
- * @see java.util.concurrent.locks.ReentrantReadWriteLock
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageModifier
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageCoreController
- *
- * @author Simon Willnauer
- *
- */
-public class StorageBuffer {
- private static final Log LOG = LogFactory.getLog(StorageBuffer.class);
-
- private final Map> bufferMap;
-
- private final Map modifiyMap;
-
- private final List excludeList;
-
- private final ReadWriteLock lock = new ReentrantReadWriteLock(true);
-
- private final Lock readLock = this.lock.readLock();
-
- private final Lock writeLock = this.lock.writeLock();
-
- private final int bufferSize;
-
- protected final static int DEFAULT_BUFFER_COUNT = 10;
-
- /**
- * Constructs a new StorageBuffer.
- *
- * The expectedBufferCount sould be higher than the maximum of entries added
- * to the buffer, resizing the buffer is very efficient. For detailed
- * infomation {@link HashMap} as this is used inside the buffer
- *
- *
- * @param expectedBufferCount -
- * the expected size of the buffer
- *
- */
- protected StorageBuffer(final int expectedBufferCount) {
- this.bufferSize = expectedBufferCount < DEFAULT_BUFFER_COUNT ? DEFAULT_BUFFER_COUNT
- : expectedBufferCount;
- this.bufferMap = new HashMap>(
- this.bufferSize);
- this.excludeList = new ArrayList(this.bufferSize);
- this.modifiyMap = new HashMap(this.bufferSize);
- }
-
- /**
- * Adds a {@link StorageEntryWrapper} to the buffer. If a wrapper
- * representing the same entry are already in the buffer the wrapper will be
- * replaced.
- *
- * This method does ignore already delted entries. This should before the
- * entry is added to the buffer.
- *
- *
- * @param wrapper -
- * the wrapper to buffer
- */
- public void addEntry(final StorageEntryWrapper wrapper) {
- this.writeLock.lock();
- try {
- if (LOG.isInfoEnabled())
- LOG.info(" Buffering wrapper - " + wrapper.getOperation()
- + " ID: " + wrapper.getEntryId() + " FeedID: "
- + wrapper.getFeedId());
- if (wrapper.getOperation().equals(StorageOperation.DELETE))
- return;
- String feedId = wrapper.getFeedId();
- if (this.bufferMap.containsKey(feedId))
- this.bufferMap.get(feedId).put(wrapper.getEntryId(), wrapper);
- else {
- Map newFeedMap = new HashMap(
- 20);
- newFeedMap.put(wrapper.getEntryId(), wrapper);
- this.bufferMap.put(feedId, newFeedMap);
-
- }
- addLastModified(wrapper.getFeedId(), wrapper.getTimestamp());
- /*
- * add to exclude from searches doc will be available via the buffer
- * if the entry is not already in the buffer
- */
- if (!this.excludeList.contains(wrapper.getEntryId()))
- this.excludeList.add(wrapper.getEntryId());
- } finally {
- this.writeLock.unlock();
- }
- }
-
- private void addLastModified(final String feedId, Long timestamp) {
- this.writeLock.lock();
- try {
- if (this.modifiyMap.containsKey(feedId))
- this.modifiyMap.remove(feedId);
- this.modifiyMap.put(feedId, timestamp);
- } finally {
- this.writeLock.unlock();
- }
-
- }
-
- /**
- * the timestamp of the last modification for the given feed id
- *
- * @param feedId -
- * feed id
- * @return timestamp
- */
- protected Long getFeedLastModified(final String feedId) {
- this.readLock.lock();
- try {
- return this.modifiyMap.get(feedId);
- } finally {
- this.readLock.unlock();
- }
- }
-
- protected Set> getLastModified() {
- return this.modifiyMap.entrySet();
- }
-
- /**
- * Returns all entries for the given feed id sorted by the update timestamp
- * desc.
- *
- * @param feedId -
- * the feed id
- * @return a {@link List} of all {@link StorageEntryWrapper} object buffered
- * in this buffer or an empty list if not entry has been buffered
- * for the given feed
- */
- public List getSortedEntries(String feedId) {
- this.readLock.lock();
- try {
- if (!this.bufferMap.containsKey(feedId))
- return null;
- Map tempMap = this.bufferMap
- .get(feedId);
- if (tempMap == null)
- return null;
- Collection col = tempMap.values();
- List returnList = new ArrayList(
- col);
- Collections.sort(returnList);
- return returnList;
-
- } finally {
- this.readLock.unlock();
- }
-
- }
-
- /**
- * Adds a deleted entry to the buffer.
- *
- * @param entryId -
- * the deleted entry id
- * @param feedId -
- * the feed of the entry
- */
- public void addDeleted(final String entryId, final String feedId) {
- this.writeLock.lock();
- try {
- Map tempMap = this.bufferMap
- .get(feedId);
- if (tempMap != null) {
- tempMap.remove(entryId);
- this.addLastModified(feedId, new Long(System
- .currentTimeMillis()));
- }
- /*
- * add to exclude from searches
- */
- if (!this.excludeList.contains(entryId))
- this.excludeList.add(entryId);
- } finally {
-
- this.writeLock.unlock();
-
- }
-
- }
-
- /**
- * Returns an entry for the given entry id in the feed context spezified by
- * the feed id;
- *
- * @param entryId -
- * the id of the entry to return
- * @param feedId -
- * the feed containing the entry
- * @return - the entry or null if the corresponding entry is
- * not in the buffer.
- */
- public StorageEntryWrapper getEntry(final String entryId,
- final String feedId) {
- this.readLock.lock();
- try {
-
- if (this.bufferMap.containsKey(feedId))
- return this.bufferMap.get(feedId).get(entryId);
- return null;
-
- } finally {
- this.readLock.unlock();
- }
- }
-
- /**
- * The buffer contains updated and delete entries. These entries are already
- * available in the lucene index but should not be found during search.
- *
- *
- * This list contains all entries should not be found by the index searcher.
- * This method creates a copy of the current list to prevent concurrent
- * modification exceptions while iteration over the collection.
- *
- *
- *
- * @see ModifiedEntryFilter
- * @return - a String array of entries to be omitted from a lucene index
- * search
- */
- public String[] getExculdList() {
- this.readLock.lock();
- try {
- return this.excludeList
- .toArray(new String[this.excludeList.size()]);
- } finally {
- this.readLock.unlock();
- }
- }
-
- // not synchronized --> see close()
- private void clearBuffer() {
-
- this.bufferMap.clear();
- this.excludeList.clear();
- this.modifiyMap.clear();
-
- }
-
- /**
- * clears the buffer -
- */
- public void close() {
- this.writeLock.lock();
- try {
- clearBuffer();
- } finally {
- this.writeLock.unlock();
- }
-
- }
-
- static class BufferableEntry extends BaseEntry {
-
- /**
- *
- */
- @SuppressWarnings("unchecked")
- public BufferableEntry() {
- super();
- this.links = new LinkedList();
- }
-
- /**
- * @param arg0
- */
- @SuppressWarnings("unchecked")
- public BufferableEntry(BaseEntry arg0) {
- super(arg0);
- if (this.links.size() > 0) {
- LinkedList list = new LinkedList();
- list.addAll(this.links);
- this.links = list;
- } else
- this.links = new LinkedList();
- }
-
- /**
- * @see com.google.gdata.data.BaseEntry#declareExtensions(com.google.gdata.data.ExtensionProfile)
- */
- @Override
- public void declareExtensions(ExtensionProfile arg0) {
- //
- }
-
- }
-
- /**
- * @return Returns the bufferSize.
- */
- public int getBufferSize() {
- return this.bufferSize;
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/StorageCoreController.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/StorageCoreController.java
deleted file mode 100644
index 9c10004767d..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/StorageCoreController.java
+++ /dev/null
@@ -1,610 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.storage.lucenestorage;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.locks.Condition;
-import java.util.concurrent.locks.ReentrantLock;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
-import org.apache.lucene.gdata.data.GDataAccount;
-import org.apache.lucene.gdata.server.registry.Component;
-import org.apache.lucene.gdata.server.registry.ComponentType;
-import org.apache.lucene.gdata.server.registry.configuration.Requiered;
-import org.apache.lucene.gdata.storage.IDGenerator;
-import org.apache.lucene.gdata.storage.Storage;
-import org.apache.lucene.gdata.storage.StorageController;
-import org.apache.lucene.gdata.storage.StorageException;
-import org.apache.lucene.gdata.storage.lucenestorage.recover.RecoverController;
-import org.apache.lucene.gdata.storage.lucenestorage.recover.RecoverException;
-import org.apache.lucene.gdata.utils.ReferenceCounter;
-import org.apache.lucene.index.IndexModifier;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.FSDirectory;
-
-/**
- *
- *
- * @author Simon Willnauer
- *
- */
-@Component(componentType = ComponentType.STORAGECONTROLLER)
-public class StorageCoreController implements StorageController {
-
- protected static final Log LOG = LogFactory
- .getLog(StorageCoreController.class);
-
- private IndexSearcher searcher;
-
- private Directory storageDir;
-
- private StorageModifier modifier;
-
- private ReferenceCounter storageQuery;
-
- private StorageBuffer currentBuffer;
- private final AtomicBoolean isClosed = new AtomicBoolean(false);
- private final ReentrantLock storageControllerLock = new ReentrantLock();
- private final Condition closeCondition;
-
- private static final int DEFAULT_STORAGE_BUFFER_SIZE = 3;
-
- private static final int DEFAULT_STORAGE_PERSIST_FACTOR = 3;
-
- private static final String RECOVERDIRECTORY = "recover";
-
- private static final String STORAGELOG = ".lucenestorage";
-
- private IDGenerator idGenerator;
-
- private final ConcurrentStorageLock storageLock;
- /*
- *properties set by configuration file e.g. Registry
- */
- private int indexOptimizeInterval;
-
- private String storageDirectory;
-
- private boolean keepRecoveredFiles;
-
- private boolean recover;
-
- private int storageBufferSize;
-
- private int storagePersistFactor;
-
- private RecoverController recoverController;
- /**
- * @see org.apache.lucene.gdata.server.registry.ServerComponent#initialize()
- */
- public void initialize() {
- synchronized (StorageCoreController.class) {
-
- try {
- this.idGenerator = new IDGenerator(10);
- } catch (Exception e) {
- throw new StorageException("Can't create ID Generator", e);
- }
-
- boolean createNewStorage = false;
-
- if (this.storageDir == null) {
-
-
- File storeDir = new File(this.storageDirectory);
- File storageLog = new File(storeDir.getAbsolutePath()
- + System.getProperty("file.separator") + STORAGELOG);
- try {
- if (storeDir.isDirectory() && !storageLog.exists()) {
-
- if (createLuceneStorageLog(storeDir)) {
- this.storageDir = FSDirectory.getDirectory(
- storeDir, true);
- createNewStorage = true;
- } else
- throw new StorageException(
- "could not create storage lock file in "
- + this.storageDirectory);
-
- } else
- this.storageDir = FSDirectory.getDirectory(storeDir,
- false);
- } catch (IOException e) {
- storageLog.delete();
- throw new StorageException(e);
- }
-
- this.storageBufferSize = this.storageBufferSize < DEFAULT_STORAGE_BUFFER_SIZE ? DEFAULT_STORAGE_BUFFER_SIZE
- : this.storageBufferSize;
- this.storagePersistFactor = this.storagePersistFactor < DEFAULT_STORAGE_PERSIST_FACTOR ? DEFAULT_STORAGE_PERSIST_FACTOR
- : this.storagePersistFactor;
-
- }else
- createNewStorage = true;
-
-
- this.currentBuffer = new StorageBuffer(this.storageBufferSize);
- try{
- this.modifier = createStorageModifier(createNewStorage);
- this.searcher = new IndexSearcher(this.storageDir);
- }catch (Exception e) {
- throw new StorageException("Can not create Searcher/Modifier -- "+e.getMessage(),e);
- }
-
-
- if(createNewStorage)
- createAdminAccount();
- if(!this.recover)
- return;
- try{
- tryRecover();
- }catch (Exception e) {
- LOG.fatal("Recovering failed",e);
- throw new StorageException("Recovering failed -- "+e.getMessage(),e);
- }
-
- this.recoverController = createRecoverController(false,false);
- try{
- this.recoverController.initialize();
- }catch (Exception e) {
- LOG.fatal("Can not initialize recover controller",e);
- throw new StorageException("Can not initialize recover controller -- "+e.getMessage(),e);
- }
-
- }
- }
- /*
- * reads the remaining recover files to store the failed entries
- */
- private void tryRecover() throws IOException, RecoverException{
- if(!this.recover)
- return;
- LOG.info("try to recover files if there are any");
- this.recoverController = createRecoverController(true,false);
- this.recoverController.initialize();
- this.recoverController.recoverEntries(this.modifier);
- this.recoverController.destroy();
- }
-
- private RecoverController createRecoverController(boolean doRecover, boolean keepfiles){
- String recoverDirectory = null;
- if(this.storageDirectory.endsWith("/") || this.storageDirectory.endsWith("\\"))
- recoverDirectory = this.storageDirectory.substring(0,this.storageDirectory.length()-1)+System.getProperty("file.separator")+RECOVERDIRECTORY;
- else
- recoverDirectory = this.storageDirectory+System.getProperty("file.separator")+RECOVERDIRECTORY;
- File recoverDirectoryFile = new File(recoverDirectory);
- return new RecoverController(recoverDirectoryFile,doRecover,keepfiles);
- }
- /**
- * Creates a new StoragCoreController
- */
- public StorageCoreController() {
- this.closeCondition = this.storageControllerLock.newCondition();
- this.storageLock = SingleHostConcurrentStorageLock.getConcurrentStorageLock();
-
- }
-
- private StorageModifier createStorageModifier(boolean create)
- throws IOException {
- IndexModifier indexModifier = new IndexModifier(this.storageDir,
- new StandardAnalyzer(), create);
- return new StorageModifier(this, indexModifier, this.currentBuffer,
- this.storagePersistFactor, this.indexOptimizeInterval);
- }
-
- /**
- * returns the current storage modifier
- *
- * @return - the current storage modifier
- */
- protected StorageModifier getStorageModifier() {
- return this.modifier;
- }
-
- /**
- * returns a StorageQuery to query the storage index. The
- * returned object is a reference counter to keep track of the references to
- * the StorageQuery. The reference is already incremented before
- * returned from this method.
- *
- * if the reference counter has no remaining references the resource e.g.
- * the StorageQuery will be closed. This ensures that a
- * StorageQuery instance will be around as long as needed and
- * the resources will be released. The reference counter should be
- * decremented by clients after finished using the query instance.
- *
- *
- * @return a {@link ReferenceCounter} instance holding the StorageQuery as a
- * resource.
- *
- */
- protected ReferenceCounter getStorageQuery() {
- if(this.isClosed.get())
- throw new IllegalStateException("StorageController is already closed -- server is shutting down");
- this.storageControllerLock.lock();
- try{
- if(this.isClosed.get())
- throw new IllegalStateException("StorageController is already closed -- server is shutting down");
- if (this.storageQuery == null) {
- this.storageQuery = getNewStorageQueryHolder(new StorageQuery(
- this.currentBuffer, this.searcher));
- if (LOG.isInfoEnabled())
- LOG.info("Release new StorageQuery");
- }
- this.storageQuery.increamentReference();
- return this.storageQuery;
- }finally{
- try{
- this.closeCondition.signalAll();
- }catch (Throwable e) {/**/}
- this.storageControllerLock.unlock();
- }
- }
-
- private ReferenceCounter getNewStorageQueryHolder(
- final StorageQuery query) {
- ReferenceCounter holder = new ReferenceCounter(
- query) {
- @Override
- public void close() {
- try {
- if (LOG.isInfoEnabled())
- LOG
- .info("close StorageQuery -- zero references remaining");
- this.resource.close();
- } catch (IOException e) {
- LOG.warn("Error during close call on StorageQuery"
- + e.getMessage(), e);
- }
- }
- };
- holder.increamentReference();
- return holder;
- }
-
- /**
- * Forces the controller to register a new StorageQuery instance.
- * This method will be called after an index has been modified to make the
- * changes available for searching.
- *
- * @throws IOException -
- * if an IO exception occurs
- */
- protected void registerNewStorageQuery() throws IOException {
- if(this.isClosed.get())
- throw new IllegalStateException("StorageController is already closed -- server is shutting down");
- this.storageControllerLock.lock();
- try{
- if(this.isClosed.get())
- throw new IllegalStateException("StorageController is already closed -- server is shutting down");
- if (LOG.isInfoEnabled())
- LOG.info("new StorageQuery requested -- create new storage buffer");
-
- if (this.storageQuery != null)
- this.storageQuery.decrementRef();
- this.searcher = new IndexSearcher(this.storageDir);
- this.storageQuery = null;
- this.currentBuffer = new StorageBuffer(this.storageBufferSize);
-
- }finally{
- try{
- this.closeCondition.signalAll();
- }catch (Throwable e) {/**/}
- this.storageControllerLock.unlock();
- }
-
- }
-
- /**
- * Creates a new StorageBuffer
- *
- * @return the new StorageBuffer
- */
- protected StorageBuffer releaseNewStorageBuffer() {
- if(this.isClosed.get())
- throw new IllegalStateException("StorageController is already closed -- server is shutting down");
- this.storageControllerLock.lock();
- try{
- if(this.isClosed.get())
- throw new IllegalStateException("StorageController is already closed -- server is shutting down");
- return this.currentBuffer;
- }finally{
- try{
- this.closeCondition.signalAll();
- }catch (Throwable e) {/**/}
- this.storageControllerLock.unlock();
- }
- }
-
- /**
- * Creates a new IndexModifier on the storage index
- *
- * @return - a new modifier
- * @throws IOException -
- * if an IO exception occurs
- */
- protected IndexModifier createIndexModifier() throws IOException {
- if(this.isClosed.get())
- throw new IllegalStateException("StorageController is already closed -- server is shutting down");
- this.storageControllerLock.lock();
- try{
- if(this.isClosed.get())
- throw new IllegalStateException("StorageController is already closed -- server is shutting down");
- if (LOG.isInfoEnabled())
- LOG.info("new IndexModifier created - release to StorageModifier");
-
- return new IndexModifier(this.storageDir, new StandardAnalyzer(),
- false);
- }finally{
- try{
- this.closeCondition.signalAll();
- }catch (Throwable e) {/**/}
- this.storageControllerLock.unlock();
- }
- }
-
- private void close() throws IOException {
- if(this.isClosed.get())
- throw new IllegalStateException("StorageController is already closed -- server is shutting down");
-
- this.storageControllerLock.lock();
- try{
- if(this.isClosed.get())
- throw new IllegalStateException("StorageController is already closed -- server is shutting down");
- this.isClosed.set(true);
- while(this.storageControllerLock.getQueueLength()>0)
- try{
- this.closeCondition.await();
- }catch (Exception e) {
- //
- }
- if (LOG.isInfoEnabled())
- LOG.info("StorageController has been closed -- server is shutting down -- release all resources");
- if (this.storageQuery != null)
- this.storageQuery.decrementRef();
- if(this.recoverController != null)
- this.recoverController.destroy();
- this.storageLock.close();
- this.modifier.close();
- this.idGenerator.stopIDGenerator();
- }finally{
- this.storageControllerLock.unlock();
- }
- }
-
-
- /**
- * Forces the StorageModifier to write all buffered changes.
- *
- * @throws IOException -
- * if an IO exception occurs
- *
- */
- public void forceWrite() throws IOException {
- if(this.isClosed.get())
- throw new IllegalStateException("StorageController is already closed -- server is shutting down");
- this.modifier.forceWrite();
- }
-
- private boolean createLuceneStorageLog(File directory)
- throws IOException {
- if (directory.isDirectory() && !directory.exists()) {
- if(!directory.createNewFile())
- throw new StorageException("Can not create directory -- "+directory);
- }
- File file = new File(directory.getAbsolutePath()
- + System.getProperty("file.separator") + STORAGELOG);
- return file.createNewFile();
-
- }
-
- /**
- * Creates a unique ID to store as an id for
- * {@link org.apache.lucene.gdata.data.ServerBaseEntry} instances
- *
- * @return - a unique id
- * @throws StorageException -
- * if no id can be released
- */
- public synchronized String releaseId() {
- try {
- return this.idGenerator.getUID();
- } catch (InterruptedException e) {
- throw new StorageException("Can't release new ID", e);
- }
-
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.StorageController#destroy()
- */
- public void destroy() {
- try {
- close();
- } catch (Exception e) {
- LOG.error("Closing StorageCoreController failed -- "
- + e.getMessage(), e);
- }
- }
-
- /**
- *
- * @return - the lucene directory used as a storage
- */
- protected Directory getDirectory() {
- return this.storageDir;
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.StorageController#getStorage()
- */
- public Storage getStorage() throws StorageException {
- try {
- return new StorageImplementation();
- } catch (StorageException e) {
- StorageException ex = new StorageException(
- "Can't create Storage instance -- " + e.getMessage(), e);
- ex.setStackTrace(e.getStackTrace());
- throw ex;
-
- }
- }
-
-
-
-
-
-
- private void createAdminAccount() throws StorageException{
- GDataAccount adminAccount = GDataAccount.createAdminAccount();
- StorageAccountWrapper wrapper = new StorageAccountWrapper(adminAccount);
- this.getStorageModifier().createAccount(wrapper);
- }
-
- protected ConcurrentStorageLock getLock(){
- return this.storageLock;
- }
-
-
- /**
- * The size of the StorageBuffer.
- *
- * @return - storage buffer size
- */
- public int getBufferSize() {
- return this.storageBufferSize;
- }
-
- /**
- * The size of the StorageBuffer. This size should be at least
- * as big as the persist factor to prevent the StorageBuffer from
- * resizing
- *
- * @param storageBufferSize
- */
- @Requiered
- public void setBufferSize(int storageBufferSize) {
- this.storageBufferSize = storageBufferSize;
- }
-
- /**
- * An integer value after how many changes to the StorageModifier the
- * buffered changes will be persisted / written to the index
- *
- * @return - the persist factor
- */
- public int getPersistFactor() {
- return this.storagePersistFactor;
- }
-
- /**
- * @param storagePersistFactor
- */
- @Requiered
- public void setPersistFactor(int storagePersistFactor) {
- this.storagePersistFactor = storagePersistFactor;
- }
-
-
- /**
- * @return Returns the indexOptimizeInterval.
- */
- public int getIndexOptimizeInterval() {
- return this.indexOptimizeInterval;
- }
-
-
- /**
- * @param indexOptimizeInterval The indexOptimizeInterval to set.
- */
- @Requiered
- public void setOptimizeInterval(int indexOptimizeInterval) {
- this.indexOptimizeInterval = indexOptimizeInterval;
- }
-
-
- /**
- * @return Returns the keepRecoveredFiles.
- */
- public boolean isKeepRecoveredFiles() {
- return this.keepRecoveredFiles;
- }
-
-
- /**
- * @param keepRecoveredFiles The keepRecoveredFiles to set.
- */
- @Requiered
- public void setKeepRecoveredFiles(boolean keepRecoveredFiles) {
- this.keepRecoveredFiles = keepRecoveredFiles;
- }
-
-
-
- /**
- * @return Returns the recover.
- */
- public boolean isRecover() {
- return this.recover;
- }
-
-
- /**
- * @param recover The recover to set.
- */
- @Requiered
- public void setRecover(boolean recover) {
- this.recover = recover;
- }
-
-
- /**
- * @param storageDir The storageDir to set.
- */
-
- public void setStorageDir(Directory storageDir) {
- this.storageDir = storageDir;
- }
-
-
- /**
- * @param storageDirectory The storageDirectory to set.
- */
- @Requiered
- public void setDirectory(String storageDirectory) {
- this.storageDirectory = storageDirectory;
- }
-
- protected void writeRecoverEntry(StorageEntryWrapper wrapper) throws RecoverException{
- if(this.recoverController!= null &&!this.recoverController.isRecovering() )
- this.recoverController.storageModified(wrapper);
- }
- protected void registerNewRecoverWriter() throws IOException {
- if(this.recoverController == null || this.recoverController.isRecovering())
- return;
- this.recoverController.destroy();
- this.recoverController = createRecoverController(false,false);
- this.recoverController.initialize();
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/StorageEntryWrapper.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/StorageEntryWrapper.java
deleted file mode 100644
index a9e3f9c2819..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/StorageEntryWrapper.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.storage.lucenestorage;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.io.StringWriter;
-
-import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.server.registry.ProvidedService;
-import org.apache.lucene.gdata.server.registry.ProvidedServiceConfig;
-import org.apache.lucene.gdata.storage.lucenestorage.StorageBuffer.BufferableEntry;
-
-import com.google.gdata.data.BaseEntry;
-import com.google.gdata.util.common.xml.XmlWriter;
-
-/**
- * This immutable class wrapps ServerBaseEntry for an internal
- * Storage representation of an entry. This class also acts as a Documentfactory
- * for lucene documents to be stored inside the index.
- *
- * @author Simon Willnauer
- *
- */
-public class StorageEntryWrapper implements Comparable, Serializable,
- StorageWrapper {
-
- private static final long serialVersionUID = -4619985652059888526L;
- /*
- * client api uses UTF-8 to encode server requests and entries
- */
- private static final String INTERNAL_ENCODING = "UTF-8";
-
- /**
- * lucene field name Entry id
- */
- public final static String FIELD_ENTRY_ID = "entryId";
-
- /**
- * lucene field name feed id
- */
- public final static String FIELD_FEED_REFERENCE = "feedReference";
-
- /**
- * lucene field name entry content
- */
- public final static String FIELD_CONTENT = "content";
-
- /**
- * lucene field name creating timestamp
- */
- public final static String FIELD_TIMESTAMP = "timestamp";
-
- /**
- * lucene field name entry version
- */
- public final static String FIELD_VERSION = "entryVersion";
- private int version;
-
- private String entryId;
-
- private String feedId;
-
- private String content;
-
- private transient ServerBaseEntry entry;
-
- private Long timestamp;
-
- private Document document;
-
- private StorageOperation operation;
-
- private transient ProvidedService config;
-
- /**
- * Creates a new StorageEntryWrapper.
- *
- * @param entry -
- * the entry to wrap
- *
- * @param operation -
- * the StorageOperation
- *
- * @throws IOException -
- * if the entry content can not be generated
- */
- public StorageEntryWrapper(final ServerBaseEntry entry,
- StorageOperation operation) throws IOException {
- this.entry = entry;
- this.operation = operation;
- this.entryId = entry.getId();
- this.feedId = entry.getFeedId();
- this.version = entry.getVersion();
- if (operation != StorageOperation.DELETE) {
- this.config = entry.getServiceConfig();
- this.content = buildContent();
-
-
- }
- this.timestamp = new Long(
- this.entry.getUpdated() != null ? this.entry.getUpdated()
- .getValue() : System.currentTimeMillis());
-
-
- }
-
-
- private String buildContent() throws IOException {
- StringWriter writer = new StringWriter();
- XmlWriter xmlWriter = new XmlWriter(writer, INTERNAL_ENCODING);
- this.entry.generateAtom(xmlWriter, this.config.getExtensionProfile());
- return writer.toString();
-
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageWrapper#getLuceneDocument()
- */
- public Document getLuceneDocument() {
- if(this.operation == StorageOperation.DELETE)
- return null;
- if (this.document != null)
- return this.document;
- this.document = new Document();
- this.document.add(new Field(FIELD_ENTRY_ID, this.entryId,
- Field.Store.YES, Field.Index.UN_TOKENIZED));
- this.document.add(new Field(FIELD_FEED_REFERENCE, this.feedId,
- Field.Store.YES, Field.Index.UN_TOKENIZED));
- this.document.add(new Field(FIELD_CONTENT,this.content,
- Field.Store.COMPRESS, Field.Index.NO));
- this.document.add(new Field(FIELD_TIMESTAMP, this.timestamp.toString(),
- Field.Store.YES, Field.Index.UN_TOKENIZED));
- this.document.add(new Field(FIELD_VERSION, Integer.toString(this.version),
- Field.Store.YES, Field.Index.UN_TOKENIZED));
-
- return this.document;
-
- }
-
- /**
- * @return - the wrapped entry
- */
- public BaseEntry getEntry() {
- /*
- * this wrapps the entry again. BufferableEntry creates a new instance
- * for the dynamic element like links.
- */
- return new BufferableEntry(this.entry.getEntry());
- }
-
- /**
- * @return - the entry id
- */
- public String getEntryId() {
- return this.entryId;
- }
-
- /**
- * @return - the feed id
- */
- public String getFeedId() {
- return this.feedId;
- }
-
- /**
- * Storage operations
- *
- * @author Simon Willnauer
- *
- */
- public static enum StorageOperation {
- /**
- * delete
- */
- DELETE,
- /**
- * update
- */
- UPDATE,
- /**
- * insert
- */
- INSERT
- }
-
- /**
- * @return the specified storage operation
- */
- public StorageOperation getOperation() {
- return this.operation;
- }
-
- /**
- * This compare method compares the timestamps of the wrapper instances.
- *
- * @param arg0 the wrapper to compare
- * @return 0 if the wrappers timestamp are the same, an integer > 0 if the
- * given wrapper is after this wrapper
- */
- public int compareTo(StorageEntryWrapper arg0) {
- return arg0.timestamp.equals(this.timestamp) ? 0
- : (arg0.timestamp > this.timestamp ? 1 : -1);
- }
-
- /**
- * @return - the specified {@link ProvidedServiceConfig}
- */
- public ProvidedService getConfigurator() {
- return this.config;
- }
-
- /**
- * @return Returns the timestamp.
- */
- public Long getTimestamp() {
- return this.timestamp;
- }
-
- /**
- * @return - the version of the entry
- */
- public int getVersion() {
-
- return this.version;
- }
-
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/StorageFeedWrapper.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/StorageFeedWrapper.java
deleted file mode 100644
index 3567b1fe09a..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/StorageFeedWrapper.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.storage.lucenestorage;
-
-import java.io.IOException;
-import java.io.StringWriter;
-
-import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
-import org.apache.lucene.gdata.data.ServerBaseFeed;
-import org.apache.lucene.gdata.server.registry.ProvidedService;
-
-import com.google.gdata.data.BaseFeed;
-import com.google.gdata.util.common.xml.XmlWriter;
-
-/**
- * This immutable class wrapps GDataAccount instances for an internal Storage representation of
- * an account. This class also acts as a Documentfactory for lucene documents to
- * be stored inside the index.
- * @author Simon Willnauer
- *
- */
-public class StorageFeedWrapper implements StorageWrapper {
-
- private static final String INTERNAL_ENCODING = "UTF-8";
- /**
- * the account who owns the feed
- */
- public static final String FIELD_ACCOUNTREFERENCE = "accountReference";
- /**
- * the id of the feed
- */
- public static final String FIELD_FEED_ID = "feedId";
- /**
- * The xml feed representation
- */
- public static final String FIELD_CONTENT = "content";
-
- /**
- * The creation timestamp
- */
- public static final String FIELD_TIMESTAMP = "timestamp";
-
- /**
- * The Service this feed belongs to.
- */
- public static final String FIELD_SERVICE_ID = "serviceId";
- private final ServerBaseFeed feed;
- private final String accountName;
- private final ProvidedService config;
- private final String content;
-
-
- /**
- * @param feed
- * @param accountname
- * @throws IOException
- *
- */
- public StorageFeedWrapper(final ServerBaseFeed feed, final String accountname) throws IOException {
- this.feed = feed;
- this.accountName = accountname;
- this.config = feed.getServiceConfig();
- this.content = buildContent();
-
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageWrapper#getLuceneDocument()
- */
- public Document getLuceneDocument() {
- Document doc = new Document();
- doc.add(new Field(FIELD_ACCOUNTREFERENCE,this.accountName,Field.Store.YES,Field.Index.UN_TOKENIZED));
- doc.add(new Field(FIELD_FEED_ID,this.feed.getId(),Field.Store.YES,Field.Index.UN_TOKENIZED));
- doc.add(new Field(FIELD_CONTENT,this.content,Field.Store.COMPRESS,Field.Index.NO));
- doc.add(new Field(FIELD_SERVICE_ID,this.feed.getServiceType(),Field.Store.YES,Field.Index.NO));
- return doc;
- }
-
- private String buildContent() throws IOException {
- StringWriter writer = new StringWriter();
- XmlWriter xmlWriter = new XmlWriter(writer, INTERNAL_ENCODING);
- this.feed.generateAtom(xmlWriter,this.config.getExtensionProfile());
- return writer.toString();
- }
- /**
- * @return - the wrapped feed
- */
- public BaseFeed getFeed(){
- return this.feed.getFeed();
- }
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/StorageImplementation.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/StorageImplementation.java
deleted file mode 100644
index fc2c49cc0ec..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/StorageImplementation.java
+++ /dev/null
@@ -1,574 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.storage.lucenestorage;
-
-import java.io.IOException;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.data.GDataAccount;
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.data.ServerBaseFeed;
-import org.apache.lucene.gdata.server.registry.ComponentType;
-import org.apache.lucene.gdata.server.registry.GDataServerRegistry;
-import org.apache.lucene.gdata.storage.ModificationConflictException;
-import org.apache.lucene.gdata.storage.ResourceNotFoundException;
-import org.apache.lucene.gdata.storage.Storage;
-import org.apache.lucene.gdata.storage.StorageController;
-import org.apache.lucene.gdata.storage.StorageException;
-import org.apache.lucene.gdata.storage.lucenestorage.StorageEntryWrapper.StorageOperation;
-import org.apache.lucene.gdata.utils.ReferenceCounter;
-
-import com.google.gdata.data.BaseEntry;
-import com.google.gdata.data.BaseFeed;
-
-/**
- * This is an implementation of the
- * {@link org.apache.lucene.gdata.storage.Storage} interface. The
- * StorageImplementation provides access to the
- * {@link org.apache.lucene.gdata.storage.lucenestorage.StorageQuery} and the
- * {@link org.apache.lucene.gdata.storage.lucenestorage.StorageModifier}. This
- * class will be instantiated per client request.
- *
- *
- *
- * @author Simon Willnauer
- *
- */
-public class StorageImplementation implements Storage {
- private final StorageCoreController controller;
-
- private static final Log LOG = LogFactory
- .getLog(StorageImplementation.class);
-
- /**
- * Creates a new StorageImplementation
- *
- * @throws StorageException -
- * if the storage controller can not be obtained
- *
- *
- *
- */
- public StorageImplementation() throws StorageException {
- this.controller = (StorageCoreController) GDataServerRegistry
- .getRegistry().lookup(StorageController.class,
- ComponentType.STORAGECONTROLLER);
- if (this.controller == null)
- throw new StorageException("Can't get registered StorageController");
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#storeEntry(org.apache.lucene.gdata.data.ServerBaseEntry)
- */
- public BaseEntry storeEntry(final ServerBaseEntry entry)
- throws StorageException {
- if (entry == null)
- throw new StorageException("entry is null");
- if(entry.getFeedId() == null)
- throw new StorageException("feed-id is null");
- if(entry.getVersion() != 1)
- throw new StorageException("entry version must be 1");
- if(entry.getServiceConfig() == null)
- throw new StorageException("ProvidedService must not be null");
- StorageModifier modifier = this.controller.getStorageModifier();
- String id = this.controller.releaseId();
- entry.setId(entry.getFeedId() + id);
- if (LOG.isInfoEnabled())
- LOG.info("Store entry " + id + " -- feed: " + entry.getFeedId());
-
- try {
- StorageEntryWrapper wrapper = new StorageEntryWrapper(entry,
- StorageOperation.INSERT);
- modifier.insertEntry(wrapper);
- } catch (IOException e) {
- StorageException ex = new StorageException("Can't create Entry -- "
- + e.getMessage(), e);
- ex.setStackTrace(e.getStackTrace());
- throw ex;
-
- }
-
- return entry.getEntry();
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#deleteEntry(org.apache.lucene.gdata.data.ServerBaseEntry)
- */
- public void deleteEntry(final ServerBaseEntry entry)
- throws StorageException {
-
- if (entry == null)
- throw new StorageException("Entry is null");
- if(entry.getId() == null)
- throw new StorageException("Entry id is null");
- if(entry.getFeedId() == null)
- throw new StorageException("feed id is null");
- if (LOG.isInfoEnabled())
- LOG.info("delete entry " + entry.getId() + " -- feed: "
- + entry.getFeedId());
- StorageModifier modifier = this.controller.getStorageModifier();
- ReferenceCounter query = this.controller.getStorageQuery();
- // try to set concurrency Lock
- String key = entry.getId();
- setLock(key);
- try{
- if(query.get().isEntryStored(entry.getId(),entry.getFeedId())){
- if(query.get().checkEntryVersion(entry.getId(),entry.getFeedId(),entry.getVersion())){
- modifier.deleteEntry(new StorageEntryWrapper(entry,StorageOperation.DELETE));
- }else
- throw new ModificationConflictException("The entry version does not match -- entry "+entry.getId()+" feed:"+entry.getFeedId()+" version: "+entry.getVersion());
- }
- else
- throw new ResourceNotFoundException("Entry for entry id: "+entry.getId()+" is not stored");
- }catch (IOException e) {
- throw new StorageException("Can not access storage");
- }finally{
- if(query != null)
- query.decrementRef();
- // release lock for concurrency
- releaseLock(key);
- }
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#updateEntry(org.apache.lucene.gdata.data.ServerBaseEntry)
- */
- public BaseEntry updateEntry(ServerBaseEntry entry) throws StorageException {
-
- if (entry == null)
- throw new StorageException("entry is null");
- if(entry.getId() == null)
- throw new StorageException("entry id is null");
- if(entry.getServiceConfig() == null)
- throw new StorageException("service config is not set -- null");
- if(entry.getFeedId() == null)
- throw new StorageException("feed id is null");
- if (LOG.isInfoEnabled())
- LOG.info("update entry " + entry.getId() + " -- feed: "
- + entry.getFeedId());
- StorageModifier modifier = this.controller.getStorageModifier();
- ReferenceCounter query = this.controller.getStorageQuery();
- // try to set concurrency Lock
- String key = entry.getId();
- setLock(key);
- try {
-
-
- if(query.get().isEntryStored(entry.getId(),entry.getFeedId())){
-
- if(query.get().checkEntryVersion(entry.getId(),entry.getFeedId(),entry.getVersion())){
- entry.setVersion(entry.getVersion()+1);
- StorageEntryWrapper wrapper = new StorageEntryWrapper(entry,
- StorageOperation.UPDATE);
- modifier.updateEntry(wrapper);
- }else
- throw new ModificationConflictException("The entry version does not match -- entry "+entry.getId()+" feed:"+entry.getFeedId()+" version: "+entry.getVersion());
-
- }else
- throw new ResourceNotFoundException("Entry for entry id: "+entry.getId()+" is not stored");
-
- } catch (IOException e) {
- LOG.error("Can't update entry for feedID: " + entry.getFeedId()
- + "; entryId: " + entry.getId() + " -- " + e.getMessage(),
- e);
- StorageException ex = new StorageException("Can't update Entry -- "
- + e.getMessage(), e);
- ex.setStackTrace(e.getStackTrace());
- throw ex;
-
- }
-
- finally{
- if(query != null)
- query.decrementRef();
- // release lock for concurrency
- releaseLock(key);
- }
-
- return entry.getEntry();
-
- }
- private void setLock(String key) throws ModificationConflictException{
- if(!this.controller.getLock().setLock(key))
- throw new ModificationConflictException("Can not set lock for entry -- "+key);
-
- }
-
- private void releaseLock(String key) throws StorageException{
- if(!this.controller.getLock().releaseLock(key))
- throw new StorageException("Can not release lock for key: "+key);
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#getFeed(org.apache.lucene.gdata.data.ServerBaseFeed)
- */
- @SuppressWarnings("unchecked")
- public BaseFeed getFeed(final ServerBaseFeed feed) throws StorageException {
-
- if (feed == null)
- throw new StorageException("feed is null");
- if (LOG.isInfoEnabled())
- LOG.info("get feed: " + feed.getId() + " start-index: "
- + feed.getStartIndex() + " resultCount: "
- + feed.getItemsPerPage());
- ReferenceCounter query = null;
- try {
- query = this.controller.getStorageQuery();
- BaseFeed retVal = query.get().getLatestFeedQuery(feed.getId(),
- feed.getItemsPerPage(), feed.getStartIndex(),
- feed.getServiceConfig());
- return retVal;
- } catch (Exception e) {
- LOG.error("Can't get latest feed for feedID: " + feed.getId()
- + " -- " + e.getMessage(), e);
- StorageException ex = new StorageException("Can't create Entry -- "
- + e.getMessage(), e);
- ex.setStackTrace(e.getStackTrace());
- throw ex;
-
- } finally {
- if (query != null)
- query.decrementRef();
- }
-
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#getEntry(org.apache.lucene.gdata.data.ServerBaseEntry)
- */
- public BaseEntry getEntry(final ServerBaseEntry entry)
- throws StorageException {
-
- if (entry == null)
- throw new StorageException("No entry specified -- is null");
- if (LOG.isInfoEnabled())
- LOG.info("get entry " + entry.getId() + " -- feed: "
- + entry.getFeedId());
- ReferenceCounter query = null;
- try {
- query = this.controller.getStorageQuery();
- BaseEntry retVal = query.get().singleEntryQuery(entry.getId(),
- entry.getFeedId(), entry.getServiceConfig());
- if(retVal == null)
- throw new ResourceNotFoundException("can not get entry for entry ID "+entry.getId());
- return retVal;
- } catch (Exception e) {
- LOG.error("Can't get entry for feedID: " + entry.getFeedId()
- + "; entryId: " + entry.getId() + " -- " + e.getMessage(),
- e);
- StorageException ex = new StorageException("Can't create Entry -- "
- + e.getMessage(), e);
- ex.setStackTrace(e.getStackTrace());
- throw ex;
-
- } finally {
- if (query != null)
- query.decrementRef();
- }
-
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#close()
- */
- public void close() {
- //
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#storeAccount(org.apache.lucene.gdata.data.GDataAccount)
- */
- public void storeAccount(GDataAccount Account) throws StorageException {
- if (Account == null)
- throw new StorageException("Can not save null Account");
- ReferenceCounter query = null;
- try {
- query = this.controller.getStorageQuery();
- if (query.get().getUser(Account.getName()) != null)
- throw new StorageException("Account already exists");
- StorageModifier modifier = this.controller.getStorageModifier();
- StorageAccountWrapper wrapper = new StorageAccountWrapper(Account);
- modifier.createAccount(wrapper);
- } catch (Exception e) {
- LOG.error("Can't save Account -- " + e.getMessage(), e);
- StorageException ex = new StorageException("Can't save Account -- "
- + e.getMessage(), e);
- ex.setStackTrace(e.getStackTrace());
- throw ex;
-
- } finally {
- if (query != null)
- query.decrementRef();
- }
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#updateAccount(org.apache.lucene.gdata.data.GDataAccount)
- */
- public void updateAccount(GDataAccount Account) throws StorageException {
- if (Account == null)
- throw new StorageException("Can not update null Account");
- ReferenceCounter query = null;
- try {
- query = this.controller.getStorageQuery();
- if (query.get().getUser(Account.getName()) == null)
- throw new StorageException("Account does not exist");
- StorageModifier modifier = this.controller.getStorageModifier();
- StorageAccountWrapper wrapper = new StorageAccountWrapper(Account);
- modifier.updateAccount(wrapper);
- } catch (Exception e) {
- LOG.error("Can't update Account -- " + e.getMessage(), e);
- StorageException ex = new StorageException(
- "Can't update Account -- " + e.getMessage(), e);
- ex.setStackTrace(e.getStackTrace());
- throw ex;
-
- } finally {
- if (query != null)
- query.decrementRef();
- }
-
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#deleteAccount(java.lang.String)
- */
- public void deleteAccount(String Accountname) throws StorageException {
- if (Accountname == null)
- throw new StorageException("can not delete null Account");
- ReferenceCounter query = null;
- try {
- query = this.controller.getStorageQuery();
- if (query.get().getUser(Accountname) == null)
- throw new StorageException("Account does not exist");
- StorageModifier modifier = this.controller.getStorageModifier();
- modifier.deleteAccount(Accountname);
- } catch (Exception e) {
- LOG.error("Can't update Account -- " + e.getMessage(), e);
- StorageException ex = new StorageException(
- "Can't update Account -- " + e.getMessage(), e);
- ex.setStackTrace(e.getStackTrace());
- throw ex;
-
- } finally {
- if (query != null)
- query.decrementRef();
- }
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#storeFeed(org.apache.lucene.gdata.data.ServerBaseFeed,
- * java.lang.String)
- */
- public void storeFeed(ServerBaseFeed feed, String accountName)
- throws StorageException {
- if (feed == null)
- throw new StorageException("can not insert null feed");
- if (accountName == null)
- throw new StorageException("accountName must not be null");
- ReferenceCounter query = null;
- try {
- query = this.controller.getStorageQuery();
- if (query.get().isFeedStored(feed.getId()))
- throw new StorageException("feed with feedID " + feed.getId()
- + " is already stored");
- StorageModifier modifier = this.controller.getStorageModifier();
- StorageFeedWrapper wrapper = new StorageFeedWrapper(feed,
- accountName);
- modifier.createFeed(wrapper);
-
- } catch (Exception e) {
- LOG.error("Can't create feed -- " + e.getMessage(), e);
- StorageException ex = new StorageException("Can't create feed -- "
- + e.getMessage(), e);
- ex.setStackTrace(e.getStackTrace());
- throw ex;
-
- } finally {
- if (query != null)
- query.decrementRef();
- }
-
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#deleteFeed(java.lang.String)
- */
- public void deleteFeed(String feedId) throws StorageException {
- if (feedId == null)
- throw new StorageException("can not delete feed id is null ");
- ReferenceCounter query = null;
- try {
- query = this.controller.getStorageQuery();
- if (!query.get().isFeedStored(feedId))
- throw new StorageException("Account does not exist");
- StorageModifier modifier = this.controller.getStorageModifier();
-
- modifier.deleteFeed(feedId);
-
- } catch (Exception e) {
- LOG.error("Can't delete feed -- " + e.getMessage(), e);
- StorageException ex = new StorageException("Can't create feed -- "
- + e.getMessage(), e);
- ex.setStackTrace(e.getStackTrace());
- throw ex;
-
- } finally {
- if (query != null)
- query.decrementRef();
- }
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#updateFeed(org.apache.lucene.gdata.data.ServerBaseFeed,
- * java.lang.String)
- */
- public void updateFeed(ServerBaseFeed feed, String accountName)
- throws StorageException {
- if (feed == null)
- throw new StorageException("can not update null feed");
- if (accountName == null)
- throw new StorageException("accountName must not be null");
- ReferenceCounter query = null;
- try {
- query = this.controller.getStorageQuery();
- if (!query.get().isFeedStored(feed.getId()))
- throw new StorageException("Account does not exist");
- StorageModifier modifier = this.controller.getStorageModifier();
- StorageFeedWrapper wrapper = new StorageFeedWrapper(feed,
- accountName);
- modifier.updateFeed(wrapper);
-
- } catch (Exception e) {
- LOG.error("Can't create feed -- " + e.getMessage(), e);
- StorageException ex = new StorageException("Can't create feed -- "
- + e.getMessage(), e);
- ex.setStackTrace(e.getStackTrace());
- throw ex;
-
- } finally {
- if (query != null)
- query.decrementRef();
- }
-
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#getServiceForFeed(java.lang.String)
- */
- public String getServiceForFeed(String feedId) throws StorageException {
- if (feedId == null)
- throw new StorageException("no feed for the feedID == null");
- ReferenceCounter query = null;
- try {
- query = this.controller.getStorageQuery();
- String type = query.get().getService(feedId);
- if (type == null)
- throw new StorageException("no feed for the feedID == "
- + feedId + " found");
- return type;
- } catch (Exception e) {
- throw new StorageException("Can not access storage", e);
- } finally {
- if (query != null)
- query.decrementRef();
- }
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#getAccount(java.lang.String)
- */
- public GDataAccount getAccount(String accountName) throws StorageException {
- if (accountName == null)
- throw new StorageException("account name must not be null");
- ReferenceCounter query = null;
- try {
- query = this.controller.getStorageQuery();
- return query.get().getUser(accountName);
- } catch (Exception e) {
- throw new StorageException("Can not access storage", e);
- } finally {
- if (query != null)
- query.decrementRef();
- }
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#getAccountNameForFeedId(java.lang.String)
- */
- public String getAccountNameForFeedId(String feedId)
- throws StorageException {
- if (feedId == null)
- throw new StorageException("feed-id must not be null");
- ReferenceCounter query = null;
- try {
- query = this.controller.getStorageQuery();
- String accountName = query.get().getAccountNameForFeedId(feedId);
- if (accountName == null)
- throw new StorageException("no feed for feedId " + feedId
- + " found");
- return accountName;
- } catch (IOException e) {
- throw new StorageException("Can not access storage - "
- + e.getMessage(), e);
- } finally {
- if (query != null)
- query.decrementRef();
- }
-
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#getEntryLastModified(java.lang.String, java.lang.String)
- */
- public Long getEntryLastModified(String entryId,String feedId) throws StorageException {
- ReferenceCounter query = null;
- try {
- query = this.controller.getStorageQuery();
- return new Long(query.get().getEntryLastModified(entryId,feedId));
- } catch (IOException e) {
- throw new StorageException("Can not access storage - "
- + e.getMessage(), e);
- } finally {
- if (query != null)
- query.decrementRef();
- }
-
-
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#getFeedLastModified(java.lang.String)
- */
- public Long getFeedLastModified(String feedId) throws StorageException {
- ReferenceCounter query = null;
- try {
- query = this.controller.getStorageQuery();
- return new Long(query.get().getFeedLastModified(feedId));
- } catch (IOException e) {
- throw new StorageException("Can not access storage - "
- + e.getMessage(), e);
- } finally {
- if (query != null)
- query.decrementRef();
- }
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/StorageModifier.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/StorageModifier.java
deleted file mode 100644
index ec5a1719de9..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/StorageModifier.java
+++ /dev/null
@@ -1,513 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.storage.lucenestorage;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.gdata.storage.StorageException;
-import org.apache.lucene.gdata.storage.lucenestorage.StorageEntryWrapper.StorageOperation;
-import org.apache.lucene.index.IndexModifier;
-import org.apache.lucene.index.Term;
-
-/**
- * The StorageModifier is the a Singleton component of the LuceneStorage. There
- * is one single instance of this class modifying the index used to store all
- * the gdata Entities as Entries, Feeds and Users. This class contains an
- * instance of {@link org.apache.lucene.index.IndexModifier} used to manage all
- * delete and add actions to the storage.
- *
- * To prevent the storage component from opening and closing the
- * {@link org.apache.lucene.index.IndexModifier} for every modifying operation
- * the incoming entry actions (DELETE, UPDATE, INSERT) will be buffered in a
- * registered instance of
- * {@link org.apache.lucene.gdata.storage.lucenestorage.StorageBuffer}. When a
- * certain amout (specified as the persistfactor in the configuration file) of
- * modifications have been executed the StorageModifier will persist the
- * buffered entries.
- *
- *
- * Feed and User operations won't be buffered. These actions occure not very
- * often compared to entry actions. Every call of an user / feed modifying
- * operation forces all changes to be written to the storage index.
- *
- *
- * @author Simon Willnauer
- *
- */
-public class StorageModifier {
- protected static final Log LOG = LogFactory.getLog(StorageModifier.class);
-
- private final List deletedDocumentQueue;
-
- private final List deletedForUpdateDocumentQueue;
-
- private final Map documentMap;
-
- private final List forceWriteDocuments;
-
- private final List forceWriteTerms;
-
- private volatile int persistFactor;
-
- private volatile int modifiedCounter = 0;
-
- private static int DEFAULT_PERSIST_FACTOR = 10;
-
- private StorageBuffer buffer;
-
- private IndexModifier modifier;
-
- private Lock lock = new ReentrantLock();
-
- private final AtomicBoolean isClosed = new AtomicBoolean(false);
-
- private final static int DEFAULT_OPTIMIZE_INTERVAL = 10;
-
- private final int optimizeInterval;
-
- private volatile int optimizeCounter = 0;
-
- private final StorageCoreController controller;
-
- /**
- * Creates a new StorageModifier
- *
- * @param controller -
- * the registered StorageController
- * @param modifier -
- * the IndexModifier
- * @param buffer -
- * the StorageBuffer
- * @param persitsFactor -
- * the factor when the changes will be persisted to the storage
- * index
- * @param optimizeInterval -
- * after how many storage operations the index will be optimized
- */
- protected StorageModifier(final StorageCoreController controller,
- final IndexModifier modifier, final StorageBuffer buffer,
- int persitsFactor, int optimizeInterval) {
- this.deletedDocumentQueue = new LinkedList();
- this.deletedForUpdateDocumentQueue = new LinkedList();
- this.documentMap = new HashMap(persitsFactor);
- this.forceWriteDocuments = new ArrayList(5);
- this.forceWriteTerms = new ArrayList(5);
- this.buffer = buffer;
- this.controller = controller;
-
- this.persistFactor = persitsFactor > 0 ? persitsFactor
- : DEFAULT_PERSIST_FACTOR;
- this.modifier = modifier;
- this.optimizeInterval = optimizeInterval < DEFAULT_OPTIMIZE_INTERVAL ? DEFAULT_OPTIMIZE_INTERVAL
- : optimizeInterval;
-
- }
-
- /**
- * Updates the given entry. First the alredy persisted entry will be
- * removed, after marking as deleted the new Entry will be written.
- *
- * @param wrapper -
- * the wrapper containing the entry
- * @throws StorageException -
- * if the entry can not be stored
- */
- public void updateEntry(StorageEntryWrapper wrapper)
- throws StorageException {
- if(wrapper.getOperation() != StorageOperation.UPDATE)
- throw new StorageException("Illegal method call -- updateEntry does not accept other storageOperations than update");
- this.lock.lock();
- try {
-
- Term tempTerm = new Term(StorageEntryWrapper.FIELD_ENTRY_ID,
- wrapper.getEntryId());
- this.documentMap.put(wrapper.getEntryId(), wrapper
- .getLuceneDocument());
- this.deletedForUpdateDocumentQueue.add(tempTerm);
- storageModified();
- /*
- * If storage not written write entry to recoverfile
- * and make the entry available via the buffer
- */
- if(this.modifiedCounter != 0)
- try{
- this.controller.writeRecoverEntry(wrapper);
- this.buffer.addEntry(wrapper);
- }catch (Exception e) {
- /*
- * remove from all resources
- */
- this.documentMap.remove(wrapper.getEntryId());
- this.deletedForUpdateDocumentQueue.remove(tempTerm);
-
- }
- } finally {
- this.lock.unlock();
- }
- }
-
- /**
- * Inserts a new Entry to the Lucene index storage
- *
- * @param wrapper -
- * the wrapper containing the entry
- * @throws StorageException -
- * if the entry can not be stored
- */
- public void insertEntry(StorageEntryWrapper wrapper)
- throws StorageException {
- if(wrapper.getOperation() != StorageOperation.INSERT)
- throw new StorageException("Illegal method call -- insertEntry does not accept other storage operations than insert");
- this.lock.lock();
- try {
- this.documentMap.put(wrapper.getEntryId(), wrapper
- .getLuceneDocument());
- storageModified();
- /*
- * If storage not written write entry to recoverfile
- * and make the entry available via the buffer
- */
- if(this.modifiedCounter != 0)
- try{
- this.controller.writeRecoverEntry(wrapper);
- this.buffer.addEntry(wrapper);
- }catch (Exception e) {
- /*
- * remove from all resources
- */
- this.documentMap.remove(wrapper.getEntryId());
- }
- } finally {
- this.lock.unlock();
- }
- }
-
- /**
- * Deletes the entry for the given entry id.
- * @param wrapper - the wrapper containing the information to delete
- *
- * @throws StorageException -
- * if the entry can not be deleted
- *
- */
- public void deleteEntry(final StorageEntryWrapper wrapper)
- throws StorageException {
- if(wrapper.getOperation() != StorageOperation.DELETE)
- throw new StorageException("Illegal method call -- insertEntry does not accept other storage operations than delete");
- this.lock.lock();
- try {
-
- Term tempTerm = new Term(StorageEntryWrapper.FIELD_ENTRY_ID,
- wrapper.getEntryId());
- this.deletedDocumentQueue.add(tempTerm);
- storageModified();
- /*
- * If storage not written write entry to recoverfile
- * and make the entry available via the buffer
- */
- if(this.modifiedCounter != 0)
- try{
- this.controller.writeRecoverEntry(wrapper);
- this.buffer.addDeleted(wrapper.getEntryId(), wrapper.getFeedId());
- }catch (Exception e) {
- /*
- * remove from all resources
- */
- this.deletedDocumentQueue.remove(tempTerm);
-
- }
- } finally {
- this.lock.unlock();
- }
- }
-
- /**
- * Adds a new Feed to the storage. Feed action will be not buffered. Call to
- * this method forces the index to be written.
- *
- * @param wrapper -
- * the wrapper containing the feed;
- * @throws StorageException -
- * if the feed can not be written
- */
- public void createFeed(StorageFeedWrapper wrapper) throws StorageException {
- this.lock.lock();
- try {
- this.forceWriteDocuments.add(wrapper.getLuceneDocument());
- storageModified();
- } finally {
- this.lock.unlock();
- }
- }
-
- /**
- * Adds a new accountr to the storage. User action will be not buffered. Call to
- * this method forces the index to be written.
- *
- * @param account
- * -the wrapper containig the user to be persisted
- * @throws StorageException -
- * if the user can not be persisted.
- */
- public void createAccount(StorageAccountWrapper account) throws StorageException {
- this.lock.lock();
- try {
- this.forceWriteDocuments.add(account.getLuceneDocument());
- storageModified();
- } finally {
- this.lock.unlock();
- }
- }
-
- /**
- * Deletes the user with the given username. User action will be not
- * buffered. Call to this method forces the index to be written.
- *
- * @param accountName -
- * the user to be deleted
- * @throws StorageException -
- * If the user could not be deleted
- */
- public void deleteAccount(String accountName) throws StorageException {
- this.lock.lock();
- try {
- //TODO delete all feeds and entries of this account
- this.forceWriteTerms.add(new Term(
- StorageAccountWrapper.FIELD_ACCOUNTNAME, accountName));
- storageModified();
- } finally {
- this.lock.unlock();
- }
- }
-
- /**
- * User action will be not buffered. Call to this method forces the index to
- * be written.
- *
- * @param user
- * -the wrapper containig the user to be persisted
- * @throws StorageException -
- * if the user can not be persisted.
- */
- public void updateAccount(final StorageAccountWrapper user)
- throws StorageException {
- this.lock.lock();
- try {
- this.forceWriteTerms.add(new Term(
- StorageAccountWrapper.FIELD_ACCOUNTNAME, user.getUser()
- .getName()));
- this.forceWriteDocuments.add(user.getLuceneDocument());
- storageModified();
- } finally {
- this.lock.unlock();
- }
- }
-
- /**
- * Feed action will be not buffered. Call to this method forces the index to
- * be written.
- *
- * @param wrapper -
- * the wrapper containig the feed
- * @throws StorageException -
- * if the feed can not be persisted
- */
- public void updateFeed(final StorageFeedWrapper wrapper)
- throws StorageException {
- this.lock.lock();
- try {
- this.forceWriteTerms.add(new Term(StorageFeedWrapper.FIELD_FEED_ID,
- wrapper.getFeed().getId()));
- this.forceWriteDocuments.add(wrapper.getLuceneDocument());
- storageModified();
- } finally {
- this.lock.unlock();
- }
- }
-
- /**
- * Deletes the feed with the given feed id Feed action will be not buffered.
- * Call to this method forces the index to be written.
- * All entries referencing the given feed id will be deleted as well!
- * @param feedId -
- * the id of the feed to delete
- * @throws StorageException -
- * if the feed can not be deleted
- */
- public void deleteFeed(final String feedId) throws StorageException {
- this.lock.lock();
- try {
- this.deletedDocumentQueue.add(new Term(StorageEntryWrapper.FIELD_FEED_REFERENCE,feedId));
- this.forceWriteTerms.add(new Term(StorageFeedWrapper.FIELD_FEED_ID,
- feedId));
-
- storageModified();
- } finally {
- this.lock.unlock();
- }
- }
-
- private void storageModified() throws StorageException {
- if(this.isClosed.get())
- throw new IllegalStateException("StorageModifier is already closed");
-
- try {
- if(this.isClosed.get())
- throw new IllegalStateException("StorageModifier is already closed");
- incrementCounter();
- if (this.persistFactor > this.modifiedCounter
- && this.forceWriteDocuments.size() <= 0
- && this.forceWriteTerms.size() <= 0)
- return;
-
- if (LOG.isInfoEnabled())
- LOG.info("Storage modified for " + this.modifiedCounter
- + " times. Write Persistent index");
- writePersistentIndex((this.optimizeCounter >= this.optimizeInterval));
- requestNewIndexModifier();
-
- this.modifiedCounter = 0;
- } catch (IOException e) {
-
- LOG.error("Writing persistent index failed - Recovering", e);
- throw new StorageException("could not write to storage index -- "+e.getMessage(),e);
- }
-
- }
-
- /**
- * Persists all changes imediately
- * @throws IOException -- if an IO Exception occures
- */
- public void forceWrite() throws IOException {
- if(this.isClosed.get())
- throw new IllegalStateException("StorageModifier is already closed");
- this.lock.lock();
- try {
- if (LOG.isInfoEnabled())
- LOG.info("ForceWrite called -- current modifiedCounter: "
- + this.modifiedCounter + " - persisting changes");
- writePersistentIndex(true);
- requestNewIndexModifier();
- this.modifiedCounter = 0;
- } finally {
- this.lock.unlock();
- }
- }
-
- private void requestNewIndexModifier() throws IOException {
- this.controller.registerNewRecoverWriter();
- this.controller.registerNewStorageQuery();
- this.buffer = this.controller.releaseNewStorageBuffer();
- this.modifier = this.controller.createIndexModifier();
- }
-
- private void writePersistentIndex(final boolean optimize)
- throws IOException {
- try {
-
- /*
- * first delete all updated documents
- */
- for (Term entryIdTerm : this.deletedForUpdateDocumentQueue) {
- this.modifier.deleteDocuments(entryIdTerm);
- }
-
- for (Term term : this.forceWriteTerms) {
- this.modifier.deleteDocuments(term);
- }
- /*
- * add all documents
- */
- Collection documents = this.documentMap.values();
- for (Document doc : documents) {
- this.modifier.addDocument(doc);
- }
- /*
- * write all users or feeds
- */
- for (Document docs : this.forceWriteDocuments) {
- this.modifier.addDocument(docs);
- }
-
- /*
- * delete all documents marked as deleted. As the DocumentIDs are
- * unique the document marked as deleted must not persist after the
- * index has been written. In the case of an update of a document
- * and a previous delete the concurrency component will not allow an
- * update. new inserted entries can not be deleted accidently-
- */
- for (Term entryIdTerm : this.deletedDocumentQueue) {
- this.modifier.deleteDocuments(entryIdTerm);
- }
- this.modifier.flush();
- if (optimize) {
- if (LOG.isInfoEnabled())
- LOG.info("Optimizing index -- optimize interval "
- + this.optimizeInterval);
- this.modifier.optimize();
- }
-
- } finally {
- if (optimize)
- this.optimizeCounter = 0;
- this.modifier.close();
- this.deletedForUpdateDocumentQueue.clear();
- this.deletedDocumentQueue.clear();
- this.documentMap.clear();
- this.forceWriteDocuments.clear();
- this.forceWriteTerms.clear();
- }
- }
-
- protected void close() throws IOException {
- if(this.isClosed.get())
- throw new IllegalStateException("StorageModifier is already closed");
- this.lock.lock();
- try {
- if(this.isClosed.get())
- throw new IllegalStateException("StorageModifier is already closed");
- this.isClosed.set(true);
- if (LOG.isInfoEnabled())
- LOG.info("ForceWrite called -- current modifiedCounter: "
- + this.modifiedCounter + " - persisting changes");
-
- writePersistentIndex(true);
- this.modifiedCounter = 0;
- } finally {
- this.lock.unlock();
- }
- }
-
- private void incrementCounter() {
- this.optimizeCounter++;
- this.modifiedCounter++;
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/StorageQuery.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/StorageQuery.java
deleted file mode 100644
index 00b327e9f22..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/StorageQuery.java
+++ /dev/null
@@ -1,546 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.storage.lucenestorage;
-
-import java.io.IOException;
-import java.io.Reader;
-import java.io.StringReader;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.gdata.data.GDataAccount;
-import org.apache.lucene.gdata.server.GDataEntityBuilder;
-import org.apache.lucene.gdata.server.registry.ProvidedService;
-import org.apache.lucene.gdata.storage.StorageException;
-import org.apache.lucene.gdata.utils.ModifiedEntryFilter;
-import org.apache.lucene.index.Term;
-import org.apache.lucene.search.BooleanClause;
-import org.apache.lucene.search.BooleanQuery;
-import org.apache.lucene.search.Hit;
-import org.apache.lucene.search.Hits;
-import org.apache.lucene.search.Searcher;
-import org.apache.lucene.search.Sort;
-import org.apache.lucene.search.SortField;
-import org.apache.lucene.search.TermQuery;
-import org.apache.lucene.search.BooleanClause.Occur;
-
-import com.google.gdata.data.BaseEntry;
-import com.google.gdata.data.BaseFeed;
-import com.google.gdata.data.DateTime;
-import com.google.gdata.util.ParseException;
-
-/**
- * StorageQuery wraps a Lucene {@link org.apache.lucene.search.IndexSearcher}
- * and a {@link org.apache.lucene.gdata.storage.lucenestorage.StorageBuffer} to
- * perform all request on the lucene storage. The wrapped components are thread -
- * safe.
- *
- * An instance of this class will serve all client requests. To obtain the
- * current instance of the {@link StorageQuery} the method
- * {@link org.apache.lucene.gdata.storage.lucenestorage.StorageCoreController#getStorageQuery()}
- * has to be invoked. This method will release the current StorageQuery.
- *
- *
- * @see org.apache.lucene.search.IndexSearcher
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageCoreController
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageBuffer
- *
- * @author Simon Willnauer
- *
- */
-public class StorageQuery {
- private static final Log LOG = LogFactory.getLog(StorageQuery.class);
-
- private final StorageBuffer buffer;
-
- private final Searcher searcher;
-
- /*
- * Sort the result by timestamp desc
- */
- private final Sort timeStampSort = new Sort(new SortField(
- StorageEntryWrapper.FIELD_TIMESTAMP, SortField.STRING, true));
-
- /**
- * Creates a new StorageQuery
- *
- * @param buffer -
- * the buffer instance to get the buffered inserts, updates from.
- * @param searcher -
- * the searcher instance to use to query the storage index.
- *
- *
- */
- protected StorageQuery(final StorageBuffer buffer, final Searcher searcher) {
-
- this.buffer = buffer;
- this.searcher = searcher;
-
- }
-
- private Hits storageQuery(List entryId) throws IOException {
- BooleanQuery query = new BooleanQuery();
- /*
- * query the index using a BooleanQuery
- */
- for (String id : entryId) {
- TermQuery termQuery = new TermQuery(new Term(
- StorageEntryWrapper.FIELD_ENTRY_ID, id));
- // use an OR query
- query.add(new BooleanClause(termQuery, Occur.SHOULD));
- }
-
- return this.searcher.search(query, new ModifiedEntryFilter(this.buffer
- .getExculdList(),StorageEntryWrapper.FIELD_ENTRY_ID));
- }
-
- /*
- * query the storage index for a entire feed.
- */
- private Hits storageFeedQuery(final String feedId, final Sort sort)
- throws IOException {
- TermQuery query = new TermQuery(new Term(
- StorageEntryWrapper.FIELD_FEED_REFERENCE, feedId));
- return this.searcher.search(query, new ModifiedEntryFilter(this.buffer
- .getExculdList(),StorageEntryWrapper.FIELD_ENTRY_ID), sort);
-
- }
-
- /*
- * get a single entry
- */
- private Hits storageQuery(String entryId) throws IOException {
- TermQuery termQuery = new TermQuery(new Term(
- StorageEntryWrapper.FIELD_ENTRY_ID, entryId));
- /*
- * Filter entries inside the buffer, buffered entries might contain
- * deleted entries. These entries must be found!!
- */
- return this.searcher.search(termQuery, new ModifiedEntryFilter(
- this.buffer.getExculdList(),StorageEntryWrapper.FIELD_ENTRY_ID));
-
- }
-
- /**
- * This method fetches the latest feed entries from the storage. Feed
- * usually requested via a search query or as a simple query to the REST
- * interface.
- *
- * The REST interface requests all the entries from a Storage. The Storage
- * retrieves the entries corresponding to the parameters specified. This
- * method first requests the latest entries or updated entries from the
- * {@link StorageBuffer}. If the buffer already contains enough entries
- * for the the specified result count the entries will be returned. If not,
- * the underlying lucene index will be searcher for all documents of the
- * specified feed sorted by storing timestamp desc.
- *
- *
- * The entries will be searched in a feed context specified by the given
- * feed ID
- *
- *
- *
- * @param feedId -
- * the requested feed, this id will be used to retrieve the
- * entries.
- * @param resultCount -
- * how many entries are requested
- * @param startIndex -
- * the offset of the entry to start from.
- * @param config -
- * the FeedInstanceConfiguration containing extension profile used
- * to create the entry instances
- * @return - an ordered list of {@link BaseEntry} objects, or an empty list
- * if no entries could be found
- * @throws IOException -
- * if the index could not be queries or the entries could not be
- * build
- * @throws ParseException -
- * if an entry could not be parsed while building it from the
- * Lucene Document.
- */
- // TODO check input parameter
- @SuppressWarnings("unchecked")
- public BaseFeed getLatestFeedQuery(final String feedId,
- final int resultCount, final int startIndex,
- final ProvidedService config) throws IOException, ParseException {
- DateTime updated = null;
- Hits feedHits = storageFeedQuery(feedId);
- if (feedHits.length() == 0)
- return null;
- BaseFeed retVal = buildFeedFromLuceneDocument(feedHits.doc(0), config);
-
- List returnList = new ArrayList(resultCount);
- List bufferedWrapperList = this.buffer
- .getSortedEntries(feedId);
- int alreadyAdded = 0;
- int offset = startIndex - 1;
-
- if (bufferedWrapperList != null
- && bufferedWrapperList.size() >= startIndex) {
- updated = bufferedWrapperList.get(0).getEntry().getUpdated();
- for (; alreadyAdded < resultCount; alreadyAdded++) {
- if ((bufferedWrapperList.size() - offset) > 0) {
- StorageEntryWrapper wrappedEntry = bufferedWrapperList
- .get(offset++);
- returnList.add(wrappedEntry.getEntry());
- } else
- break;
- }
- // reset offset
- offset = startIndex - 1;
- if (alreadyAdded == resultCount) {
- retVal.getEntries().addAll(returnList);
- retVal.setUpdated(updated);
- return retVal;
- }
- } else {
- /*
- * if the buffer size is less than the start index the buffer size must
- * be considered. Sublists would not be a repeatable read part of
- * the whole list
- */
- if (bufferedWrapperList != null)
- offset = startIndex - 1 - bufferedWrapperList.size();
- }
-
- Hits hits = storageFeedQuery(feedId, this.timeStampSort);
- if (hits.length() > 0) {
-
- for (; (offset < hits.length()) && (alreadyAdded < resultCount); offset++, alreadyAdded++) {
- Document doc = hits.doc(offset);
- BaseEntry entry = buildEntryFromLuceneDocument(doc, config);
- returnList.add(entry);
- }
- if (updated == null) {
- try {
- long updatedTimeStamp = Long.parseLong(hits.doc(0).get(
- StorageEntryWrapper.FIELD_TIMESTAMP));
- updated = new DateTime(updatedTimeStamp);
- } catch (Exception e) {
- LOG.warn("could not create DateTime -- " + e.getMessage(),
- e);
- updated = buildEntryFromLuceneDocument(hits.doc(0), config)
- .getUpdated();
- }
- }
- }
- retVal.setUpdated(updated);
- retVal.getEntries().addAll(returnList);
- return retVal;
- }
-
- /**
- * This method retrieves a single entry from the storage. If the
- * {@link StorageBuffer} does not contain the requested entry the
- * underlying storage index will be searched.
- *
- * The Entry will be searched in a feed context specified by the given feed
- * ID
- *
- *
- * @param entryId -
- * the entry to fetch
- * @param feedId -
- * the feed id e.g. feed context
- * @param config -
- * the FeedInstanceConfiguration containing extension profile used
- * to create the entry instances
- * @return - the requested {@link BaseEntry} or null if the
- * entry can not be found
- * @throws IOException -
- * if the index could not be queries or the entries could not be
- * build
- * @throws ParseException -
- * if an entry could not be parsed while building it from the
- * Lucene Document.
- */
- public BaseEntry singleEntryQuery(final String entryId,
- final String feedId, final ProvidedService config)
- throws IOException, ParseException {
- StorageEntryWrapper wrapper = this.buffer.getEntry(entryId, feedId);
-
- if (wrapper == null) {
- Hits hits = storageQuery(entryId);
- if (hits.length() <= 0)
- return null;
- Document doc = hits.doc(0);
-
- return buildEntryFromLuceneDocument(doc, config);
- }
- /*
- * ServerBaseEntry enables the dynamic element of the entry like the
- * links to be dynamic. BufferedEntries will be reused until they are
- * written.
- */
- return wrapper.getEntry();
-
- }
-
- /**
- * Fetches the requested entries from the storage. The given list contains
- * entry id's to be looked up in the storage. First the {@link StorageBuffer}
- * will be queried for the entry id's. If not all of the entries remain in
- * the buffer the underlying lucene index will be searched. The entries are
- * not guaranteed to be in the same order as they are in the given id list.
- * Entry ID's not found in the index or the buffer will be omitted.
- *
- * The entries will be searched in a feed context specified by the given
- * feed ID
- *
- *
- * @param entryIds -
- * the entry id's to fetch.
- * @param feedId -
- * the feed id e.g. feed context.
- * @param config -
- * the FeedInstanceConfiguration containing extension profile used
- * to create the entry instances
- *
- * @return - the list of entries corresponding to the given entry id list.
- * @throws IOException -
- * if the index could not be queries or the entries could not be
- * build
- * @throws ParseException -
- * if an entry could not be parsed while building it from the
- * Lucene Document.
- */
- public List entryQuery(List entryIds,
- final String feedId, final ProvidedService config)
- throws IOException, ParseException {
- List resultList = new ArrayList(entryIds.size());
- List searchList = new ArrayList(entryIds.size());
- for (String entry : entryIds) {
-
- StorageEntryWrapper bufferedEntry = this.buffer.getEntry(entry,
- feedId);
- if (bufferedEntry != null) {
- resultList.add(bufferedEntry.getEntry());
- } else
- searchList.add(entry);
- }
- if (searchList.isEmpty())
- return resultList;
-
- Hits hits = storageQuery(searchList);
- Iterator hitIterator = hits.iterator();
- while (hitIterator.hasNext()) {
- Hit hit = (Hit) hitIterator.next();
- Document doc = hit.getDocument();
- BaseEntry entry = buildEntryFromLuceneDocument(doc, config);
- resultList.add(entry);
-
- }
-
- return resultList;
-
- }
-
- private BaseEntry buildEntryFromLuceneDocument(final Document doc,
- final ProvidedService config) throws ParseException, IOException {
- Reader reader = new StringReader(doc.getField(StorageEntryWrapper.FIELD_CONTENT).stringValue());
- BaseEntry entry = GDataEntityBuilder.buildEntry(reader, config);
- entry.setVersionId(doc.getField(StorageEntryWrapper.FIELD_VERSION).stringValue());
- return entry;
-
- }
-
- private BaseFeed buildFeedFromLuceneDocument(final Document doc,
- final ProvidedService config) throws ParseException, IOException {
- Reader reader = new StringReader(doc.getField(StorageFeedWrapper.FIELD_CONTENT).stringValue());
- return GDataEntityBuilder.buildFeed(reader, config);
-
- }
-
- /**
- * Queries the storage for an user instance
- *
- * @param username -
- * the username (primary key)
- * @return - the user instance if found or null if not exists
- * @throws IOException -
- * if the storage can not be accessed.
- */
- public GDataAccount getUser(final String username) throws IOException {
- if (username == null)
- return null;
- TermQuery query = new TermQuery(new Term(
- StorageAccountWrapper.FIELD_ACCOUNTNAME, username));
- Hits h = this.searcher.search(query);
- if (h.length() == 0)
- return null;
- return StorageAccountWrapper.buildEntity(h.doc(0));
- }
-
- /**
- * Closes all resources used in the {@link StorageQuery}. The instance can
- * not be reused after invoking this method.
- *
- * @throws IOException -
- * if the resources can not be closed
- */
- public void close() throws IOException {
- this.searcher.close();
- this.buffer.close();
- }
-
- /**
- * Checks whether a feed for the given feedID is stored
- *
- * @param feedId -
- * the feed ID
- * @return true if and only if a feed is stored for the
- * provided feed ID, false if no feed for the given
- * id is stored
- * @throws IOException
- */
- public boolean isFeedStored(String feedId) throws IOException {
- Hits h = storageFeedQuery(feedId);
- return (h.length() > 0);
-
- }
-
- /**
- * Looks up the feed type for the given feed ID
- *
- * @param feedID -
- * the feed ID
- * @return - the feed type
- * @throws IOException -
- * if the storage can not be accessed
- */
- public String getService(String feedID) throws IOException {
- Hits hits = storageFeedQuery(feedID);
- if (hits.length() <= 0)
- return null;
- Document doc = hits.doc(0);
- String feedType = doc.get(StorageFeedWrapper.FIELD_SERVICE_ID);
- return feedType;
- }
-
- private Hits storageFeedQuery(String feedId) throws IOException {
- TermQuery query = new TermQuery(new Term(
- StorageFeedWrapper.FIELD_FEED_ID, feedId));
- return this.searcher.search(query);
- }
-
- /**
- * Looks up the account reference for the given feed id
- *
- * @param feedId -
- * id of the feed
- * @return - the name of the account associated with the feed for the given
- * feed id, or null if the feed is not stored
- * @throws IOException -
- * if the storage can not be accessed
- */
- public String getAccountNameForFeedId(String feedId) throws IOException {
- Hits h = storageFeedQuery(feedId);
- if (h.length() == 0)
- return null;
- Document doc = h.doc(0);
- return doc.get(StorageFeedWrapper.FIELD_ACCOUNTREFERENCE);
-
- }
-
- protected long getEntryLastModified(final String entryId,
- final String feedId) throws IOException, StorageException {
- StorageEntryWrapper wrapper = this.buffer.getEntry(entryId, feedId);
- if (wrapper != null)
- return wrapper.getTimestamp();
-
- Hits h = storageQuery(entryId);
- if (h.length() > 0)
- try {
- return Long.parseLong(h.doc(0).get(
- StorageEntryWrapper.FIELD_TIMESTAMP));
- } catch (Exception e) {
- LOG.warn("Can not parse timestamp from entry -- "
- + h.doc(0).get(StorageEntryWrapper.FIELD_TIMESTAMP));
- }
- else
- throw new StorageException("Entry not found");
- return 0;
-
- }
-
- protected long getFeedLastModified(final String feedId) throws IOException {
- Long bufferedTime = this.buffer.getFeedLastModified(feedId);
- if (bufferedTime != null)
- return bufferedTime;
- Hits entryHits = storageFeedQuery(feedId, this.timeStampSort);
- if (entryHits.length() > 0) {
- try {
- return Long.parseLong(entryHits.doc(0).getField(
- StorageEntryWrapper.FIELD_TIMESTAMP).stringValue());
- } catch (Exception e) {
- LOG.warn("Can not parse timestamp from entry -- "
- + entryHits.doc(0).get(
- StorageEntryWrapper.FIELD_TIMESTAMP));
- }
- }
- return 0;
-
- }
-
- protected boolean isEntryStored(String entryId, String feedId)
- throws IOException {
- if (LOG.isDebugEnabled())
- LOG.debug("Checking isEntryStored for entryid " + entryId
- + " feedid: " + feedId);
- if (this.buffer.getEntry(entryId, feedId) != null)
- return true;
-
- Hits h = storageQuery(entryId);
- if (h.length() > 0)
- return true;
- return false;
- }
-
- protected boolean checkEntryVersion(String id, String feedId, int version)
- throws IOException {
- if (LOG.isDebugEnabled())
- LOG.debug("Checking entry version for entryid " + id + " feedid: "
- + feedId + " version: " + version);
- StorageEntryWrapper wrapper = this.buffer.getEntry(id, feedId);
-
- if (wrapper != null)
- return wrapper.getVersion() == version;
-
- Hits h = storageQuery(id);
- if (h.length() < 1)
- return false;
- Document doc = h.doc(0);
- String fieldValue = null;
- try {
- fieldValue = doc.getField(StorageEntryWrapper.FIELD_VERSION)
- .stringValue();
- int storedVersion = Integer.parseInt(fieldValue);
- if(LOG.isDebugEnabled())
- LOG.debug("StoredEntry has version "+storedVersion +" return compare result");
- return storedVersion == version;
- } catch (Exception e) {
- LOG.error("Entry has no parable Version id or field is not set -- "
- + fieldValue);
- }
- return false;
- }
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/StorageWrapper.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/StorageWrapper.java
deleted file mode 100644
index f3296db4c59..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/StorageWrapper.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.storage.lucenestorage;
-
-import org.apache.lucene.document.Document;
-
-/**
- * A interface to be implemented by StorageWrapper sub classes to
- * provide a lucene document for each entity wrapped.
- *
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageEntryWrapper
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageAccountWrapper
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageFeedWrapper
- * @author Simon Willnauer
- *
- */
-public interface StorageWrapper {
- /**
- * Returns a Lucene document representing the Wrapped Entry
- *
- * @return a Lucene Document
- */
- public abstract Document getLuceneDocument();
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/configuration/StorageConfigurator.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/configuration/StorageConfigurator.java
deleted file mode 100644
index 838525fbd42..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/configuration/StorageConfigurator.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.storage.lucenestorage.configuration;
-
-import java.io.InputStream;
-import java.util.Properties;
-
-/**
- * This clas loads the Storage configuration file and sets all properties. If
- * the properties can not be loaded an {@link java.lang.Error} will be thrown.
- * The configuration file lucenestorage.properties.xml should be available in the classpath.
- *
- * @author Simon Willnauer
- *
- */
-public class StorageConfigurator {
- private final int storageBufferSize;
-
- private final int storagepersistFactor;
-
- private final String storageDirectory;
-
- private final boolean keepRecoveredFiles;
-
- private final boolean recover;
-
- private final boolean ramDirectory;
- private static StorageConfigurator INSTANCE = null;
-
- private final int indexOptimizeInterval;
-
- private StorageConfigurator() {
- InputStream stream = StorageConfigurator.class
- .getResourceAsStream("/lucenestorage.properties.xml");
- Properties properties = new Properties();
- try {
- properties.loadFromXML(stream);
-
- } catch (Exception e) {
- throw new StorageConfigurationError("Could not load properties", e);
- }
- this.storageBufferSize = Integer.parseInt(properties
- .getProperty("gdata.server.storage.lucene.buffersize"));
- this.storagepersistFactor = Integer.parseInt(properties
- .getProperty("gdata.server.storage.lucene.persistFactor"));
- this.recover = Boolean.parseBoolean(properties
- .getProperty("gdata.server.storage.lucene.recover"));
- this.keepRecoveredFiles = Boolean.parseBoolean(properties
- .getProperty("gdata.server.storage.lucene.recover.keepFiles"));
- this.storageDirectory = properties
- .getProperty("gdata.server.storage.lucene.directory");
- this.indexOptimizeInterval = Integer.parseInt(properties
- .getProperty("gdata.server.storage.lucene.optimizeInterval"));
- this.ramDirectory = Boolean.parseBoolean(properties
- .getProperty("gdata.server.storage.lucene.directory.ramDirectory"));
- }
-
- /**
- * @return - the storage configurator
- */
- public static synchronized StorageConfigurator getStorageConfigurator() {
- if (INSTANCE == null)
- INSTANCE = new StorageConfigurator();
- return INSTANCE;
- }
-
- /**
- * Keep recovering files. -- will use a lot of disk space
- *
- * @return true if the storage is supposed to keep the
- * recovering files.
- */
- public boolean isKeepRecoveredFiles() {
- return this.keepRecoveredFiles;
- }
-
- /**
- * @return true if the storage is supposed to use recovering.
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageModifier
- */
- public boolean isRecover() {
- return this.recover;
- }
-
- /**
- * @return - the configured storage buffer size
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageBuffer
- */
- public int getStorageBufferSize() {
- return this.storageBufferSize;
- }
-
- /**
- * @return - the configured storage directory
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageModifier
- */
- public String getStorageDirectory() {
- return this.storageDirectory;
- }
-
- /**
- * @return - the persist factor
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageModifier
- */
- public int getStoragepersistFactor() {
- return this.storagepersistFactor;
- }
-
- protected class StorageConfigurationError extends Error {
-
- /**
- *
- */
- private static final long serialVersionUID = 5261674332036111464L;
-
- protected StorageConfigurationError(String arg0, Throwable arg1) {
- super(arg0, arg1);
-
- }
-
- }
-
- /**
- * @return - the optimize interval
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageModifier
- */
- public int getIndexOptimizeInterval() {
-
- return this.indexOptimizeInterval;
- }
-
- /**
- * @return Returns the ramDirectory.
- */
- public boolean isRamDirectory() {
- return this.ramDirectory;
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/configuration/package.html b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/configuration/package.html
deleted file mode 100644
index e3c84b2f847..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/configuration/package.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-Lucene Storage utils
-
-
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/package.html b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/package.html
deleted file mode 100644
index 0f8f37515c5..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/package.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-Lucene storage implementation
-
-
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/recover/RecoverController.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/recover/RecoverController.java
deleted file mode 100644
index 94f3314b3b0..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/recover/RecoverController.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.storage.lucenestorage.recover;
-
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.Writer;
-import java.util.List;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.storage.StorageException;
-import org.apache.lucene.gdata.storage.lucenestorage.StorageEntryWrapper;
-import org.apache.lucene.gdata.storage.lucenestorage.StorageModifier;
-import org.apache.lucene.gdata.storage.lucenestorage.StorageEntryWrapper.StorageOperation;
-
-
-/**
- * @author Simon Willnauer
- *
- */
-public class RecoverController {
- private static final Log LOG = LogFactory.getLog(RecoverController.class);
- private final File recoverDirectory;
-
- private static final String FILE_SUFFIX = ".rec";
-
- private File currentRecoverFile;
-
- private RecoverWriter writer;
-
- private Writer fileWriter;
-
- private BufferedReader fileReader;
-
- private RecoverReader reader;
-
- private Lock lock = new ReentrantLock();
-
- private final boolean recover;
- private final boolean keepRecoverFiles;
-
- /**
- * @param recoverDirectory
- * @param recover
- * @param keepRecoverFiles
- */
- public RecoverController(final File recoverDirectory, boolean recover, boolean keepRecoverFiles) {
- if (recoverDirectory == null)
- throw new IllegalArgumentException("directory must not be null");
- if(!recoverDirectory.exists())
- recoverDirectory.mkdirs();
- if (!recoverDirectory.isDirectory())
- throw new IllegalStateException("the given File is not a directory -- "+recoverDirectory);
- this.recover = recover;
- this.keepRecoverFiles = keepRecoverFiles;
- this.recoverDirectory = recoverDirectory;
-
- }
-
- /**
- * @param wrapper
- * @throws RecoverException
- */
-public void storageModified(StorageEntryWrapper wrapper)
- throws RecoverException {
- // prevent deadlock either recovering or writing
- if(this.recover){
- LOG.warn("Can't write entry, Recovercontroller is initialized in recover mode");
- return;
- }
- this.lock.lock();
- try {
-
- this.writer.writeEntry(wrapper, this.fileWriter);
- } catch (Exception e) {
- LOG.error("Writing entry failed -- create new recover file",e);
- throw new RecoverException(
- "Writing entry failed -- create new recover file",e);
-
- } finally {
- this.lock.unlock();
- }
- }
-
- /**
- * @param modifier
- */
- public void recoverEntries(final StorageModifier modifier){
- // prevent deadlock either recovering or writing
- if(!this.recover){
- LOG.warn("Can't recover entries, Recovercontroller is initialized in write mode");
- return;
- }
- this.lock.lock();
- try{
- this.reader = new RecoverReader();
- File[] files = this.recoverDirectory.listFiles();
- for (int i = 0; i < files.length; i++) {
- if(!files[i].isDirectory()){
- try{
- LOG.info("Recover file -- "+files[i]);
- this.fileReader = new BufferedReader(new FileReader(files[i]));
- List entryList = this.reader.recoverEntries(this.fileReader);
- if(entryList.size() == 0)
- continue;
- storeEntries(entryList,modifier);
- this.fileReader.close();
- if(!this.keepRecoverFiles){
- LOG.info("Recovering file -- "+files[i]+" successful, delete file");
- files[i].delete();
- }
- }catch (StorageException e) {
- LOG.error("Can't store recover entries for file: "+files[i].getName()+" -- keep file "+e.getMessage(),e);
- }catch (IOException e) {
- LOG.error("Can't recover entries for file: "+files[i].getName()+" -- keep file",e);
- }
- }
- }
-
- }finally{
- this.lock.unlock();
- }
- }
-
- protected void storeEntries(final List entries, final StorageModifier modifier) throws StorageException, IOException{
- for (StorageEntryWrapper wrapper : entries) {
- if(wrapper.getOperation() == StorageOperation.DELETE)
- modifier.deleteEntry(wrapper);
- else if(wrapper.getOperation() == StorageOperation.INSERT)
- modifier.insertEntry(wrapper);
- else if(wrapper.getOperation() == StorageOperation.UPDATE)
- modifier.updateEntry(wrapper);
- modifier.forceWrite();
-
- }
- }
-
- /**
- * @throws IOException
- */
- public synchronized void initialize() throws IOException {
- if(this.recover)
- return;
- String filename = System.currentTimeMillis() + FILE_SUFFIX;
- this.currentRecoverFile = new File(this.recoverDirectory, filename);
- this.writer = new RecoverWriter();
- this.fileWriter = new BufferedWriter(new FileWriter(
- this.currentRecoverFile));
-
- }
-
- /**
- * @throws RecoverException
- */
- public synchronized void destroy() throws RecoverException {
- if (this.fileWriter != null) {
- this.lock.lock();
- try {
-
- this.fileWriter.flush();
- this.fileWriter.close();
- if(!this.keepRecoverFiles && this.currentRecoverFile != null)
- this.currentRecoverFile.delete();
- } catch (IOException e) {
- throw new RecoverException("Can't close recover writer ", e);
- } finally {
- this.lock.unlock();
- }
- }
- }
-
- /**
- * @return true if the RecoverController is initialized in recover mode, otherwise false
- */
- public boolean isRecovering() {
-
- return this.recover;
- }
-
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/recover/RecoverException.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/recover/RecoverException.java
deleted file mode 100644
index 90acff5d6f9..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/recover/RecoverException.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.storage.lucenestorage.recover;
-
-import org.apache.lucene.gdata.storage.StorageException;
-
-/**
- * @author Simon Willnauer
- *
- */
-public class RecoverException extends StorageException {
-
- /**
- *
- */
- private static final long serialVersionUID = -1862309520257024464L;
-
- /**
- *
- */
- public RecoverException() {
- super();
- // TODO Auto-generated constructor stub
- }
-
- /**
- * @param arg0
- */
- public RecoverException(String arg0) {
- super(arg0);
- // TODO Auto-generated constructor stub
- }
-
- /**
- * @param arg0
- * @param arg1
- */
- public RecoverException(String arg0, Throwable arg1) {
- super(arg0, arg1);
- // TODO Auto-generated constructor stub
- }
-
- /**
- * @param arg0
- */
- public RecoverException(Throwable arg0) {
- super(arg0);
- // TODO Auto-generated constructor stub
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/recover/RecoverReader.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/recover/RecoverReader.java
deleted file mode 100644
index cc47b6edd4b..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/recover/RecoverReader.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.storage.lucenestorage.recover;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.StringReader;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.server.GDataEntityBuilder;
-import org.apache.lucene.gdata.server.registry.GDataServerRegistry;
-import org.apache.lucene.gdata.server.registry.ProvidedService;
-import org.apache.lucene.gdata.storage.lucenestorage.StorageEntryWrapper;
-import org.apache.lucene.gdata.storage.lucenestorage.StorageEntryWrapper.StorageOperation;
-
-import com.google.gdata.data.BaseEntry;
-import com.google.gdata.util.ParseException;
-
-/**
- * Recovers the written object from the harddisc
- * @author Simon Willnauer
- *
- */
-public class RecoverReader {
-
- private static final Log LOG = LogFactory.getLog(RecoverReader.class);
- private RecoverStrategy strategy;
- protected RecoverReader(){
- this.strategy = new RecoverStrategy();
- }
- /**
- * @param reader
- * @throws IOException
- */
- public List recoverEntries(final BufferedReader reader) throws IOException{
- List actionList = new ArrayList();
- this.strategy = new RecoverStrategy();
- String input = null;
- String metaData = null;
- String entryData = null;
- while((input=reader.readLine())!= null){
- if(metaData == null){
- metaData = input;
- continue;
- }
- if(input.equals(RecoverWriter.STORAGE_OPERATION_SEPARATOR)){
- try{
- actionList.add(this.strategy.recover(metaData,entryData));
- }catch (RecoverException e) {
- LOG.error("Skipping recover entry for metadata: "+metaData,e);
- }
- this.strategy = new RecoverStrategy();
- metaData = null;
- entryData = null;
- continue;
- }
- if(entryData == null){
- entryData = input;
- }
-
- }
-
-
-
- return actionList;
-
- }
-
-
-
-
-
-
-
-
- private static class RecoverStrategy{
- private StorageOperation operation;
- private ProvidedService config;
- private String feedId;
- private String entryId;
- private long timestamp;
- /**
- * @param metaData
- * @param entry
- * @return
- * @throws RecoverException
- */
- public StorageEntryWrapper recover(String metaData, String entry) throws RecoverException{
- fillMetaData(metaData);
- ServerBaseEntry retVal = null;
- if(entry != null && this.operation == StorageOperation.DELETE)
- throw new RecoverException("Can not recover -- Delete operation has entry part");
- if(entry != null)
- try {
- retVal = new ServerBaseEntry(buildEntry(entry,this.config));
- } catch (Exception e) {
- throw new RecoverException("Exception occured while building entry -- "+e.getMessage(),e);
- }
- else
- retVal = new ServerBaseEntry();
- retVal.setId(this.entryId);
- retVal.setFeedId(this.feedId);
- retVal.setServiceConfig(this.config);
-
- try{
- return new StorageEntryWrapper(retVal,this.operation);
- }catch (IOException e) {
- throw new RecoverException("Can't create StorageWrapper -- "+e.getMessage(),e);
- }
- }
- private void fillMetaData(String recoverString) throws RecoverException{
- StringTokenizer tokenizer = new StringTokenizer(recoverString,RecoverWriter.META_DATA_SEPARATOR);
- String temp = tokenizer.nextToken();
- if(temp.equals("D"))
- this.operation = StorageOperation.DELETE;
- else if(temp.equals("U"))
- this.operation = StorageOperation.UPDATE;
- else if(temp.equals("I"))
- this.operation = StorageOperation.INSERT;
- else
- throw new RecoverException("Illegal metadata --- "+recoverString);
- temp = tokenizer.nextToken();
- if(temp == null)
- throw new RecoverException("Can't recover feed Id -- is null");
- this.feedId = temp;
- temp = tokenizer.nextToken();
- if(temp == null)
- throw new RecoverException("Can't recover entry Id -- is null");
- this.entryId = temp;
-
- temp = tokenizer.nextToken();
- try{
- this.timestamp = Long.parseLong(temp);
- }catch (Exception e) {
- throw new RecoverException("Can't recover timestamp -- is null",e);
- }
-
- if(this.operation != StorageOperation.DELETE){
- temp = tokenizer.nextToken();
- if(temp == null)
- throw new RecoverException("Can't recover service -- is null");
- if(!GDataServerRegistry.getRegistry().isServiceRegistered(temp))
- throw new RecoverException("Service in recover metadata is not registered - "+temp);
- this.config = GDataServerRegistry.getRegistry().getProvidedService(temp);
-
- }
-
- }
-
- private BaseEntry buildEntry(String entry, ProvidedService serviceConfig) throws ParseException, IOException{
- StringReader reader = new StringReader(entry);
- return GDataEntityBuilder.buildEntry(reader,serviceConfig);
- }
- }
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/recover/RecoverWriter.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/recover/RecoverWriter.java
deleted file mode 100644
index a5c78c878a4..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/recover/RecoverWriter.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.storage.lucenestorage.recover;
-
-import java.io.IOException;
-import java.io.Writer;
-
-import org.apache.lucene.gdata.server.registry.ProvidedService;
-import org.apache.lucene.gdata.storage.lucenestorage.StorageEntryWrapper;
-import org.apache.lucene.gdata.storage.lucenestorage.StorageEntryWrapper.StorageOperation;
-
-import com.google.gdata.data.BaseEntry;
-import com.google.gdata.util.common.xml.XmlWriter;
-
-/**
- * Writes the recover objects to the hard disc.
- * @author Simon Willnauer
- *
- */
-public class RecoverWriter {
- protected static final String META_DATA_SEPARATOR = ";";
- protected static final String META_DATA_ENTRY_SEPARATOR = System.getProperty("line.separator");
- protected static final String STORAGE_OPERATION_SEPARATOR = "###########";
- protected static final String OPERATION_DELETE = "D";
- protected static final String OPERATION_UPDATE = "U";
- protected static final String OPERATION_INSERT = "I";
- protected static final String FILE_PREFIX = ".strg";
-
-
-
- /**
- * @param wrapper
- * @throws IOException
- *
- *
- *
- */
- public void writeEntry(StorageEntryWrapper wrapper,Writer writer)throws IOException{
-
- writeOperation(wrapper.getOperation(),writer);
- writeFeedID(wrapper.getFeedId(),writer);
- writeEntryID(wrapper.getEntryId(),writer);
- writeTimeStamp(wrapper.getTimestamp().toString(),writer);
- if(!wrapper.getOperation().equals(StorageOperation.DELETE)){
- writeService(wrapper,writer);
- writer.write(META_DATA_ENTRY_SEPARATOR);
- BaseEntry entry = wrapper.getEntry();
- XmlWriter xmlWriter = new XmlWriter(writer);
- entry.generateAtom(xmlWriter,wrapper.getConfigurator().getExtensionProfile());
- }
- writer.write(META_DATA_ENTRY_SEPARATOR);
- writer.write(STORAGE_OPERATION_SEPARATOR);
- writer.write(META_DATA_ENTRY_SEPARATOR);
- writer.flush();
- }
-
-
-
- private void writeTimeStamp(String timestamp, Writer writer) throws IOException{
- writer.write(timestamp);
- writer.write(META_DATA_SEPARATOR);
- }
- private void writeFeedID(String feedId,Writer writer) throws IOException{
- writer.write(feedId);
- writer.write(META_DATA_SEPARATOR);
- }
- private void writeEntryID(String entryId,Writer writer) throws IOException{
- writer.write(entryId);
- writer.write(META_DATA_SEPARATOR);
- }
-
- private void writeService(StorageEntryWrapper wrapper, Writer writer) throws IOException{
- ProvidedService config = wrapper.getConfigurator();
- writer.write(config.getName());
- writer.write(META_DATA_SEPARATOR);
- }
-
- private void writeOperation(StorageOperation operation, Writer writer) throws IOException{
- if(operation.equals(StorageOperation.INSERT))
- writer.write(OPERATION_INSERT);
- else if (operation.equals(StorageOperation.UPDATE))
- writer.write(OPERATION_UPDATE);
- else if (operation.equals(StorageOperation.DELETE))
- writer.write(OPERATION_DELETE);
- writer.write(META_DATA_SEPARATOR);
- }
-
-
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/recover/package.html b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/recover/package.html
deleted file mode 100644
index 0ba6029c278..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/recover/package.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-Recovering component for the lucene storage
-
-
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/util/ReferenceCounter.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/util/ReferenceCounter.java
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/util/package.html b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/util/package.html
deleted file mode 100644
index 0ed664d3e5e..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/lucenestorage/util/package.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-Storage Configuration
-
-
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/package.html b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/package.html
deleted file mode 100644
index 547ca70f945..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/storage/package.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-Feed / Enty storage
-
-
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/utils/DateFormater.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/utils/DateFormater.java
deleted file mode 100644
index 34dc8564246..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/utils/DateFormater.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.utils;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Locale;
-import java.util.Stack;
-import java.util.TimeZone;
-
-/**
- * This class uses the {@link java.text.SimpleDateFormat} class to format dates
- * into strings according to given date pattern.
- *
- * As the creation of SimpleDateFormat objects is quiet expensive and
- * formating dates is used quiet fequently the objects will be cached and reused
- * in subsequent calls.
- *
- *
- * This implementation is thread safe as it uses {@link java.util.Stack} as a
- * cache
- *
- *
- * @author Simon Willnauer
- *
- */
-public class DateFormater {
- private final Stack objectStack = new Stack();
-
- private static final DateFormater formater = new DateFormater();
-
- /**
- * Date format as it is used in Http Last modified header (Tue, 15 Nov 1994
- * 12:45:26 GMT)
- */
- public final static String HTTP_HEADER_DATE_FORMAT = "EEE, d MMM yyyy HH:mm:ss z";
- /**
- * Date format as it is used in Http Last modified header (Tue, 15 Nov 1994
- * 12:45:26 +0000)
- */
- public final static String HTTP_HEADER_DATE_FORMAT_TIME_OFFSET = "EEE, d MMM yyyy HH:mm:ss Z";
-
- protected DateFormater() {
- super();
- }
-
- /**
- * Formats the given Date into the given date pattern.
- *
- * @param date -
- * the date to format
- * @param format -
- * date pattern
- * @return - the string representation of the given Date
- * according to the given pattern
- */
- public static String formatDate(final Date date, String format) {
- if (date == null || format == null)
- throw new IllegalArgumentException(
- "given parameters must not be null");
- SimpleDateFormat inst = formater.getFormater();
- inst.applyPattern(format);
- try{
- return inst.format(date);
- }finally{
- formater.returnFomater(inst);
- }
- }
- /**
- * Parses the given string into one of the specified formates
- * @param date - the string to parse
- * @param formates - formates
- * @return a {@link Date} instance representing the given string
- * @throws ParseException - if the string can not be parsed
- */
- public static Date parseDate(final String date, final String...formates) throws ParseException{
- for (int i = 0; i < formates.length; i++) {
- try {
- return parseDate(date,formates[i]);
- } catch (ParseException e) {
- //
- }
- }
- throw new ParseException("Unparseable date: "+date,0);
-
- }
-
- /**
- * Parses the given string into the specified formate
- * @param dateString - the string to parse
- * @param pattern - the expected formate
- * @return a {@link Date} instance representing the given string
- * @throws ParseException - if the string can not be parsed
- */
- public static Date parseDate(final String dateString,String pattern) throws ParseException{
- if(dateString == null|| pattern == null)
- throw new IllegalArgumentException(
- "given parameters must not be null");
-
- SimpleDateFormat inst = formater.getFormater();
- try{
- inst.applyPattern(pattern);
- return inst.parse(dateString);
- }finally{
- formater.returnFomater(inst);
- }
-
- }
-
- protected SimpleDateFormat getFormater() {
- if (this.objectStack.empty()) {
- SimpleDateFormat dateFormat = new SimpleDateFormat(DateFormater.HTTP_HEADER_DATE_FORMAT, Locale.ENGLISH);
- dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
- return dateFormat;
- }
- return this.objectStack.pop();
-
- }
-
- protected void returnFomater(final SimpleDateFormat format) {
- if (this.objectStack.size() <= 25)
- this.objectStack.push(format);
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/utils/ModifiedEntryFilter.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/utils/ModifiedEntryFilter.java
deleted file mode 100755
index 5c5e6eeb513..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/utils/ModifiedEntryFilter.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.utils;
-
-import java.io.IOException;
-import java.util.BitSet;
-
-import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.index.Term;
-import org.apache.lucene.index.TermDocs;
-import org.apache.lucene.search.Filter;
-
-/**
- * The {@link ModifiedEntryFilter} filters the given entryIds from the lucene
- * {@link org.apache.lucene.search.Hits} set. This filter is used to prevent the
- * storage from retrieving already deleted or updated entries still remaining in
- * the {@link org.apache.lucene.gdata.storage.lucenestorage.StorageBuffer}.
- *
- * @see org.apache.lucene.search.Filter
- *
- *
- *
- */
-public class ModifiedEntryFilter extends Filter {
- /*
- * implements Serializable
- */
- private static final long serialVersionUID = -1551686287704213591L;
-
- private final String[] entyIds;
- private final String searchField;
- /**
- * Creates a new {@link ModifiedEntryFilter}
- * @param entryIds the entry id's to filter
- * @param field - the field, the id is stored
- *
- */
- public ModifiedEntryFilter(final String[] entryIds,String field) {
- super();
- this.searchField = field;
- this.entyIds = entryIds;
- }
-
- /**
- * @see org.apache.lucene.search.Filter#bits(org.apache.lucene.index.IndexReader)
- */
- @Override
- public BitSet bits(IndexReader reader) throws IOException {
- BitSet bitSet = new BitSet(reader.maxDoc());
- bitSet.flip(0, reader.maxDoc()); // set all documents
- int[] docs = new int[1];
- int[] freq = new int[1];
- for (String id : this.entyIds) {
- if (id != null) {
- TermDocs termDocs = reader.termDocs(new Term(
- this.searchField, id));
- int count = termDocs.read(docs, freq);
- if (count == 1)
- bitSet.flip(docs[0]);
-
- }
- }
-
- return bitSet;
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/utils/Pool.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/utils/Pool.java
deleted file mode 100755
index 5091735573b..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/utils/Pool.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.utils;
-
-/**
- * Basic interface to be implemented by ObjectPool implementations. Pools should
- * provide a constructor with a
- * {@link org.apache.lucene.gdata.utils.PoolObjectFactory} as a mandatory
- * parameter to create and destory the pooled objects.
- *
- * @see org.apache.lucene.gdata.utils.PoolObjectFactory
- *
- *
- * @param -
- * the type of the pooled objects
- *
- */
-public interface Pool {
- /**
- * Return an object from the pool or create one if the pool is empty.
- *
- * @return - a pooled object
- */
- public abstract Type aquire();
-
- /**
- * Adds a previously aquired object to the pool. If the pool has already
- * been closed or if the pool has already reached his size the released
- * object will be destroyed using
- * {@link PoolObjectFactory#destroyInstance(Object)} method.
- *
- * @param type -
- * the previously aquired object
- */
- public abstract void release(final Type type);
-
- /**
- * @return - the defined size of the pool
- */
- public abstract int getSize();
-
- /**
- * @return - the expire time of the objects in the pool if defined
- */
- public abstract long getExpireTime();
-
- /**
- * @return true if and only if the pool uses an expire
- * mechanismn, otherwith false
- */
- public abstract boolean expires();
-
- /**
- * releases all pooled objects using
- * {@link PoolObjectFactory#destroyInstance(Object)} method. The pool can not
- * be reused after this method has been called
- */
- public abstract void destroy();
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/utils/PoolObjectFactory.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/utils/PoolObjectFactory.java
deleted file mode 100755
index e8c5f61ac83..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/utils/PoolObjectFactory.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.utils;
-
-/**
- *
- * This interface enables {@link org.apache.lucene.gdata.utils.Pool} users to
- * build a custom creation and destroy mechanismn for pooled objects.
- * Implementations can use standart creation to prevent the pool from using
- * reflection to create objects of the specific type. This implementation
- * seperates the Pool implementation from the creation or the destruction of a
- * pooled type.
- *
- *
- * The destroy method can be used to close datasource connections or release
- * resources if the object will be removed from the pool
- *
- *
- *
- * @see org.apache.lucene.gdata.utils.Pool
- *
- * @param -
- * the type to be created
- *
- */
-public interface PoolObjectFactory {
-
- /**
- * @return an instance of the specified Type
- */
- public abstract Type getInstance();
-
- /**
- * destroys the given instance
- * @param type - the object to destroy / release all resources
- */
- public abstract void destroyInstance(Type type);
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/utils/ReferenceCounter.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/utils/ReferenceCounter.java
deleted file mode 100755
index 9756f846c4b..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/utils/ReferenceCounter.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.utils;
-
-import java.util.concurrent.atomic.AtomicInteger;
-
-/**
- * A reference counting utility. This is use to keep track of released objects
- * of Type.
- *
- *
- * @param -
- * the type of the object
- *
- */
-public abstract class ReferenceCounter {
- protected final Type resource;
-
- private AtomicInteger refcounter = new AtomicInteger();
-
- /**
- * @param resource -
- * the resource to track
- *
- */
- public ReferenceCounter(Type resource) {
- this.resource = resource;
- }
-
- /**
- *
- * Decrements the reference. If no references remain the
- * {@link ReferenceCounter#close()} method will be invoked;
- */
- public final void decrementRef() {
- /*
- * close if less or equals 0
- */
- if (this.refcounter.decrementAndGet() <= 0)
- close();
- }
-
- /**
- * A custom implementation. Performs an action if no reference remaining
- *
- */
- protected abstract void close();
-
- /**
- * Increments the reference
- *
- * @return the reference object
- */
- public final ReferenceCounter increamentReference() {
- this.refcounter.incrementAndGet();
- return this;
- }
-
- /**
- * @return - the resource to keep track of
- */
- public final Type get() {
- return this.resource;
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/utils/ReflectionUtils.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/utils/ReflectionUtils.java
deleted file mode 100755
index d7819ac8677..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/utils/ReflectionUtils.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.utils;
-
-import java.lang.reflect.Constructor;
-
-/**
- * A collection of static helper methods solve common reflection problems
- *
- *
- *
- */
-public class ReflectionUtils {
-
- /**
- * Check if the given type implements a given super type
- * @param typeToCheck - type supposed to implement an interface
- * @param superType - the interface to be implemented by the type to check
- * @return true if and only if the super type is above in the type hierarchy of the given type, otherwise false
- */
- public static boolean implementsType(Class typeToCheck, Class superType) {
- if(superType == null)
- return false;
- if(!superType.isInterface())
- return false;
- if (typeToCheck == null)
- return false;
- if (typeToCheck.equals(Object.class))
- return false;
- if (typeToCheck.equals(superType))
- return true;
- Class[] interfaces = typeToCheck.getInterfaces();
- for (int i = 0; i < interfaces.length; i++) {
- if (implementsType(interfaces[i], superType))
- return true;
- }
- return implementsType(typeToCheck.getSuperclass(),superType);
-
- }
- /**
- * Check if the given type extends a given super type
- * @param typeToCheck - type supposed to extend an specific type
- * @param superType - the type to be extended by the type to check
- * @return true if and only if the super type is above in the type hierarchy of the given type, otherwise false
- */
- public static boolean extendsType(Class typeToCheck, Class superType) {
- if (typeToCheck == null)
- return false;
- if (typeToCheck.equals(Object.class))
- return false;
- if (typeToCheck.equals(superType))
- return true;
-
- return extendsType(typeToCheck.getSuperclass(),superType);
- }
- /**
- * This method combines the extendsType and implementsType and checks interfaces and classes
- * @param typeToCheck - type supposed to extend / implement an specific type
- * @param superType - the type to be extended / implemented by the type to check
- * @return true if and only if the super type is above in the type hierarchy of the given type, otherwise false
- */
- public static boolean isTypeOf(Class typeToCheck, Class superType){
- return extendsType(typeToCheck,superType)||implementsType(typeToCheck,superType);
- }
-
- /**
- * @param type - the type to check
- * @param parameter - the constructor parameter
- * @return true if and only if the type has a visible constructor with the desired parameters
- */
- public static boolean hasDesiredConstructor(Class type, Class[] parameter){
- try{
- return type.getConstructor(parameter) != null;
-
- }catch (Exception e) {
- return false;
- }
- }
-
-
-/**
- * @param the type of the class to instantiate
- * @param clazz - class object of the type
- * @return a new instance of T
-
- */
-@SuppressWarnings("unchecked")
-public static T getDefaultInstance(Class clazz) {
- if(clazz == null)
- throw new ReflectionException("class must not be null");
-
- try{
- Constructor constructor = clazz.getConstructor(new Class[]{});
- return (T) constructor.newInstance(new Object[]{});
- }catch (Exception e) {
- throw new ReflectionException("can not instantiate type of class "+clazz.getName(),e);
- }
-}
-
-
-/**
- * This method calls {@link Class#newInstance()} to get a new instance. Use with care!
- * @param clazz - the class to instantiate
- * @return true if an instance could be created, otherwise false;
- */
-public static boolean canCreateInstance(Class clazz){
- if(clazz == null)
- return false;
- if(clazz.isPrimitive())
- clazz = getPrimitiveWrapper(clazz);
- try{
- Object o = clazz.newInstance();
- return o != null;
- }catch (Throwable e) {
- return false;
- }
-}
-/**
- * Returns the wrapper type for the given primitive type. Wrappers can be
- * easily instantiated via reflection and will be boxed by the VM
- * @param primitive - the primitive type
- * @return - the corresponding wrapper type
- */
-public static final Class getPrimitiveWrapper(Class primitive) {
- if(primitive == null )
- throw new ReflectionException("primitive must not be null");
- if(!primitive.isPrimitive())
- throw new ReflectionException("given class is not a primitive");
-
- if (primitive == Integer.TYPE)
- return Integer.class;
- if (primitive == Float.TYPE)
- return Float.class;
- if (primitive == Long.TYPE)
- return Long.class;
- if (primitive == Short.TYPE)
- return Short.class;
- if (primitive == Byte.TYPE)
- return Byte.class;
- if (primitive == Double.TYPE)
- return Double.class;
- if (primitive == Boolean.TYPE)
- return Boolean.class;
-
- return primitive;
-}
-
-/**
- * Exception wrapper for all thrown exception in the ReflectionUtils methods
- *
- *
- */
-public static class ReflectionException extends RuntimeException{
-
- /**
- *
- */
- private static final long serialVersionUID = -4855060602565614280L;
-
- /**
- * @param message - the exception message
- * @param cause - the exception root cause
- */
- public ReflectionException(String message, Throwable cause) {
- super(message, cause);
- // TODO Auto-generated constructor stub
- }
-
- /**
- * @param message - the exception message
- */
- public ReflectionException(String message) {
- super(message);
- // TODO Auto-generated constructor stub
- }
-
-}
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/utils/SimpleObjectPool.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/utils/SimpleObjectPool.java
deleted file mode 100755
index ca54d4cc176..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/utils/SimpleObjectPool.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.utils;
-
-import java.util.Stack;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * A Simple implementation of the {@link org.apache.lucene.gdata.utils.Pool}
- * interface using a {@link java.util.Stack} as a buffer for the pooled objects.
- * This implementation does not provide any timeout mechanismn. Objects will
- * stay inside the pool until the pool is destroyed.
- *
- * If any object will be released e.g. handover to the pool and the pool has
- * already enought objects in the pool the released object will be destroyed. If
- * the pool is empty a new Object will be created.
- *
- *
- * This implementation does not track any references to the objects aquired by
- * any other resource. The objects must be destroyed manually if not released to
- * the pool after aquired.
- *
- *
- *
- * @param
- *
- */
-public class SimpleObjectPool implements Pool {
- private static final Log LOG = LogFactory.getLog(SimpleObjectPool.class);
- private volatile boolean isDestroyed = false;
-
- private final PoolObjectFactory factory;
-
- static final int DEFAULTSIZE = 5;
- static final int MINIMALSIZE = 1;
-
- private final int size;
-
- private final Stack pool;
-
- private final ReentrantReadWriteLock masterLock = new ReentrantReadWriteLock();
-
- private final Lock readLock = this.masterLock.readLock();
-
- private final Lock writeLock = this.masterLock.writeLock();
-
- /**
- * Constructs a new {@link SimpleObjectPool} and sets the ObjectFactory and the pool size
- * @param size - the maximum size of the pool
- * @param factory - factory to create and destroy pooled objects
- *
- */
- public SimpleObjectPool(int size, PoolObjectFactory factory) {
- if (factory == null)
- throw new IllegalArgumentException("Factory must not be null");
- this.factory = factory;
- this.size = size < MINIMALSIZE ? MINIMALSIZE : size;
- this.pool = new Stack();
- for (int i = 0; i < this.size; i++) {
- this.pool.push(this.factory.getInstance());
- }
- }
- /**
- * @param factory
- */
- public SimpleObjectPool(PoolObjectFactory factory) {
- this(DEFAULTSIZE,factory);
-
- }
-
- /**
- * @see org.apache.lucene.gdata.utils.Pool#aquire()
- */
- public Type aquire() {
- // fail if writelock is aquired
- if (this.readLock.tryLock()) {
- try {
- if (this.isDestroyed)
- throw new IllegalStateException(
- "The pool has already been closed");
- if (this.pool.isEmpty())
- return this.factory.getInstance();
- return this.pool.pop();
- } finally {
- this.readLock.unlock();
- }
- }
- throw new IllegalStateException("The pool has already been closed");
- }
-
- /**
- *
- * @param type - generic type
- * @see org.apache.lucene.gdata.utils.Pool#release(Object)
- */
- public void release(Type type) {
- // fail if writelock is aquired
- if (this.readLock.tryLock()) {
- try {
- if (this.pool.size() < this.size && !this.isDestroyed)
- this.pool.push(type);
- else
- this.factory.destroyInstance(type);
- } finally {
- this.readLock.unlock();
- }
- return;
- }
- // enable object need to be destoryed
- this.factory.destroyInstance(type);
- }
-
- /**
- * @see org.apache.lucene.gdata.utils.Pool#getSize()
- */
- public int getSize() {
-
- return this.size;
- }
-
- /**
- * @see org.apache.lucene.gdata.utils.Pool#getExpireTime()
- */
- public long getExpireTime() {
-
- return 0;
- }
-
- /**
- * @see org.apache.lucene.gdata.utils.Pool#expires()
- */
- public boolean expires() {
-
- return false;
- }
-
- /**
- * @see org.apache.lucene.gdata.utils.Pool#destroy()
- */
- public void destroy() {
- this.writeLock.lock();
- try {
- if (this.isDestroyed)
- return;
- this.isDestroyed = true;
- LOG.info("Destroy all elements in the pool -- poolsize: "+this.pool.size());
- for (Type type : this.pool) {
- this.factory.destroyInstance(type);
- }
- this.pool.clear();
- } finally {
- this.writeLock.unlock();
- }
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/utils/SimpleSaxErrorHandler.java b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/utils/SimpleSaxErrorHandler.java
deleted file mode 100755
index c413ae3608c..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/utils/SimpleSaxErrorHandler.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.utils;
-
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-/**
- * For use with Digester to throw exceptions on errors
- *
- *
- */
-public final class SimpleSaxErrorHandler implements ErrorHandler{
-
- /**
- * @see org.xml.sax.ErrorHandler#warning(org.xml.sax.SAXParseException)
- */
- public void warning(SAXParseException arg0) throws SAXException {
- //
- }
-
- /**
- * @see org.xml.sax.ErrorHandler#error(org.xml.sax.SAXParseException)
- */
- public void error(SAXParseException arg0) throws SAXException {
-
- throw new SAXException("ERROR: Can not parse XML Document -- "+arg0.getMessage(),arg0);
- }
-
- /**
- * @see org.xml.sax.ErrorHandler#fatalError(org.xml.sax.SAXParseException)
- */
- public void fatalError(SAXParseException arg0) throws SAXException {
- throw new SAXException("FATAL ERROR: Can not parse XML Document -- "+arg0.getMessage(),arg0);
- }
-
-}
\ No newline at end of file
diff --git a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/utils/package.html b/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/utils/package.html
deleted file mode 100644
index 9e0201cea75..00000000000
--- a/contrib/gdata-server/src/core/src/java/org/apache/lucene/gdata/utils/package.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-Utils package
-
-
diff --git a/contrib/gdata-server/src/core/src/test/gdata-account.xsd b/contrib/gdata-server/src/core/src/test/gdata-account.xsd
deleted file mode 100755
index bc0b0e0aeaf..00000000000
--- a/contrib/gdata-server/src/core/src/test/gdata-account.xsd
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/contrib/gdata-server/src/core/src/test/gdata-config.xml b/contrib/gdata-server/src/core/src/test/gdata-config.xml
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/contrib/gdata-server/src/core/src/test/lucenestorage.properties.xml b/contrib/gdata-server/src/core/src/test/lucenestorage.properties.xml
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/data/TestGDataUser.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/data/TestGDataUser.java
deleted file mode 100644
index ec2a877746a..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/data/TestGDataUser.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.data;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.gdata.data.GDataAccount.AccountRole;
-
-/**
- * @author Simon Willnauer
- *
- */
-public class TestGDataUser extends TestCase {
- private GDataAccount user;
- @Override
- protected void setUp() throws Exception {
- this.user = new GDataAccount();
- this.user.setName("simonW");
- super.setUp();
- }
-
- @Override
- protected void tearDown() throws Exception {
-
- super.tearDown();
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.data.GDataUser.isUserInRole(UserRole)'
- */
- public void testIsUserInRole() {
- assertFalse(this.user.isUserInRole(null));
- assertTrue(this.user.isUserInRole(AccountRole.USER));
- assertFalse(this.user.isUserInRole(AccountRole.ENTRYAMINISTRATOR));
- this.user.setRole(AccountRole.ENTRYAMINISTRATOR);
- assertTrue(this.user.isUserInRole(AccountRole.ENTRYAMINISTRATOR));
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.data.GDataUser.getRolesAsInt()'
- */
- public void testGetRolesAsInt() {
- assertEquals(1,this.user.getRolesAsInt());
- this.user.setRole(AccountRole.ENTRYAMINISTRATOR);
- assertEquals(3,this.user.getRolesAsInt());
- this.user.setRole(AccountRole.FEEDAMINISTRATOR);
- assertEquals(7,this.user.getRolesAsInt());
- this.user.setRole(AccountRole.USERADMINISTRATOR);
- assertEquals(15,this.user.getRolesAsInt());
-
-
-
- }
-
- public void testIsUserInRoleInt(){
- assertFalse(GDataAccount.isInRole(1,AccountRole.ENTRYAMINISTRATOR));
- assertFalse(GDataAccount.isInRole(1,AccountRole.FEEDAMINISTRATOR));
- assertTrue(GDataAccount.isInRole(3,AccountRole.ENTRYAMINISTRATOR));
- assertTrue(GDataAccount.isInRole(15,AccountRole.ENTRYAMINISTRATOR));
- assertTrue(GDataAccount.isInRole(3,AccountRole.USER));
- assertTrue(GDataAccount.isInRole(15,AccountRole.USERADMINISTRATOR));
- assertFalse(GDataAccount.isInRole(7,AccountRole.USERADMINISTRATOR));
- assertFalse(GDataAccount.isInRole(7,null));
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.data.GDataUser.setRolesAsInt(int)'
- */
- public void testSetRolesAsInt() {
- this.user.setRolesAsInt(2);
- this.user.setRolesAsInt(4);
- this.user.setRolesAsInt(8);
- assertEquals(4,this.user.getRoles().size());
- this.user.setRolesAsInt(15);
- assertEquals(4,this.user.getRoles().size());
- this.user = new GDataAccount();
- this.user.setName("simon");
- this.user.setRolesAsInt(15);
- assertEquals(4,this.user.getRoles().size());
-
- }
-
- public void testEquals(){
- assertTrue(this.user.equals(this.user));
- GDataAccount a = new GDataAccount();
- a.setName(this.user.getName());
- assertTrue(this.user.equals(a));
- a.setName("someOtheraccount");
- assertFalse(this.user.equals(a));
- assertFalse(this.user.equals(null));
- assertFalse(this.user.equals(new String()));
- assertFalse(new GDataAccount().equals(new GDataAccount()));
- }
- public void testHashCode(){
- assertEquals(this.user.hashCode(),this.user.hashCode());
- assertFalse(this.user.hashCode()== this.user.getName().hashCode());
- GDataAccount a = new GDataAccount();
- a.setName(this.user.getName());
- assertEquals(this.user.hashCode(),a.hashCode());
- a.setName(null);
- assertFalse(a.hashCode()== this.user.hashCode());
- }
-
- public void testReqValuesSet(){
- assertFalse(this.user.requiredValuesSet());
- this.user.setPassword("hello");
- assertFalse(this.user.requiredValuesSet());
- this.user.setPassword("helloworld");
- assertTrue(this.user.requiredValuesSet());
- assertFalse(new GDataAccount().requiredValuesSet());
- }
-
- public void testToStringPrevNulPEx(){
- assertNotNull(this.user.toString());
- }
-
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/TestStandardGdataSearcher.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/TestStandardGdataSearcher.java
deleted file mode 100755
index b831804cb32..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/TestStandardGdataSearcher.java
+++ /dev/null
@@ -1,222 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
-import org.apache.lucene.gdata.search.StandardGdataSearcher;
-import org.apache.lucene.gdata.search.index.IndexDocument;
-import org.apache.lucene.gdata.utils.ReferenceCounter;
-import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.index.Term;
-import org.apache.lucene.search.Hits;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.TermQuery;
-import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.RAMDirectory;
-
-/**
- *
- *
- */
-public class TestStandardGdataSearcher extends TestCase {
- private Directory dir;
-
- private int amountDocuments = 30;
-
- private static final String FIELDNAME = "fname";
-
- private static final String FIELDVALUE = "foobar";
-
- private ReferenceCounter searcher;
-
- private StandardGdataSearcher gdataSearcher;
-
- private List idlist;
-
- private String feedId = "myFeed";
-
- protected void setUp() throws Exception {
- this.dir = new RAMDirectory();
- IndexWriter writer = new IndexWriter(dir, new StandardAnalyzer(), true);
- this.idlist = new ArrayList();
- for (int i = 0; i < this.amountDocuments; i++) {
- Document doc = new Document();
- doc.add(new Field(IndexDocument.FIELD_FEED_ID, this.feedId,
- Field.Store.YES, Field.Index.UN_TOKENIZED));
- doc.add(new Field(IndexDocument.FIELD_ENTRY_ID, "" + i,
- Field.Store.YES, Field.Index.UN_TOKENIZED));
- doc.add(new Field(FIELDNAME, FIELDVALUE, Field.Store.YES,
- Field.Index.UN_TOKENIZED));
- writer.addDocument(doc);
- this.idlist.add("" + i);
- }
- writer.close();
- this.searcher = new TestRefcounter(new IndexSearcher(this.dir));
- this.searcher.increamentReference();
- this.gdataSearcher = new StandardGdataSearcher(this.searcher);
- }
-
- protected void tearDown() throws Exception {
- this.searcher.decrementRef();
- StandardGdataSearcher.flushFilterCache();
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.search.StandardGdataSearcher.StandardGdataSearcher(ReferenceCounter)'
- */
- public void testStandardGdataSearcher() {
- try {
- new StandardGdataSearcher(null);
- fail("searcher ref is null");
- } catch (IllegalArgumentException e) {
-
- }
- new StandardGdataSearcher(this.searcher);
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.search.StandardGdataSearcher.search(Query, int,
- * int)'
- */
- public void testSearch() throws IOException {
- Query q = new TermQuery(new Term(FIELDNAME, FIELDVALUE));
- Hits hits = this.searcher.get().search(q);
- assertEquals(amountDocuments, hits.length());
- List returnValue = this.gdataSearcher.search(q,
- this.amountDocuments, 0,this.feedId);
- assertEquals(amountDocuments, returnValue.size());
- assertTrue(returnValue.containsAll(this.idlist));
- try {
- this.gdataSearcher.search(null, 1, 0,this.feedId);
- fail("searcher is null");
- } catch (RuntimeException e) {
- }
-
- try {
- this.gdataSearcher.search(q, -1, 5,this.feedId);
- fail("hitcount is less than 0");
- } catch (IllegalArgumentException e) {}
- try {
- this.gdataSearcher.search(q, 4, -1,this.feedId);
- fail("offset is less than 0");
- } catch (IllegalArgumentException e) {}
- try {
- this.gdataSearcher.search(q, 4, 5,null);
- fail("feed id is null");
- } catch (IllegalArgumentException e) {}
-
- returnValue = this.gdataSearcher.search(q,this.amountDocuments, 0,"SomeOtherFeed");
- assertEquals(0,returnValue.size());
-
-
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.search.StandardGdataSearcher.collectHits(Hits,
- * int, int)'
- */
- public void testCollectHits() throws IOException {
- Query q = new TermQuery(new Term(FIELDNAME, FIELDVALUE));
- Hits hits = this.searcher.get().search(q);
- assertEquals(amountDocuments, hits.length());
- List returnValue = this.gdataSearcher.collectHits(hits, 1, 0);
- assertEquals(hits.doc(0).getField(IndexDocument.FIELD_ENTRY_ID)
- .stringValue(), returnValue.get(0));
-
- returnValue = this.gdataSearcher.collectHits(hits, 1, 1);
- assertEquals(hits.doc(0).getField(IndexDocument.FIELD_ENTRY_ID)
- .stringValue(), returnValue.get(0));
-
- returnValue = this.gdataSearcher.collectHits(hits, 1,
- this.amountDocuments);
- assertEquals(1, returnValue.size());
- assertEquals(hits.doc(this.amountDocuments - 1).getField(
- IndexDocument.FIELD_ENTRY_ID).stringValue(), returnValue.get(0));
-
- returnValue = this.gdataSearcher.collectHits(hits, 10,
- this.amountDocuments);
- assertEquals(1, returnValue.size());
- assertEquals(hits.doc(this.amountDocuments - 1).getField(
- IndexDocument.FIELD_ENTRY_ID).stringValue(), returnValue.get(0));
-
- returnValue = this.gdataSearcher.collectHits(hits, 50, 0);
- assertEquals(this.amountDocuments, returnValue.size());
- assertTrue(returnValue.containsAll(this.idlist));
-
- returnValue = this.gdataSearcher.collectHits(hits, 1, 5);
- assertEquals(1, returnValue.size());
- assertEquals(hits.doc(4).getField(IndexDocument.FIELD_ENTRY_ID)
- .stringValue(), returnValue.get(0));
-
- returnValue = this.gdataSearcher.collectHits(hits, 50,
- this.amountDocuments);
- assertEquals(1, returnValue.size());
- assertEquals(hits.doc(this.amountDocuments - 1).getField(
- IndexDocument.FIELD_ENTRY_ID).stringValue(), returnValue.get(0));
-
- returnValue = this.gdataSearcher.collectHits(hits, 1,
- this.amountDocuments + 1);
- assertEquals(0, returnValue.size());
-
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.search.StandardGdataSearcher.close()'
- */
- public void testClose() throws IOException {
- StandardGdataSearcher s = new StandardGdataSearcher(new TestRefcounter(
- new IndexSearcher(this.dir)));
- s.close();
- try {
- s.search(null, 0, 0,this.feedId);
- fail("searcher is closed");
- } catch (IllegalStateException e) {
- }
-
- }
-
- private static class TestRefcounter extends ReferenceCounter {
-
- public TestRefcounter(IndexSearcher resource) {
- super(resource);
- // TODO Auto-generated constructor stub
- }
-
- @Override
- protected void close() {
- try {
- this.resource.close();
- } catch (Exception e) {
- // TODO: handle exception
- }
- }
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/analysis/IndexableStub.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/analysis/IndexableStub.java
deleted file mode 100755
index fab9dbba775..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/analysis/IndexableStub.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.analysis;
-
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
-
-import javax.xml.xpath.XPathExpressionException;
-
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-
-/**
- *
- *
- */
-public class IndexableStub extends Indexable {
-
- private String content;
- private boolean retNull;
- int times = 1;
- int count = 0;
- IndexableStub() {
- super(null);
-
- }
- public void returnProxyTimes(int times){
- this.times = times;
- }
- public void setReturnNull(boolean returnNull){
- this.retNull = returnNull;
- }
- public void setReturnValueTextContent(String content){
- this.content = content;
- }
- @Override
- public Node applyPath(String xPath) throws XPathExpressionException {
- if(xPath == null)
- throw new XPathExpressionException("path is null");
- if(this.retNull)
- return null;
- if(times == count)
- return null;
- times++;
- return (Node)Proxy.newProxyInstance(this.getClass().getClassLoader(),new Class[] {Node.class,NamedNodeMap.class},new Handler(this.content));
-
- }
-
- private static class Handler implements InvocationHandler{
- String returnValue;
- public Handler(String toReturn){
- this.returnValue = toReturn;
- }
- public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
- if(method.getName().equals("getNextSibling")){
- return null;
- }
- if(method.getReturnType() == String.class)
- return this.returnValue;
- if(method.getReturnType() == Node.class)
-
- return (Node)Proxy.newProxyInstance(this.getClass().getClassLoader(),new Class[] {Node.class,NamedNodeMap.class},new Handler(this.returnValue));
- if(method.getReturnType() == NamedNodeMap.class)
- return (NamedNodeMap)Proxy.newProxyInstance(this.getClass().getClassLoader(),new Class[] {Node.class,NamedNodeMap.class},new Handler(this.returnValue));
- return null;
-
- }
-
- }
-
-
-
-}
-
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/analysis/TestContentStrategy.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/analysis/TestContentStrategy.java
deleted file mode 100755
index 2ae2fa5b3e9..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/analysis/TestContentStrategy.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.analysis;
-
-import org.apache.lucene.document.Field;
-import org.apache.lucene.document.Field.Index;
-import org.apache.lucene.document.Field.Store;
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.search.config.IndexSchemaField;
-import org.apache.lucene.gdata.search.index.GdataIndexerException;
-import org.w3c.dom.Node;
-
-import junit.framework.TestCase;
-
-public class TestContentStrategy extends TestCase {
- private static final String FIELD = "foo";
- private static final float BOOST = 2.0f;
- ContentStrategy strategy;
-
- protected void setUp() throws Exception {
- IndexSchemaField field = new IndexSchemaField();
- field.setName(FIELD);
- field.setStore(Field.Store.YES);
- field.setIndex(Field.Index.UN_TOKENIZED);
- field.setBoost(BOOST);
- this.strategy = new TestStrategy(field);
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- }
- public void testContentStrategyIndexStoreField() throws NotIndexableException{
- IndexSchemaField field = new IndexSchemaField();
- field.setName(FIELD);
-
-
- this.strategy = new TestStrategy(Field.Index.UN_TOKENIZED,Field.Store.YES,field);
- this.strategy.processIndexable(null);
- Field f = this.strategy.createLuceneField()[0];
- assertEquals(FIELD,f.name());
- assertEquals(TestStrategy.CONTENT,f.stringValue());
- assertEquals(1.0f,f.getBoost());
- assertTrue(f.isIndexed());
- assertTrue(f.isStored());
- assertFalse(f.isTokenized());
- assertFalse(f.isCompressed());
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.search.analysis.ContentStrategy.ContentStrategy(Index, Store, IndexSchemaField)'
- */
- public void testContentStrategyIndexSchemaField() throws NotIndexableException {
- IndexSchemaField field = new IndexSchemaField();
- field.setName(FIELD);
-
-
- this.strategy = new TestStrategy(field);
- this.strategy.processIndexable(null);
- Field f = this.strategy.createLuceneField()[0];
-
- assertEquals(FIELD,f.name());
- assertEquals(TestStrategy.CONTENT,f.stringValue());
- assertEquals(1.0f,f.getBoost());
- assertTrue(f.isIndexed());
- assertFalse(f.isStored());
- assertTrue(f.isTokenized());
- assertFalse(f.isCompressed());
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.search.analysis.ContentStrategy.createLuceneField()'
- */
- public void testCreateLuceneField() throws NotIndexableException {
- try{
- this.strategy.createLuceneField();
- fail("processIndexable is not called");
- }catch (GdataIndexerException e) {
- //
- }
- this.strategy.processIndexable(null);
- Field f = this.strategy.createLuceneField()[0];
-
- assertEquals(FIELD,f.name());
- assertEquals(TestStrategy.CONTENT,f.stringValue());
- assertEquals(BOOST,f.getBoost());
- assertTrue(f.isIndexed());
- assertTrue(f.isStored());
- assertFalse(f.isTokenized());
- assertFalse(f.isCompressed());
-
-
-
- }
-
- private static class TestStrategy extends ContentStrategy{
-
- private static final String CONTENT = "someString";
-
-
- protected TestStrategy(Index index, Store store, IndexSchemaField fieldConfig) {
- super(index, store, fieldConfig);
-
- }
-
- protected TestStrategy(IndexSchemaField fieldConfiguration) {
- super(fieldConfiguration);
-
- }
-
- @Override
- public void processIndexable(Indexable extends Node, ? extends ServerBaseEntry> indexable) throws NotIndexableException {
- this.content = CONTENT;
- }
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/analysis/TestDomIndexable.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/analysis/TestDomIndexable.java
deleted file mode 100755
index 255567341f8..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/analysis/TestDomIndexable.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.analysis;
-
-import javax.xml.xpath.XPathExpressionException;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.server.registry.ProvidedServiceConfig;
-import org.apache.lucene.gdata.utils.ProvidedServiceStub;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Node;
-
-import com.google.gdata.data.Category;
-import com.google.gdata.data.ExtensionProfile;
-import com.google.gdata.data.HtmlTextConstruct;
-import com.google.gdata.data.extensions.EventEntry;
-
-public class TestDomIndexable extends TestCase {
-
-
- public void testConstructor(){
- try {
- new DomIndexable(new ServerBaseEntry());
- fail("no service config");
- } catch (NotIndexableException e) {
-
-
- }
- ServerBaseEntry e = new ServerBaseEntry();
- e.setServiceConfig(new ProvidedServiceConfig());
- try {
- new DomIndexable(e);
- fail("no extension profile");
- } catch (IllegalStateException e1) {
-
-
- } catch (NotIndexableException e2) {
-
- fail("unexp. exception");
- }
- e.setServiceConfig(new ProvidedServiceStub());
- try {
- new DomIndexable(e);
- } catch (NotIndexableException e1) {
- fail("unexp. exception");
-
- }
- }
- /*
- * Test method for 'org.apache.lucene.gdata.search.analysis.DomIndexable.applyPath(String)'
- */
- public void testApplyPath() throws NotIndexableException, XPathExpressionException {
- String content = "fooo bar ";
- ServerBaseEntry entry = new ServerBaseEntry();
- entry.setContent(new HtmlTextConstruct(content));
- entry.setServiceConfig(new ProvidedServiceStub());
-
- Indexable ind = new DomIndexable(entry);
- Node n = ind.applyPath("/entry/content");
- assertNotNull(n);
- assertEquals(content,n.getTextContent());
- Node attr = ind.applyPath("/entry/content/@type");
- assertNotNull(attr);
- assertEquals("html",attr.getTextContent());
- assertTrue(attr instanceof Attr);
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/analysis/TestGdataCategoryStrategy.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/analysis/TestGdataCategoryStrategy.java
deleted file mode 100755
index 260934848df..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/analysis/TestGdataCategoryStrategy.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.analysis;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.document.Field;
-import org.apache.lucene.gdata.search.config.IndexSchemaField;
-import org.apache.lucene.gdata.search.index.GdataIndexerException;
-
-/**
- *
- *
- */
-public class TestGdataCategoryStrategy extends TestCase {
- private static final String FIELD = "foo";
-
- private static final float BOOST = 2.0f;
-
- GdataCategoryStrategy strategy;
-
- private IndexSchemaField field;
-
- protected void setUp() throws Exception {
- this.field = new IndexSchemaField();
- field.setName(FIELD);
- //store and index will be ignored
- field.setStore(Field.Store.NO);
- field.setIndex(Field.Index.TOKENIZED);
- field.setBoost(BOOST);
- field.setPath("/path");
- this.strategy = new GdataCategoryStrategy(field);
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.search.analysis.PlainTextStrategy.processIndexable(Indexable
- * extends Node, ? extends ServerBaseEntry>)'
- */
- public void testProcessIndexable() throws NotIndexableException {
- IndexableStub stub = new IndexableStub();
- stub.setReturnNull(true);
- try {
- this.strategy.processIndexable(stub);
- fail("retun value is null must fail");
- } catch (NotIndexableException e) {
- }
- assertNull(this.strategy.content);
- try {
- this.strategy.createLuceneField();
- fail("content is not set");
- } catch (GdataIndexerException e) {
- }
-
- String content = "fooBar";
- stub.setReturnNull(false);
- stub.setReturnValueTextContent(content);
- this.strategy.processIndexable(stub);
- assertNotNull(this.strategy.content);
- assertNotNull(this.strategy.categoryScheme);
- assertEquals(content+" "+content, this.strategy.content.trim());
- assertEquals(content, this.strategy.categoryScheme);
-
- Field[] fields = this.strategy.createLuceneField();
- assertEquals(2, fields.length);
- assertEquals(this.field.getName(), fields[0].name());
- assertEquals(content+" "+content, fields[0].stringValue().trim());
- assertEquals(this.strategy.categorySchemeField, fields[1].name());
- assertEquals(content, fields[1].stringValue());
- // this is also stored an untok.
- assertFalse(fields[0].isStored());
- assertTrue(fields[0].isTokenized());
- // test for xpath exc.
- this.field.setPath(null);
- this.strategy = new GdataCategoryStrategy(field);
- try {
- this.strategy.processIndexable(stub);
- fail("path is null must fail");
- } catch (NotIndexableException e) {
- }
- try {
- this.strategy.createLuceneField();
- fail("content is not set");
- } catch (GdataIndexerException e) {
- }
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/analysis/TestGdataDateStrategy.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/analysis/TestGdataDateStrategy.java
deleted file mode 100755
index 549859187f3..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/analysis/TestGdataDateStrategy.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.analysis;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.document.Field;
-import org.apache.lucene.gdata.search.config.IndexSchemaField;
-import org.apache.lucene.gdata.search.index.GdataIndexerException;
-
-import com.google.gdata.data.DateTime;
-
-/**
- *
- *
- */
-public class TestGdataDateStrategy extends TestCase {
- private static final String FIELD = "foo";
-
- private static final float BOOST = 2.0f;
-
- ContentStrategy strategy;
-
- private IndexSchemaField field;
-
- protected void setUp() throws Exception {
- this.field = new IndexSchemaField();
- field.setName(FIELD);
- field.setStore(Field.Store.NO);
- field.setIndex(Field.Index.TOKENIZED);
- field.setBoost(BOOST);
- field.setPath("/path");
- this.strategy = new GdataDateStrategy(field);
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.search.analysis.PlainTextStrategy.processIndexable(Indexable
- * extends Node, ? extends ServerBaseEntry>)'
- */
- public void testProcessIndexable() throws NotIndexableException {
- IndexableStub stub = new IndexableStub();
- stub.setReturnNull(true);
- try {
- this.strategy.processIndexable(stub);
- fail("retun value is null must fail");
- } catch (NotIndexableException e) {
- }
- assertNull(this.strategy.content);
- try {
- this.strategy.createLuceneField();
- fail("content is not set");
- } catch (GdataIndexerException e) {
- }
- // test with proper date
- String content = "2005-01-09T08:00:00Z";
- String parsedConent = Long.toString(DateTime.parseDateTime(content)
- .getValue());
- stub.setReturnNull(false);
- stub.setReturnValueTextContent(content);
- this.strategy.processIndexable(stub);
- assertNotNull(this.strategy.content);
- assertEquals(parsedConent, this.strategy.content);
-
- Field[] fields = this.strategy.createLuceneField();
- assertEquals(1, fields.length);
- assertEquals(this.field.getName(), fields[0].name());
- assertEquals(parsedConent, fields[0].stringValue());
- // timestamp is stored and untok.
- assertTrue(fields[0].isStored());
- assertFalse(fields[0].isTokenized());
-
- this.strategy = new GdataDateStrategy(this.field);
- content = "2005-01-09T##08:00:00Z";
- stub.setReturnValueTextContent(content);
- try {
- this.strategy.processIndexable(stub);
- fail("unparsable date must fail");
- } catch (NotIndexableException e) {
- }
-
-
- // test for xpath exc.
- this.field.setPath(null);
- this.strategy = new GdataDateStrategy(this.field);
- try {
- this.strategy.processIndexable(stub);
- fail("path is null must fail");
- } catch (NotIndexableException e) {
- }
- try {
- this.strategy.createLuceneField();
- fail("content is not set");
- } catch (GdataIndexerException e) {
- }
-
- }
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/analysis/TestHTMLStrategy.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/analysis/TestHTMLStrategy.java
deleted file mode 100755
index 3bb5bf24566..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/analysis/TestHTMLStrategy.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.analysis;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.document.Field;
-import org.apache.lucene.gdata.search.config.IndexSchemaField;
-
-/**
- *
- *
- */
-public class TestHTMLStrategy extends TestCase {
- private static final String FIELD = "foo";
- private static final float BOOST = 2.0f;
- ContentStrategy strategy;
- private IndexSchemaField field;
- protected void setUp() throws Exception {
- this.field = new IndexSchemaField();
- field.setName(FIELD);
- field.setStore(Field.Store.YES);
- field.setIndex(Field.Index.UN_TOKENIZED);
- field.setBoost(BOOST);
- field.setPath("/path");
- this.strategy = new HTMLStrategy(field);
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.search.analysis.PlainTextStrategy.processIndexable(Indexable extends Node, ? extends ServerBaseEntry>)'
- */
- public void testProcessIndexable() throws NotIndexableException {
- IndexableStub stub = new IndexableStub();
- stub.setReturnNull(true);
- try{
- this.strategy.processIndexable(stub);
- fail("retun value is null must fail");
- }catch (NotIndexableException e) {}
- assertNull(this.strategy.content);
- String content = "fooBar";
- //just to make sure the filter is applied.
- String htmlContent = ""+content+"";
- stub.setReturnNull(false);
- stub.setReturnValueTextContent(htmlContent);
- this.strategy.processIndexable(stub);
- assertNotNull(this.strategy.content);
- assertEquals(content,this.strategy.content);
-
-
- // test for xpath exc.
- this.field.setPath(null);
- try{
- this.strategy.processIndexable(stub);
- fail("path is null must fail");
- }catch (NotIndexableException e) {}
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/analysis/TestKeywordStrategy.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/analysis/TestKeywordStrategy.java
deleted file mode 100755
index 4e17eeaa511..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/analysis/TestKeywordStrategy.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.analysis;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.document.Field;
-import org.apache.lucene.gdata.search.config.IndexSchemaField;
-import org.apache.lucene.gdata.search.index.GdataIndexerException;
-
-/**
- *
- *
- */
-public class TestKeywordStrategy extends TestCase {
- private static final String FIELD = "foo";
-
- private static final float BOOST = 2.0f;
-
- ContentStrategy strategy;
-
- private IndexSchemaField field;
-
- protected void setUp() throws Exception {
- this.field = new IndexSchemaField();
- field.setName(FIELD);
- field.setStore(Field.Store.NO);
- field.setIndex(Field.Index.TOKENIZED);
- field.setBoost(BOOST);
- field.setPath("/path");
-
- this.strategy = new KeywordStrategy(field);
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.search.analysis.PlainTextStrategy.processIndexable(Indexable
- * extends Node, ? extends ServerBaseEntry>)'
- */
- public void testProcessIndexable() throws NotIndexableException {
- IndexableStub stub = new IndexableStub();
- stub.setReturnNull(true);
- try {
- this.strategy.processIndexable(stub);
- fail("retun value is null must fail");
- } catch (NotIndexableException e) {
- }
- assertNull(this.strategy.content);
- try {
- this.strategy.createLuceneField();
- fail("content is not set");
- } catch (GdataIndexerException e) {
- }
-
- String content = "fooBar";
- stub.setReturnNull(false);
- stub.setReturnValueTextContent(content);
- this.strategy.processIndexable(stub);
- assertNotNull(this.strategy.content);
- assertEquals(content, this.strategy.content);
-
- Field[] fields = this.strategy.createLuceneField();
- assertEquals(1, fields.length);
- assertEquals(this.field.getName(), fields[0].name());
- assertEquals(content, fields[0].stringValue());
- // this is also stored an untok.
- assertTrue(fields[0].isStored());
- assertFalse(fields[0].isTokenized());
-
-
- // test for xpath exc.
- this.field.setPath(null);
- this.strategy = new KeywordStrategy(field);
- try {
- this.strategy.processIndexable(stub);
- fail("path is null must fail");
- } catch (NotIndexableException e) {
- }
- try {
- this.strategy.createLuceneField();
- fail("content is not set");
- } catch (GdataIndexerException e) {
- }
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/analysis/TestMixedStrategy.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/analysis/TestMixedStrategy.java
deleted file mode 100755
index f44b1dca3a0..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/analysis/TestMixedStrategy.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.analysis;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.document.Field;
-import org.apache.lucene.gdata.search.config.IndexSchemaField;
-
-/**
- *
- *
- */
-public class TestMixedStrategy extends TestCase {
- private static final String FIELD = "foo";
-
- private static final float BOOST = 2.0f;
-
- MixedContentStrategy strategy;
-
- private IndexSchemaField field;
-
- protected void setUp() throws Exception {
- this.field = new IndexSchemaField();
- field.setName(FIELD);
-
- field.setStore(Field.Store.YES);
- field.setIndex(Field.Index.UN_TOKENIZED);
- field.setBoost(BOOST);
- field.setPath("/path");
- field.setTypePath("/path");
- this.strategy = new MixedContentStrategy(field);
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.search.analysis.PlainTextStrategy.processIndexable(Indexable
- * extends Node, ? extends ServerBaseEntry>)'
- */
- public void testProcessIndexable() throws NotIndexableException {
- IndexableStub stub = new IndexableStub();
- stub.setReturnNull(true);
- try {
- this.strategy.processIndexable(stub);
- fail("retun value is null must fail");
- } catch (NotIndexableException e) {
- }
- assertNull(this.strategy.content);
- String content = "fooBar";
- stub.setReturnNull(false);
- stub.setReturnValueTextContent(content);
- this.strategy.processIndexable(stub);
- assertNotNull(this.strategy.strategy.content);
- assertEquals(content, this.strategy.strategy.content);
- assertEquals(this.strategy.strategy.getClass(), PlainTextStrategy.class);
-
-
-
- content = "html";
- stub.setReturnNull(false);
- stub.setReturnValueTextContent(content);
- this.strategy.processIndexable(stub);
- assertNotNull(this.strategy.strategy.content);
- assertEquals(content, this.strategy.strategy.content);
- assertEquals(this.strategy.strategy.getClass(), HTMLStrategy.class);
-
- content = "xhtml";
- stub.setReturnNull(false);
- stub.setReturnValueTextContent(content);
- this.strategy.processIndexable(stub);
- assertNotNull(this.strategy.strategy.content);
- assertEquals(content, this.strategy.strategy.content);
- assertEquals(this.strategy.strategy.getClass(), XHtmlStrategy.class);
-
-
- // test for xpath exc.
- this.field.setPath(null);
- try {
- this.strategy.processIndexable(stub);
- fail("path is null must fail");
- } catch (NotIndexableException e) {
- }
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/analysis/TestPlainTextStrategy.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/analysis/TestPlainTextStrategy.java
deleted file mode 100755
index b11cfb3515d..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/analysis/TestPlainTextStrategy.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.analysis;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.document.Field;
-import org.apache.lucene.gdata.search.config.IndexSchemaField;
-
-/**
- *
- *
- */
-public class TestPlainTextStrategy extends TestCase {
- private static final String FIELD = "foo";
- private static final float BOOST = 2.0f;
- ContentStrategy strategy;
- private IndexSchemaField field;
- protected void setUp() throws Exception {
- this.field = new IndexSchemaField();
- field.setName(FIELD);
- field.setStore(Field.Store.YES);
- field.setIndex(Field.Index.UN_TOKENIZED);
- field.setBoost(BOOST);
- field.setPath("/path");
- this.strategy = new PlainTextStrategy(field);
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.search.analysis.PlainTextStrategy.processIndexable(Indexable extends Node, ? extends ServerBaseEntry>)'
- */
- public void testProcessIndexable() throws NotIndexableException {
- IndexableStub stub = new IndexableStub();
- stub.setReturnNull(true);
- try{
- this.strategy.processIndexable(stub);
- fail("retun value is null must fail");
- }catch (NotIndexableException e) {}
- assertNull(this.strategy.content);
- String content = "fooBar";
- stub.setReturnNull(false);
- stub.setReturnValueTextContent(content);
- this.strategy.processIndexable(stub);
- assertNotNull(this.strategy.content);
- assertEquals(content,this.strategy.content);
-
-
- // test for xpath exc.
- this.field.setPath(null);
- try{
- this.strategy.processIndexable(stub);
- fail("path is null must fail");
- }catch (NotIndexableException e) {}
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/config/TestIndexSchema.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/config/TestIndexSchema.java
deleted file mode 100755
index 95394252029..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/config/TestIndexSchema.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.config;
-
-import org.apache.lucene.analysis.PerFieldAnalyzerWrapper;
-import org.apache.lucene.analysis.StopAnalyzer;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
-import org.apache.lucene.gdata.search.config.IndexSchemaField.ContentType;
-import org.apache.lucene.gdata.search.index.IndexDocument;
-
-import junit.framework.TestCase;
-
-/**
- *
- *
- */
-public class TestIndexSchema extends TestCase {
- IndexSchema schema;
-
- protected void setUp() throws Exception {
- schema = new IndexSchema();
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.search.config.IndexSchema.initialize()'
- */
- public void testInitialize() {
- try {
- schema.initialize();
- fail("def search field is null");
- } catch (RuntimeException e) {
- // TODO: handle exception
- }
- schema.setDefaultSearchField("someField");
- try {
- schema.initialize();
- fail("name is null");
- } catch (RuntimeException e) {
- // TODO: handle exception
- }
- schema.setName("someName");
- try {
- schema.initialize();
- fail("indexLocation is null");
- } catch (RuntimeException e) {
- // TODO: handle exception
- }
- schema.setIndexLocation("/loc/loc");
- try {
- schema.initialize();
- fail("default search field is not set as a field");
- } catch (RuntimeException e) {
- // TODO: handle exception
- }
- IndexSchemaField f = new IndexSchemaField();
- f.setName(schema.getDefaultSearchField());
- f.setContentType(ContentType.TEXT);
- schema.addSchemaField(f);
- try {
- schema.initialize();
- fail("field check failed");
- } catch (RuntimeException e) {
- // TODO: handle exception
- }
- f.setPath("path");
- schema.initialize();
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.search.config.IndexSchema.addSchemaField(IndexSchemaField)'
- */
- public void testAddSchemaField() {
- schema.addSchemaField(null);
- assertEquals(0, schema.getFields().size());
-
- IndexSchemaField f = new IndexSchemaField();
- f.setName(IndexDocument.FIELD_ENTRY_ID);
- schema.addSchemaField(f);
- assertEquals(0, schema.getFields().size());
-
- f.setName(IndexDocument.FIELD_FEED_ID);
- schema.addSchemaField(f);
- assertEquals(0, schema.getFields().size());
-
- f.setName("some");
- schema.addSchemaField(f);
- assertEquals(1, schema.getFields().size());
- assertEquals(StandardAnalyzer.class, schema.getServiceAnalyzer()
- .getClass());
- assertEquals(StandardAnalyzer.class, schema.getSchemaAnalyzer()
- .getClass());
- f.setName("someOther");
- f.setAnalyzerClass(StopAnalyzer.class);
- schema.addSchemaField(f);
- assertEquals(2, schema.getFields().size());
- assertEquals(PerFieldAnalyzerWrapper.class, schema.getSchemaAnalyzer()
- .getClass());
- schema.addSchemaField(f);
- assertEquals(3, schema.getFields().size());
-
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.search.config.IndexSchema.getSearchableFieldNames()'
- */
- public void testGetSearchableFieldNames() {
- IndexSchemaField f = new IndexSchemaField();
- f.setName("some");
- schema.addSchemaField(f);
- assertEquals(1, schema.getSearchableFieldNames().size());
- assertTrue(schema.getSearchableFieldNames().contains("some"));
- }
-
- public void testEquals() {
- assertFalse(schema.equals(null));
- assertFalse(schema.equals(new String()));
- assertTrue(schema.equals(schema));
- assertFalse(schema.equals(new IndexSchema()));
- IndexSchema s1 = new IndexSchema();
- s1.setName("someName");
- assertFalse(schema.equals(s1));
- schema.setName(s1.getName());
- assertTrue(schema.equals(s1));
- }
-
- public void testHashCode() {
- assertEquals(schema.hashCode(), schema.hashCode());
- assertNotNull(schema.hashCode());
- IndexSchema s1 = new IndexSchema();
- s1.setName("someName");
- assertTrue(schema.hashCode() != s1.hashCode());
- schema.setName(s1.getName());
- assertTrue(schema.hashCode() == s1.hashCode());
- }
-
- public void testToSTringNoNullPEx() {
- assertNotNull(schema.toString());
- }
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/config/TestIndexSchemaField.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/config/TestIndexSchemaField.java
deleted file mode 100755
index 660da87e085..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/config/TestIndexSchemaField.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.config;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.document.Field;
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.search.analysis.ContentStrategy;
-import org.apache.lucene.gdata.search.analysis.Indexable;
-import org.apache.lucene.gdata.search.analysis.NotIndexableException;
-import org.apache.lucene.gdata.search.analysis.PlainTextStrategy;
-import org.apache.lucene.gdata.search.config.IndexSchemaField.ContentType;
-import org.w3c.dom.Node;
-
-/**
- *
- *
- */
-public class TestIndexSchemaField extends TestCase {
-
- protected void setUp() throws Exception {
- super.setUp();
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.search.config.IndexSchemaField.checkRequieredValues()'
- */
- public void testCheckRequieredValues() {
- IndexSchemaField f = new IndexSchemaField();
- assertFalse(f.checkRequieredValues());
- f.setName("someName");
- assertFalse(f.checkRequieredValues());
- f.setPath("somePath");
- assertFalse(f.checkRequieredValues());
- f.setType("text");
- assertTrue(f.checkRequieredValues());
- f.setType("mixed");
- assertFalse(f.checkRequieredValues());
- f.setTypePath("sometypepath");
- assertTrue(f.checkRequieredValues());
-
- f.setType("custom");
- assertFalse(f.checkRequieredValues());
- f.setFieldClass(TestContentStragtegy.class);
- assertTrue(f.checkRequieredValues());
- }
- public void testSetFieldType(){
- IndexSchemaField f = new IndexSchemaField();
- f.setFieldClass(TestContentStragtegy.class);
- try{
- f.setFieldClass(PlainTextStrategy.class);
- fail("no pub const.");
- }catch (RuntimeException e) {
-
- }
- try{
- f.setFieldClass(null);
- fail("is null");
- }catch (RuntimeException e) {
-
- }
-
- }
- /*
- * Test method for 'org.apache.lucene.gdata.search.config.IndexSchemaField.setAnalyzerClass(Class extends Analyzer>)'
- */
- public void testSetType() {
- IndexSchemaField f = new IndexSchemaField();
- f.setType("notatype");
- assertNull(f.getContentType());
- f.setType("custom");
- assertEquals(ContentType.CUSTOM,f.getContentType());
- f.setType("text");
- assertEquals(ContentType.TEXT,f.getContentType());
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.search.config.IndexSchemaField.setStoreByName(String)'
- */
- public void testSetStoreByName() {
- IndexSchemaField f = new IndexSchemaField();
- f.setStoreByName("someother");
- assertEquals(Field.Store.NO,f.getStore());
- f.setStoreByName("COMPRESS");
- assertEquals(Field.Store.COMPRESS,f.getStore());
- f.setStoreByName("YeS");
- assertEquals(Field.Store.YES,f.getStore());
- f.setStoreByName("No");
- assertEquals(Field.Store.NO,f.getStore());
-
-
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.search.config.IndexSchemaField.setIndexByName(String)'
- */
- public void testSetIndexByName() {
- IndexSchemaField f = new IndexSchemaField();
- f.setIndexByName("UN_done");
- assertEquals(Field.Index.TOKENIZED,f.getIndex());
- f.setIndexByName("UN_tokenized");
- assertEquals(Field.Index.UN_TOKENIZED,f.getIndex());
- f.setIndexByName("tokenized");
- assertEquals(Field.Index.TOKENIZED,f.getIndex());
- f.setIndexByName("no");
- assertEquals(Field.Index.NO,f.getIndex());
- f.setIndexByName("no_norms");
- assertEquals(Field.Index.NO_NORMS,f.getIndex());
-
-
- }
-
- public void testSetboost(){
- IndexSchemaField f = new IndexSchemaField();
- f.setBoost(-0.1f);
- assertEquals(1.0f,f.getBoost());
- f.setBoost(2.50f);
- assertEquals(2.50f,f.getBoost());
- }
-
- public void testToSTringNoNullPEx(){
- assertNotNull(new IndexSchemaField().toString());
- }
- static class TestContentStragtegy extends ContentStrategy{
-
- public TestContentStragtegy(IndexSchemaField fieldConfiguration) {
- super(fieldConfiguration);
- // TODO Auto-generated constructor stub
- }
-
- @Override
- public void processIndexable(Indexable extends Node, ? extends ServerBaseEntry> indexable) throws NotIndexableException {
- }
-
- }
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/index/FutureStub.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/index/FutureStub.java
deleted file mode 100755
index f5ab7dac81f..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/index/FutureStub.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.search.index;
-
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-/**
- *
- *
- */
-public class FutureStub implements Future{
- T object;
- CountDownLatch latch;
- boolean wait;
-
- /**
- *
- */
- public FutureStub(T returnObject, CountDownLatch latch) {
- this(returnObject,latch,false);
- }
- /**
- *
- */
- public FutureStub(T returnObject, CountDownLatch latch, boolean wait) {
- super();
- this.object = returnObject;
- this.latch =latch;
- this.wait =wait;
- }
- public FutureStub(T returnObject) {
- this(returnObject,null);
- }
-
- /**
- * @see java.util.concurrent.Future#cancel(boolean)
- */
- public boolean cancel(boolean arg0) {
-
- return false;
- }
-
- /**
- * @see java.util.concurrent.Future#isCancelled()
- */
- public boolean isCancelled() {
-
- return false;
- }
-
- /**
- * @see java.util.concurrent.Future#isDone()
- */
- public boolean isDone() {
-
- return true;
- }
-
- /**
- * @see java.util.concurrent.Future#get()
- */
- public T get() throws InterruptedException, ExecutionException {
- doLatch();
- return this.object;
- }
-
- /**
- * @see java.util.concurrent.Future#get(long, java.util.concurrent.TimeUnit)
- */
- public T get(long arg0, TimeUnit arg1) throws InterruptedException,
- ExecutionException, TimeoutException {
- doLatch();
- return this.object;
- }
-
- private void doLatch() throws InterruptedException{
- if(latch != null){
- if(!wait)
- this.latch.countDown();
- else
- this.latch.await(5000,TimeUnit.MILLISECONDS);
- }
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/index/IndexDocumentStub.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/index/IndexDocumentStub.java
deleted file mode 100755
index d90b6c0c153..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/index/IndexDocumentStub.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.search.index;
-
-import java.util.concurrent.CountDownLatch;
-
-import org.apache.lucene.document.Document;
-import org.apache.lucene.index.Term;
-
-/**
- *
- *
- */
-public class IndexDocumentStub implements IndexDocument {
- Document document;
- Term deleteTerm;
- IndexAction action;
- CountDownLatch latch;
- boolean commitAfter;
- boolean optimizeAfter;
- /**
- *
- */
- public IndexDocumentStub(Document doc, Term deleteTerm, IndexAction action, CountDownLatch latch) {
- this.document = doc;
- this.deleteTerm = deleteTerm;
- this.action = action;
- this.latch = latch;
- }
- public IndexDocumentStub(Document doc, Term deleteTerm, IndexAction action) {
- this(doc,deleteTerm,action,null);
- }
-
- /**
- * @see org.apache.lucene.gdata.search.index.IndexDocument#isUpdate()
- */
- public boolean isUpdate() {
-
- return isAction(IndexAction.UPDATE);
- }
-
- /**
- * @see org.apache.lucene.gdata.search.index.IndexDocument#isDelete()
- */
- public boolean isDelete() {
-
- return isAction(IndexAction.DELETE);
- }
-
- /**
- * @see org.apache.lucene.gdata.search.index.IndexDocument#isInsert()
- */
- public boolean isInsert() {
-
- return isAction(IndexAction.INSERT);
- }
- private boolean isAction(IndexAction currentAction){
- return this.action == currentAction;
- }
- /**
- * @see org.apache.lucene.gdata.search.index.IndexDocument#getWriteable()
- */
- public Document getWriteable() {
- if(latch != null)
- latch.countDown();
- return this.document;
- }
-
- /**
- * @see org.apache.lucene.gdata.search.index.IndexDocument#getDeletealbe()
- */
- public Term getDeletealbe() {
- if(latch != null)
- latch.countDown();
- return this.deleteTerm;
- }
- public boolean commitAfter() {
-
- return this.commitAfter;
- }
- public boolean optimizeAfter() {
-
- return this.optimizeAfter;
- }
- /**
- * @param commitAfter The commitAfter to set.
- */
- public void setCommitAfter(boolean commitAfter) {
- this.commitAfter = commitAfter;
- }
- /**
- * @param optimizeAfter The optimizeAfter to set.
- */
- public void setOptimizeAfter(boolean optimizeAfter) {
- this.optimizeAfter = optimizeAfter;
- }
-
- /**
- * @see java.lang.Object#equals(java.lang.Object)
- */
- @Override
- public final boolean equals(Object obj) {
- if(obj == null)
- return false;
- if(obj instanceof IndexDocumentStub){
- IndexDocumentStub other = (IndexDocumentStub)obj;
- return this.document.getField(IndexDocument.FIELD_ENTRY_ID).stringValue().equals(other.document.getField(IndexDocument.FIELD_ENTRY_ID).stringValue());
-
- }
- return false;
- }
-
- /**
- * @see java.lang.Object#hashCode()
- */
- @Override
- public final int hashCode() {
- return this.document.getField(IndexDocument.FIELD_ENTRY_ID).stringValue().hashCode();
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/index/IndexEventListenerStub.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/index/IndexEventListenerStub.java
deleted file mode 100755
index 8c5e2813694..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/index/IndexEventListenerStub.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.search.index;
-
-import java.util.concurrent.atomic.AtomicInteger;
-
-/**
- *
- *
- */
-public class IndexEventListenerStub implements IndexEventListener {
- AtomicInteger count;
- /**
- *
- */
- public IndexEventListenerStub() {
- super();
- this.count = new AtomicInteger(0);
- }
-
- /**
- * @see org.apache.lucene.gdata.search.index.IndexEventListener#commitCallBack(java.lang.String)
- */
- public void commitCallBack(String service) {
- this.count.incrementAndGet();
- }
-
- public int getCalledCount(){
- return this.count.get();
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/index/TestGdataIndexDocument.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/index/TestGdataIndexDocument.java
deleted file mode 100755
index 6182a50f760..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/index/TestGdataIndexDocument.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.index;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.document.Document;
-import org.apache.lucene.gdata.search.analysis.ContentStrategy;
-import org.apache.lucene.gdata.search.config.IndexSchemaField;
-import org.apache.lucene.gdata.search.config.IndexSchemaField.ContentType;
-import org.apache.lucene.index.Term;
-
-public class TestGdataIndexDocument extends TestCase {
- static String ENTRYID = "someEId";
- static String FEEDID = "someFId";
- GDataIndexDocument delDocument;
- GDataIndexDocument updDocument;
- GDataIndexDocument insDocument;
- protected void setUp() throws Exception {
- this.delDocument = new GDataIndexDocument(IndexAction.DELETE,ENTRYID,FEEDID,false,true);
- this.insDocument = new GDataIndexDocument(IndexAction.INSERT,ENTRYID,FEEDID,true,false);
- this.updDocument = new GDataIndexDocument(IndexAction.UPDATE,ENTRYID,FEEDID,false,true);
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.search.index.GDataIndexDocument.addField(ContentStrategy)'
- */
- public void testAddField() {
- assertEquals(0,this.delDocument.fields.size());
- this.delDocument.addField(null);
- assertEquals(0,this.delDocument.fields.size());
- IndexSchemaField ifield = new IndexSchemaField();
- ifield.setContentType(ContentType.TEXT);
- this.delDocument.addField(ContentStrategy.getFieldStrategy(ifield));
- assertEquals(1,this.delDocument.fields.size());
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.search.index.GDataIndexDocument.getWriteable()'
- */
- public void testGetWriteable() {
- assertNotNull(this.insDocument.getWriteable());
- Document doc = this.insDocument.getWriteable();
- assertEquals(2,doc.getFields().size());
- assertEquals(ENTRYID,doc.getField(GDataIndexDocument.FIELD_ENTRY_ID).stringValue());
- assertEquals(FEEDID,doc.getField(GDataIndexDocument.FIELD_FEED_ID).stringValue());
-
-
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.search.index.GDataIndexDocument.getDeletealbe()'
- */
- public void testGetDeletealbe() {
- assertNotNull(this.insDocument.getDeletealbe());
- Term t = this.insDocument.getDeletealbe();
- assertEquals(IndexDocument.FIELD_ENTRY_ID,t.field());
- assertEquals(ENTRYID,t.text());
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.search.index.GDataIndexDocument.isUpdate()'
- */
- public void testIsUpdate() {
- assertFalse(this.insDocument.isUpdate());
- assertTrue(this.updDocument.isUpdate());
- assertFalse(this.delDocument.isUpdate());
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.search.index.GDataIndexDocument.isDelete()'
- */
- public void testIsDelete() {
- assertFalse(this.insDocument.isDelete());
- assertFalse(this.updDocument.isDelete());
- assertTrue(this.delDocument.isDelete());
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.search.index.GDataIndexDocument.isInsert()'
- */
- public void testIsInsert() {
- assertTrue(this.insDocument.isInsert());
- assertFalse(this.updDocument.isInsert());
- assertFalse(this.delDocument.isInsert());
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.search.index.GDataIndexDocument.commitAfter()'
- */
- public void testCommitAfter() {
- assertTrue(this.insDocument.commitAfter());
- assertFalse(this.updDocument.commitAfter());
- assertFalse(this.delDocument.commitAfter());
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.search.index.GDataIndexDocument.optimizeAfter()'
- */
- public void testOptimizeAfter() {
- assertFalse(this.insDocument.optimizeAfter());
- assertTrue(this.updDocument.optimizeAfter());
- assertTrue(this.delDocument.optimizeAfter());
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/index/TestGdataIndexWriter.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/index/TestGdataIndexWriter.java
deleted file mode 100755
index 01e26c99477..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/index/TestGdataIndexWriter.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.index;
-
-import java.io.IOException;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.analysis.PerFieldAnalyzerWrapper;
-import org.apache.lucene.analysis.StopAnalyzer;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
-import org.apache.lucene.gdata.search.config.IndexSchema;
-import org.apache.lucene.gdata.search.config.IndexSchemaField;
-import org.apache.lucene.store.RAMDirectory;
-import org.apache.lucene.index.LogDocMergePolicy;
-
-/**
- *
- *
- */
-public class TestGdataIndexWriter extends TestCase {
- IndexSchema schemaNoPerFielAnalyzer;
- IndexSchema schemaPerFielAnalyzer;
- long VALUE_GT_DEFAULT_LONG = 15000;
- int VALUE_GT_DEFAULT_INT = 10000;
-
- protected void setUp() throws Exception {
- this.schemaNoPerFielAnalyzer = new IndexSchema();
- this.schemaPerFielAnalyzer = new IndexSchema();
- IndexSchemaField field = new IndexSchemaField();
- field.setName("someField");
- field.setAnalyzerClass(StopAnalyzer.class);
- this.schemaPerFielAnalyzer.addSchemaField(field);
- this.schemaPerFielAnalyzer.setCommitLockTimeout(VALUE_GT_DEFAULT_LONG);
- this.schemaPerFielAnalyzer.setMaxBufferedDocs(VALUE_GT_DEFAULT_INT);
- this.schemaPerFielAnalyzer.setMaxFieldLength(VALUE_GT_DEFAULT_INT);
- this.schemaPerFielAnalyzer.setMaxMergeDocs(VALUE_GT_DEFAULT_INT);
- this.schemaPerFielAnalyzer.setMergeFactor(VALUE_GT_DEFAULT_INT);
- this.schemaPerFielAnalyzer.setWriteLockTimeout(VALUE_GT_DEFAULT_LONG);
- this.schemaPerFielAnalyzer.setUseCompoundFile(true);
- }
-
-
- /**
- * Test method for 'org.apache.lucene.gdata.search.index.GDataIndexWriter.GDataIndexWriter(Directory, boolean, IndexSchema)'
- * @throws IOException
- */
- public void testGDataIndexWriter() throws IOException {
- try{
- new GDataIndexWriter(new RAMDirectory(),true,null);
- fail("no index schema");
- }catch (IllegalArgumentException e) {}
- GDataIndexWriter writer = new GDataIndexWriter(new RAMDirectory(),true,this.schemaNoPerFielAnalyzer);
- assertTrue(writer.getAnalyzer().getClass() == StandardAnalyzer.class);
-
- writer = new GDataIndexWriter(new RAMDirectory(),true,this.schemaPerFielAnalyzer);
- assertTrue(writer.getAnalyzer().getClass() == PerFieldAnalyzerWrapper.class);
- //TODO fix this - index writer has no commitlocktimeout setter anymore (lockless commits)
-// assertEquals(VALUE_GT_DEFAULT_LONG,writer.getCommitLockTimeout());
- assertEquals(VALUE_GT_DEFAULT_LONG,writer.getWriteLockTimeout());
- assertEquals(VALUE_GT_DEFAULT_INT,writer.getMaxBufferedDocs());
- if (writer.getMergePolicy() instanceof LogDocMergePolicy)
- assertEquals(VALUE_GT_DEFAULT_INT,writer.getMaxMergeDocs());
- assertEquals(VALUE_GT_DEFAULT_INT,writer.getMaxFieldLength());
- assertEquals(VALUE_GT_DEFAULT_INT,writer.getMergeFactor());
- assertTrue(writer.getUseCompoundFile());
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/index/TestGdataIndexer.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/index/TestGdataIndexer.java
deleted file mode 100755
index 191cd21532c..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/index/TestGdataIndexer.java
+++ /dev/null
@@ -1,577 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.index;
-
-import java.io.IOException;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
-import org.apache.lucene.gdata.search.config.IndexSchema;
-import org.apache.lucene.index.Term;
-import org.apache.lucene.search.Hits;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.TermQuery;
-import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.RAMDirectory;
-
-/**
- *
- *
- */
-public class TestGdataIndexer extends TestCase {
- private GDataIndexer indexer;
-
- private Directory dir;
-
- private static IndexSchema config;
-
- private static String FIELD_ID = IndexDocument.FIELD_ENTRY_ID;
-
- static {
- config = new IndexSchema();
- config.setName("testService");
- config.setCommitLockTimeout(-1);
- config.setServiceAnalyzer(new StandardAnalyzer());
- config.setMaxBufferedDocs(-1);
- config.setMaxFieldLength(-1);
- config.setMaxMergeDocs(-1);
- config.setWriteLockTimeout(-1);
- config.setMergeFactor(-1);
- }
-
- /**
- * @see junit.framework.TestCase#setUp()
- */
- @Override
- protected void setUp() throws Exception {
- this.dir = new RAMDirectory();
- this.indexer = GDataIndexer.createGdataIndexer(config, this.dir, true);
- super.setUp();
- }
-
- /**
- * @see junit.framework.TestCase#tearDown()
- */
- @Override
- protected void tearDown() throws Exception {
- this.indexer.destroy();
- }
- public void testStaticFactoryMethodes() throws IOException{
- GDataIndexer i =GDataIndexer.createGdataIndexer(config, new RAMDirectory(), true);
- assertNotNull(i);
- assertEquals(IndexTask.class,i.indexTask.getClass());
-
- i =GDataIndexer.createTimedGdataIndexer(config, new RAMDirectory(), true,60);
- assertNotNull(i);
- assertEquals(TimedIndexTask.class,i.indexTask.getClass());
- assertEquals(60,((TimedIndexTask)i.indexTask).getIdleTime());
-
- i.destroy();
- }
- /*
- * Test method for
- * 'org.apache.lucene.gdata.search.index.GDataIndexer.GDataIndexer(IndexServiceConfiguration,
- * Directory, boolean)'
- */
- public void testGDataIndexer() throws InterruptedException, IOException {
- try {
- new GDataIndexer(null, dir, true);
- fail("config is null");
- } catch (IllegalArgumentException e) {
- //
- }
-
- try {
- new GDataIndexer(config, null, true);
- fail("dir is null");
- } catch (IllegalArgumentException e) {
- //
- }
-
- GDataIndexer in = new GDataIndexer(config,new RAMDirectory(),true);
- in.setIndexTask(null);
- in.init();
- assertNotNull(in.indexTask);
- assertEquals(IndexTask.class,in.indexTask.getClass());
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.search.index.GDataIndexer.addIndexableDocumentTask(Future)'
- */
- public void testAddIndexableDocumentTask() throws InterruptedException,
- IOException {
- String id = "myID";
- Field f = new Field(FIELD_ID, id, Field.Store.YES,
- Field.Index.UN_TOKENIZED);
- Document doc = new Document();
- doc.add(f);
- Term delTerm = new Term(FIELD_ID, id);
- /*
- * Latch will be decremented in FutureStub#get() and
- * IndexDocumentStub#getIndexable
- */
- CountDownLatch l = new CountDownLatch(2);
- IndexDocument iDoc = new IndexDocumentStub(doc, delTerm,
- IndexAction.INSERT, l);
- Future future = new FutureStub(iDoc, l);
-
- this.indexer.addIndexableDocumentTask(future);
- // wait for the latch do decrement
- l.await(5000, TimeUnit.MILLISECONDS);
-
- this.indexer.commit(false);
- IndexSearcher s = new IndexSearcher(this.dir);
- Hits h = s.search(new TermQuery(delTerm));
- assertEquals(1, h.length());
- s.close();
- // test for update
- /*
- * Latch will be decremented in FutureStub#get() and
- * IndexDocumentStub#getIndexable
- */
- l = new CountDownLatch(2);
- iDoc = new IndexDocumentStub(doc, delTerm, IndexAction.UPDATE, l);
- future = new FutureStub(iDoc, l);
- this.indexer.addIndexableDocumentTask(future);
- l.await(5000, TimeUnit.MILLISECONDS);
- this.indexer.commit(false);
- s = new IndexSearcher(this.dir);
- h = s.search(new TermQuery(delTerm));
- assertEquals(1, h.length());
- s.close();
-
- // test for delete
- /*
- * Latch will be decremented in FutureStub#get()
- */
- l = new CountDownLatch(1);
- iDoc = new IndexDocumentStub(doc, delTerm, IndexAction.DELETE, l);
- future = new FutureStub(iDoc, l);
-
- this.indexer.addIndexableDocumentTask(future);
- /*
- * wait for the indexer task to add the deleted
- */
- while (this.indexer.docsDeleted.get() == 0)
- l.await(5000, TimeUnit.MILLISECONDS);
-
- this.indexer.commit(false);
- s = new IndexSearcher(this.dir);
- h = s.search(new TermQuery(delTerm));
- assertEquals(0, h.length());
- s.close();
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.search.index.GDataIndexer.addDocument(IndexDocument)'
- */
-public void testAddDocument() throws IOException {
- String id = "myID";
- Field f = new Field(FIELD_ID, id, Field.Store.YES,
- Field.Index.UN_TOKENIZED);
- Document doc = new Document();
- doc.add(f);
- Term delTerm = new Term(FIELD_ID, id);
- IndexDocument iDoc = new IndexDocumentStub(doc,delTerm,
- IndexAction.INSERT);
-
- this.indexer.addDocument(iDoc);
- assertEquals(1,this.indexer.docsAdded.get());
- assertEquals(0,this.indexer.docsDeleted.get());
- assertEquals(0,this.indexer.docsUpdated.get());
- this.indexer.addDocument(iDoc);
- this.indexer.commit(false);
-
-
- IndexSearcher s = new IndexSearcher(this.dir);
- Hits h = s.search(new TermQuery(delTerm));
- assertEquals(1, h.length());
- s.close();
-
- iDoc = new IndexDocumentStub(doc,delTerm,
- IndexAction.UPDATE);
- try{
- this.indexer.addDocument(iDoc);
- fail("document has not insert action ");
- }catch (GdataIndexerException e) {
-
- }
-
- }
- /*
- * Test method for
- * 'org.apache.lucene.gdata.search.index.GDataIndexer.updateDocument(IndexDocument)'
- */
- public void testUpdateDocument() throws IOException {
-
- String id = "myID";
- Field f = new Field(FIELD_ID, id, Field.Store.YES,
- Field.Index.UN_TOKENIZED);
- Document doc = new Document();
- doc.add(f);
- Term delTerm = new Term(FIELD_ID, id);
- IndexDocument iDoc = new IndexDocumentStub(doc,delTerm,
- IndexAction.INSERT);
- /*
- * write doc to index
- */
- this.indexer.writer.addDocument(doc);
- this.indexer.closeWriter();
- IndexSearcher s = new IndexSearcher(this.dir);
- Hits h = s.search(new TermQuery(delTerm));
- assertEquals(1, h.length());
- s.close();
- String testFieldName = "someTestFieldupdate";
- doc.add(new Field(testFieldName,"someText",Field.Store.YES,Field.Index.TOKENIZED));
- iDoc = new IndexDocumentStub(doc,delTerm,
- IndexAction.UPDATE);
- /*
- * updateDoc via indexer
- */
- this.indexer.updateDocument(iDoc);
- assertEquals(0,this.indexer.docsAdded.get());
- assertEquals(0,this.indexer.docsDeleted.get());
- assertEquals(1,this.indexer.docsUpdated.get());
-
- this.indexer.commit(false);
-
-
- s = new IndexSearcher(this.dir);
- h = s.search(new TermQuery(delTerm));
- assertEquals(1, h.length());
- assertNotNull(h.doc(0).getField(testFieldName));
- s.close();
-
- iDoc = new IndexDocumentStub(doc,delTerm,
- IndexAction.DELETE);
- try{
- this.indexer.updateDocument(iDoc);
- fail("document has not update action ");
- }catch (GdataIndexerException e) {
-
- }
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.search.index.GDataIndexer.deleteDocument(IndexDocument)'
- */
- public void testDeleteDocument() throws IOException {
- String id = "myID";
- Field f = new Field(FIELD_ID, id, Field.Store.YES,
- Field.Index.UN_TOKENIZED);
- Document doc = new Document();
- doc.add(f);
- Term delTerm = new Term(FIELD_ID, id);
- IndexDocument iDoc = new IndexDocumentStub(doc,delTerm,
- IndexAction.INSERT);
- /*
- * write doc to index
- */
- this.indexer.writer.addDocument(doc);
-
- this.indexer.closeWriter();
- IndexSearcher s = new IndexSearcher(this.dir);
- Hits h = s.search(new TermQuery(delTerm));
- assertEquals(1, h.length());
- s.close();
-
- /*
- * del doc via indexer
- */
- iDoc = new IndexDocumentStub(doc,delTerm,
- IndexAction.DELETE);
- this.indexer.deleteDocument(iDoc);
- assertEquals(0,this.indexer.docsAdded.get());
- assertEquals(1,this.indexer.docsDeleted.get());
- assertEquals(0,this.indexer.docsUpdated.get());
- this.indexer.commit(false);
- s = new IndexSearcher(this.dir);
- h = s.search(new TermQuery(delTerm));
- assertEquals(0, h.length());
- s.close();
-
- /*
- * test insert / del without optimize
- */
- iDoc = new IndexDocumentStub(doc,delTerm,
- IndexAction.INSERT);
- this.indexer.addDocument(iDoc);
- iDoc = new IndexDocumentStub(doc,delTerm,
- IndexAction.DELETE);
- this.indexer.deleteDocument(iDoc);
- this.indexer.commit(false);
- s = new IndexSearcher(this.dir);
- h = s.search(new TermQuery(delTerm));
- assertEquals(0, h.length());
- s.close();
-
-
-
- /*
- * test insert / del / update without optimize
- */
- iDoc = new IndexDocumentStub(doc,delTerm,
- IndexAction.INSERT);
- this.indexer.addDocument(iDoc);
- iDoc = new IndexDocumentStub(doc,delTerm,
- IndexAction.DELETE);
- this.indexer.deleteDocument(iDoc);
- iDoc = new IndexDocumentStub(doc,delTerm,
- IndexAction.INSERT);
- this.indexer.addDocument(iDoc);
- this.indexer.commit(false);
- s = new IndexSearcher(this.dir);
- h = s.search(new TermQuery(delTerm));
- assertEquals(1, h.length());
- s.close();
-
-
-
-
- /*
- * test insert / update / del without optimize
- */
- iDoc = new IndexDocumentStub(doc,delTerm,
- IndexAction.INSERT);
- this.indexer.addDocument(iDoc);
- iDoc = new IndexDocumentStub(doc,delTerm,
- IndexAction.UPDATE);
- this.indexer.updateDocument(iDoc);
- iDoc = new IndexDocumentStub(doc,delTerm,
- IndexAction.DELETE);
- this.indexer.deleteDocument(iDoc);
- this.indexer.commit(false);
- s = new IndexSearcher(this.dir);
- h = s.search(new TermQuery(delTerm));
- assertEquals(0, h.length());
- s.close();
-
-
-
- iDoc = new IndexDocumentStub(doc,delTerm,
- IndexAction.UPDATE);
- try{
- this.indexer.deleteDocument(iDoc);
- fail("document has not delete action ");
- }catch (GdataIndexerException e) {
-
- }
-
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.search.index.GDataIndexer.commit(boolean)'
- */
- public void testCommit() throws IOException {
- String id = "myID";
- Field f = new Field(FIELD_ID, id, Field.Store.YES,
- Field.Index.UN_TOKENIZED);
- Document doc = new Document();
- doc.add(f);
- Term delTerm = new Term(FIELD_ID, id);
- IndexDocument iDoc = new IndexDocumentStub(doc,delTerm,
- IndexAction.INSERT);
- this.indexer.addDocument(iDoc);
- iDoc = new IndexDocumentStub(doc,delTerm,
- IndexAction.UPDATE);
- this.indexer.updateDocument(iDoc);
- this.indexer.updateDocument(iDoc);
- iDoc = new IndexDocumentStub(doc,delTerm,
- IndexAction.DELETE);
- this.indexer.deleteDocument(iDoc);
- IndexEventListenerStub evListener = new IndexEventListenerStub();
- this.indexer.registerIndexEventListener(evListener);
- assertEquals(1,this.indexer.docsAdded.get());
- assertEquals(1,this.indexer.docsDeleted.get());
- assertEquals(2,this.indexer.docsUpdated.get());
- assertEquals(0,evListener.getCalledCount());
- this.indexer.commit(true);
- this.indexer.commit(false);
- assertEquals(1,evListener.getCalledCount());
- assertEquals(0,this.indexer.docsAdded.get());
- assertEquals(0,this.indexer.docsDeleted.get());
- assertEquals(0,this.indexer.docsUpdated.get());
- IndexSearcher s = new IndexSearcher(this.dir);
- Hits h = s.search(new TermQuery(delTerm));
- assertEquals(0, h.length());
- s.close();
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.search.index.GDataIndexer.registerIndexEventListener(IndexEventListener)'
- */
- public void testRegisterIndexEventListener() {
- IndexEventListenerStub evListener = new IndexEventListenerStub();
- this.indexer.registerIndexEventListener(evListener);
- this.indexer.registerIndexEventListener(evListener);
- assertEquals(0,evListener.getCalledCount());
- this.indexer.notifyCommitListeners("someId");
- this.indexer.notifyCommitListeners("someId");
- assertEquals(2,evListener.getCalledCount());
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.search.index.GDataIndexer.removeIndexEventListener(IndexEventListener)'
- */
- public void testRemoveIndexEventListener() {
- IndexEventListenerStub evListener = new IndexEventListenerStub();
- this.indexer.registerIndexEventListener(evListener);
- assertEquals(0,evListener.getCalledCount());
- this.indexer.notifyCommitListeners("someId");
- assertEquals(1,evListener.getCalledCount());
- this.indexer.removeIndexEventListener(evListener);
- this.indexer.removeIndexEventListener(evListener);
- this.indexer.notifyCommitListeners("someId");
- assertEquals(1,evListener.getCalledCount());
-
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.search.index.GDataIndexer.notifyCommitListeners(String)'
- */
- public void testNotifyCommitListeners() {
- IndexEventListenerStub evListener = new IndexEventListenerStub();
- IndexEventListenerStub evListener1 = new IndexEventListenerStub();
- IndexEventListenerStub evListener2 = new IndexEventListenerStub();
- this.indexer.registerIndexEventListener(evListener);
- this.indexer.registerIndexEventListener(evListener1);
- this.indexer.registerIndexEventListener(evListener2);
- assertEquals(0,evListener.getCalledCount());
- this.indexer.notifyCommitListeners("someId");
- assertEquals(1,evListener.getCalledCount());
- assertEquals(1,evListener1.getCalledCount());
- assertEquals(1,evListener2.getCalledCount());
- this.indexer.removeIndexEventListener(evListener);
- this.indexer.notifyCommitListeners("someId");
- assertEquals(1,evListener.getCalledCount());
- assertEquals(2,evListener1.getCalledCount());
- assertEquals(2,evListener2.getCalledCount());
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.search.index.GDataIndexer.closeWriter()'
- */
- public void testCloseWriter() throws IOException{
- assertNotNull(this.indexer.writer);
- this.indexer.closeWriter();
- assertNull(this.indexer.writer);
-
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.search.index.GDataIndexer.closeSearcher()'
- */
- public void testCloseSearcher() throws IOException {
- this.indexer.openSearcher();
- assertNotNull(this.indexer.searcher);
- this.indexer.closeSearcher();
- assertNull(this.indexer.searcher);
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.search.index.GDataIndexer.openSearcher()'
- */
- public void testOpenSearcher() throws IOException {
- this.indexer.searcher = null;
- this.indexer.openSearcher();
- assertNotNull(this.indexer.searcher);
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.search.index.GDataIndexer.openWriter()'
- */
- public void testOpenWriter() throws IOException {
- this.indexer.closeWriter();
- assertNull(this.indexer.writer);
- this.indexer.openWriter();
- assertNotNull(this.indexer.writer);
- }
-
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.search.index.GDataIndexer.destroy()'
- */
- public void testDestroy() throws InterruptedException, IOException {
- this.indexer.destroy();
- String id = "myID";
- Field f = new Field(FIELD_ID, id, Field.Store.YES,
- Field.Index.UN_TOKENIZED);
- Document doc = new Document();
- doc.add(f);
- Term delTerm = new Term(FIELD_ID, id);
- IndexDocument iDoc = new IndexDocumentStub(doc, delTerm,
- IndexAction.INSERT);
- Future future = new FutureStub(iDoc);
- try{
- this.indexer.addIndexableDocumentTask(future);
- fail("indexer already closed exc. expected");
- }catch (IllegalStateException e) {}
- this.indexer = GDataIndexer.createGdataIndexer(config, dir, true);
- CountDownLatch documentLatch = new CountDownLatch(1);
- iDoc = new IndexDocumentStub(doc, delTerm,
- IndexAction.INSERT,documentLatch);
-
- CountDownLatch latch = new CountDownLatch(1);
- future = new FutureStub(iDoc,latch,true);
- this.indexer.addIndexableDocumentTask(future);
- this.indexer.destroy();
- latch.countDown();
- documentLatch.await(5000,TimeUnit.MILLISECONDS);
- // wait active for the commit
- while(this.indexer.getWriter() != null){}
-
- IndexSearcher s = new IndexSearcher(this.dir);
- Hits h = s.search(new TermQuery(delTerm));
- assertEquals(1, h.length());
- s.close();
-
-
- }
-
- public void testInnerClassFuture() throws InterruptedException, ExecutionException, TimeoutException{
- Future f = new GDataIndexer.FinishingFuture();
- assertNull(f.get());
- assertNull(f.get(0,TimeUnit.MICROSECONDS));
- assertTrue(f.isDone());
- assertFalse(f.isCancelled());
- assertFalse(f.cancel(true));
-
- }
-
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/index/TestIndexController.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/index/TestIndexController.java
deleted file mode 100755
index 17799718a0e..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/index/TestIndexController.java
+++ /dev/null
@@ -1,382 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.index;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.List;
-import java.util.concurrent.CountDownLatch;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.search.GDataSearcher;
-import org.apache.lucene.gdata.search.config.IndexSchema;
-import org.apache.lucene.gdata.search.config.IndexSchemaField;
-import org.apache.lucene.gdata.search.config.IndexSchemaField.ContentType;
-import org.apache.lucene.gdata.search.index.IndexController.ServiceIndex;
-import org.apache.lucene.gdata.server.registry.GDataServerRegistry;
-import org.apache.lucene.gdata.utils.ProvidedServiceStub;
-import org.apache.lucene.gdata.utils.ReferenceCounter;
-import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.index.Term;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.TermQuery;
-
-
-/**
- *
- *
- */
-public class TestIndexController extends TestCase {
- IndexController controller;
-
- IndexSchema schema;
-
- File indexLocation;
-
- protected void setUp() throws Exception {
- this.controller = new IndexController();
- GDataServerRegistry reg = GDataServerRegistry.getRegistry();
-
- this.indexLocation = new File(System.getProperty("java.io.tmpdir"));
-
-
- ProvidedServiceStub stub = new ProvidedServiceStub();
- this.schema = new IndexSchema();
- // must be set
- this.schema.setDefaultSearchField("content");
- this.schema.setName(ProvidedServiceStub.SERVICE_NAME);
- this.schema.setIndexLocation(this.indexLocation.getAbsolutePath());
- IndexSchemaField field = new IndexSchemaField();
- field.setName("content");
- field.setPath("/somePath");
- field.setContentType(ContentType.TEXT);
- this.schema.addSchemaField(field);
- stub.setIndexSchema(this.schema);
-
- reg.registerService(stub);
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- GDataServerRegistry.getRegistry().destroy();
- this.controller.destroy();
- /*
- * this file will be created by the controller
- */
- File toDel = new File(this.indexLocation,
- ProvidedServiceStub.SERVICE_NAME);
- delAllFiles(toDel);
- }
-
- /*
- * del all created files
- */
- private void delAllFiles(File dir) {
- if (dir == null || !dir.exists())
- return;
- File[] files = dir.listFiles();
- for (int i = 0; i < files.length; i++) {
- while (!files[i].canWrite()) {
- }
- ;
- files[i].delete();
- }
- dir.delete();
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.search.index.IndexController.initialize()'
- */
- public void testInitialize() {
- this.controller.initialize();
- assertTrue(this.controller.indexerMap
- .containsKey(ProvidedServiceStub.SERVICE_NAME));
- ServiceIndex bean = this.controller.indexerMap
- .get(ProvidedServiceStub.SERVICE_NAME);
- assertNotNull(bean);
- assertNotNull(bean.getIndexer());
- assertSame(this.schema, bean.getSchema());
- assertTrue(GDataServerRegistry.getRegistry().getEntryEventMediator()
- .isListenerRegistered(this.controller));
-
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.search.index.IndexController.initialize()'
- */
- public void testInitializeValueMissing() {
- this.schema.setIndexLocation(null);
- try {
-
- this.controller.initialize();
- fail("missing index location");
- } catch (RuntimeException e) {
- }
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.search.index.IndexController.addIndexSchema(IndexSchema)'
- */
- public void testAddIndexSchema() {
- this.controller.initialize();
- assertEquals(1, this.controller.indexerMap.size());
- try {
- this.controller.addIndexSchema(this.schema);
- fail("schema already added");
- } catch (IllegalStateException e) {
-
- }
- this.schema.setName(null);
- try {
- this.controller.addIndexSchema(this.schema);
- fail("schema name is null");
- } catch (IllegalStateException e) {
-
- }
-
- this.schema.setName("someOthername");
- this.controller.addIndexSchema(this.schema);
- assertEquals(2, this.controller.indexerMap.size());
-
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.search.index.IndexController.createIndexer(IndexSchema)'
- */
- public void testCreateIndexDirectory() throws IOException {
- File f = new File(System.getProperty("java.io.tmpdir"), "gdataindexdir"
- + System.currentTimeMillis());
- f.mkdir();
- f.deleteOnExit();
- IndexWriter w = new IndexWriter(f, new StandardAnalyzer(), true);
- Document d = new Document();
- d.add(new Field("test", "test", Field.Store.NO, Field.Index.TOKENIZED));
- w.addDocument(d);
- w.close();
- assertFalse(this.controller.createIndexDirectory(f));
- // throw away files in the directory
- delAllFiles(f);
- File f1 = new File(System.getProperty("java.io.tmpdir"), "newIndexDir"
- + System.currentTimeMillis());
- f1.mkdir();
- f1.deleteOnExit();
- assertTrue(this.controller.createIndexDirectory(f1));
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.search.index.IndexController.createIndexLocation(String,
- * String)'
- */
- public void testCreateIndexLocation() throws IOException {
- File f = new File(System.getProperty("java.io.tmpdir"), "gdatadir"
- + System.currentTimeMillis());
- f.mkdir();
- f.deleteOnExit();
-
- assertEquals(f.getAbsolutePath(), this.controller.createIndexLocation(
- f.getParent(), f.getName()).getAbsolutePath());
- ;
- File pFile = new File(System.getProperty("java.io.tmpdir"), "gdatafile"
- + System.currentTimeMillis());
- pFile.deleteOnExit();
- try{
- this.controller.createIndexLocation(pFile.getParent(),pFile.getAbsolutePath());
- fail("can not create dir");
- }catch (RuntimeException e) {
-
- }
- assertTrue(pFile.createNewFile());
- try {
- this.controller.createIndexLocation(pFile.getParent(), pFile
- .getName());
- fail("file is not a directory");
- } catch (IllegalArgumentException e) {
-
- }
- try {
- this.controller.createIndexLocation(pFile.getName(), pFile
- .getName());
- fail("parent is not a directory");
- } catch (IllegalArgumentException e) {
-
- }
- try{
- this.controller.createIndexLocation(null,null);
- fail("null");
- }catch (GdataIndexerException e) {
-
- }
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.search.index.IndexController.getServiceSearcher(ProvidedService)'
- */
- public void testGetServiceSearcher() {
-
- this.controller.initialize();
- ReferenceCounter refCounter = this.controller.indexerMap
- .get(ProvidedServiceStub.SERVICE_NAME).getSearcher();
- GDataSearcher searcher = this.controller
- .getServiceSearcher(new ProvidedServiceStub());
- assertNotNull(searcher);
- GDataSearcher sameSearcher = this.controller
- .getServiceSearcher(new ProvidedServiceStub());
- assertSame(refCounter, this.controller.indexerMap.get(
- ProvidedServiceStub.SERVICE_NAME).getSearcher());
-
- this.controller.commitCallBack(ProvidedServiceStub.SERVICE_NAME);
- GDataSearcher newSearcher = this.controller
- .getServiceSearcher(new ProvidedServiceStub());
- assertNotSame(refCounter, this.controller.indexerMap.get(
- ProvidedServiceStub.SERVICE_NAME).getSearcher());
-
- sameSearcher.close();
- searcher.close();
- newSearcher.close();
-
- }
-
- public void testDestroy() {
- this.controller.initialize();
- try {
- this.controller.initialize();
- fail("controller is initialized");
- } catch (IllegalStateException e) {
- }
- this.controller.destroy();
- try {
- this.controller.getServiceSearcher(null);
- fail("controller is closed");
- } catch (IllegalStateException e) {
- }
- try {
- this.controller.commitCallBack("null");
- fail("controller is closed");
- } catch (IllegalStateException e) {
- }
-
- try {
- this.controller.destroy();
- fail("controller is closed");
- } catch (IllegalStateException e) {
- }
- try {
- this.controller.addIndexSchema(null);
- fail("controller is closed");
- } catch (IllegalStateException e) {
- }
- /*
- * init again to destroy in teardown
- */
- this.controller.initialize();
- }
-
-
- public void testfireInsertEvent(){
- try{
- this.controller.fireInsertEvent(null);
- fail("not initialized");
- }catch (IllegalStateException e) {
- // TODO: handle exception
- }
- this.controller.initialize();
- ServerBaseEntry e = new ServerBaseEntry();
- e.setId("someId");
- e.setFeedId("someId");
- e.setServiceConfig(new ProvidedServiceStub());
- this.controller.fireInsertEvent(e);
- }
-
- public void testCreateNewIndexTask() throws InterruptedException, IOException{
- this.schema.setCommitAfterDocuments(1);
- this.schema.setOptimizeAfterCommit(1);
- IndexSchemaField f = new IndexSchemaField();
- f.setName("myField");
- f.setContentType(ContentType.KEYWORD);
- f.setPath("entry/id");
- this.schema.addSchemaField(f);
- this.controller.initialize();
- ServerBaseEntry e = new ServerBaseEntry();
- e.setId("someId");
- e.setFeedId("someId");
- e.setServiceConfig(new ProvidedServiceStub());
- CommitListener l = new CommitListener();
- l.createLatch(1);
- ServiceIndex sIndex = this.controller.indexerMap.get(this.schema.getName());
- sIndex.getIndexer().registerIndexEventListener(l);
- this.controller.fireInsertEvent(e);
- l.waitOnLatch();
-
- assertEquals(1,sIndex.getIndexer().optimized.get());
- assertEquals(1,sIndex.getIndexer().committed.get());
-
- sIndex.getIndexer().removeIndexEventListener(l);
-
-
- e = new ServerBaseEntry();
- e.setId("someId");
- e.setFeedId("someId");
- e.setServiceConfig(new ProvidedServiceStub());
- l = new CommitListener();
- l.createLatch(1);
- sIndex = this.controller.indexerMap.get(this.schema.getName());
- sIndex.getIndexer().registerIndexEventListener(l);
- this.controller.fireUpdateEvent(e);
- l.waitOnLatch();
-
- assertEquals(2,sIndex.getIndexer().optimized.get());
- assertEquals(2,sIndex.getIndexer().committed.get());
-
- GDataSearcher searcher = this.controller.getServiceSearcher(e.getServiceConfig());
- List results = searcher.search(new TermQuery(new Term(IndexDocument.FIELD_ENTRY_ID,"someId")),10,0,"someId");
- assertEquals(1,results.size());
- searcher.close();
-
-
-
- }
-
- static class CommitListener implements IndexEventListener{
- public CountDownLatch latch;
-
- public void createLatch(int count){
- this.latch = new CountDownLatch(count);
- }
- public void waitOnLatch() throws InterruptedException{
- if(latch != null)
- latch.await();
- }
-
- public void commitCallBack(String service) {
- if(this.latch != null)
- this.latch.countDown();
- }
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/index/TestIndexLogReader.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/index/TestIndexLogReader.java
deleted file mode 100755
index 313b4582edd..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/index/TestIndexLogReader.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.index;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-
-import org.xml.sax.SAXException;
-
-import junit.framework.TestCase;
-
-/**
- *
- *
- */
-public class TestIndexLogReader extends TestCase {
- File logFile;
- Map actions;
- protected void setUp() throws Exception {
- this.logFile = new File(System.getProperty("java.io.tmpdir"),"log");
- this.logFile.deleteOnExit();
- this.logFile.createNewFile();
- this.actions = new HashMap();
-
-
- }
- private IndexLogWriter writeLog() throws IOException{
- this.actions = new HashMap();
- IndexLogWriter writer = new IndexLogWriter(this.logFile);
- boolean totwice = true;
- for (int i = 0; i < 10; i++) {
- IndexAction a = null;
- if(i%3 ==0)
- a= IndexAction.INSERT;
- if(i%3 ==1)
- a= IndexAction.UPDATE;
- if(i%3 ==2)
- a= IndexAction.DELETE;
- this.actions.put(""+i,a);
- writer.writeAction(""+i,a);
- /*
- * double action
- */
- if(i == 9 && totwice){
- i = 0;
- totwice = false;
- }
- }
- return writer;
- }
- protected void tearDown() throws Exception {
- super.tearDown();
- this.logFile.delete();
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.search.index.IndexLogReader.readIndexLog(File, Map)'
- */
- public void testReadIndexLog() throws SAXException, IOException {
- writeLog().close();
-
- Map readActionMap = new HashMap();
- IndexLogReader.readIndexLog(this.logFile,readActionMap);
- Set keySet = this.actions.keySet();
- assertEquals(10,keySet.size());
- for (String string : keySet) {
- assertTrue(readActionMap.get(string).equals(actions.get(string)));
- }
-
-
-
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.search.index.IndexLogReader.readIndexLog(File, Map)'
- */
- public void testReadIndexLogNoInputMap() throws SAXException, IOException {
- writeLog().close();
-
- Map readActionMap = IndexLogReader.readIndexLog(this.logFile,null);
- Set keySet = this.actions.keySet();
- assertEquals(10,keySet.size());
- for (String string : keySet) {
- assertTrue(readActionMap.get(string).equals(actions.get(string)));
- }
-
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.search.index.IndexLogReader.readIndexLog(File, Map)'
- */
- public void testReadIndexLogFixLogFile() throws SAXException, IOException {
- writeLog();
-
- Map readActionMap = IndexLogReader.readIndexLog(this.logFile,null);
- Set keySet = this.actions.keySet();
- assertEquals(10,keySet.size());
- for (String string : keySet) {
- assertTrue(readActionMap.get(string).equals(actions.get(string)));
- }
-
- }
-
- public void testWriterClosed()throws SAXException, IOException{
- IndexLogWriter writer = writeLog();
- writer.close();
- try{
- writer.writeAction(null,null);
- fail("writer is closed");
- }catch (IllegalStateException e) {
-
- }
- try{
- writer.close();
- fail("writer is closed");
- }catch (IllegalStateException e) {
-
- }
-
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/index/TestindexDocumentBuilderTask.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/index/TestindexDocumentBuilderTask.java
deleted file mode 100755
index 91a8ee02105..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/index/TestindexDocumentBuilderTask.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.index;
-
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.search.config.IndexSchema;
-import org.apache.lucene.gdata.search.config.IndexSchemaField;
-import org.apache.lucene.gdata.search.config.IndexSchemaField.ContentType;
-import org.apache.lucene.gdata.utils.ProvidedServiceStub;
-
-import com.google.gdata.data.PlainTextConstruct;
-
-/**
- *
- *
- */
-public class TestindexDocumentBuilderTask extends TestCase {
- IndexDocumentBuilder fineBuilder;
- IndexDocumentBuilder failInStrategyBuilder;
- IndexDocumentBuilder builder;
- IndexDocumentBuilderTask zeroFields;
- static String ID = "someId";
- static String CONTENT_FIELD = "someId";
- static String CONTENT = "foo bar";
- protected void setUp() throws Exception {
- ServerBaseEntry entry = new ServerBaseEntry();
- entry.setVersionId("1");
- entry.setFeedId("myFeed");
- entry.setId(ID);
- entry.setContent(new PlainTextConstruct(CONTENT));
- entry.setServiceConfig(new ProvidedServiceStub());
- IndexSchema schema = new IndexSchema();
- schema.setName("mySchema");
- IndexSchemaField field = new IndexSchemaField();
- field.setName(CONTENT_FIELD);
- field.setPath("/entry/content");
- field.setContentType(ContentType.TEXT);
- schema.addSchemaField(field);
- this.fineBuilder = new IndexDocumentBuilderTask(entry,schema,IndexAction.INSERT,true,true);
-
- /*
- * two fields, one will fail due to broken xpath.
- * One will remain.
- */
- schema = new IndexSchema();
- schema.setName("mySchema");
- field = new IndexSchemaField();
- field.setName("someContent");
- //broken xpath
- field.setPath("/entry///wrongXPath");
- field.setContentType(ContentType.TEXT);
- schema.addSchemaField(field);
- field = new IndexSchemaField();
- field.setName(CONTENT_FIELD);
- field.setPath("/entry/content");
- field.setContentType(ContentType.TEXT);
- schema.addSchemaField(field);
- this.failInStrategyBuilder = new IndexDocumentBuilderTask(entry,schema,IndexAction.INSERT,false,false);
- //fail with no fields
- schema = new IndexSchema();
- schema.setName("mySchema");
- this.zeroFields = new IndexDocumentBuilderTask(entry,schema,IndexAction.INSERT,false,false);
-
-
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.search.index.IndexDocumentBuilderTask.IndexDocumentBuilderTask(ServerBaseEntry, IndexSchema, IndexAction, boolean)'
- */
- public void testIndexDocumentBuilderTask() {
- IndexDocument doc = this.fineBuilder.call();
- assertNotNull(doc.getDeletealbe());
- assertNotNull(doc.getWriteable());
- assertEquals(IndexDocument.FIELD_ENTRY_ID,doc.getDeletealbe().field());
- assertEquals(ID,doc.getDeletealbe().text());
- assertEquals(ID,doc.getWriteable().getField(IndexDocument.FIELD_ENTRY_ID).stringValue());
- assertNotNull(doc.getWriteable().getField(CONTENT_FIELD).stringValue());
-
- /*
- * the broken xpath fails but the other fields will be indexed
- */
- doc = this.failInStrategyBuilder.call();
- assertNotNull(doc.getDeletealbe());
- assertNotNull(doc.getWriteable());
- assertEquals(IndexDocument.FIELD_ENTRY_ID,doc.getDeletealbe().field());
- assertEquals(ID,doc.getDeletealbe().text());
- assertEquals(ID,doc.getWriteable().getField(IndexDocument.FIELD_ENTRY_ID).stringValue());
- assertNotNull(doc.getWriteable().getField(CONTENT_FIELD).stringValue());
-
- try{
- this.zeroFields.call();
- fail("zero fields in document");
- }catch (GdataIndexerException e) {}
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.search.index.IndexDocumentBuilderTask.call()'
- */
- public void testCall() throws InterruptedException, ExecutionException {
- ExecutorService service = Executors.newSingleThreadExecutor();
- Future future = service.submit(this.fineBuilder);
- IndexDocument doc = future.get();
- assertNotNull(doc.getDeletealbe());
- assertNotNull(doc.getWriteable());
- assertEquals(IndexDocument.FIELD_ENTRY_ID,doc.getDeletealbe().field());
- assertEquals(ID,doc.getDeletealbe().text());
- assertEquals(ID,doc.getWriteable().getField(IndexDocument.FIELD_ENTRY_ID).stringValue());
- assertNotNull(doc.getWriteable().getField(CONTENT_FIELD).stringValue());
- assertTrue(doc.commitAfter());
- assertTrue(doc.optimizeAfter());
-
- /*
- * the broken xpath fails but the other fields will be indexed
- */
- future = service.submit(this.failInStrategyBuilder);
- doc = future.get();
-
- assertNotNull(doc.getDeletealbe());
- assertNotNull(doc.getWriteable());
- assertEquals(IndexDocument.FIELD_ENTRY_ID,doc.getDeletealbe().field());
- assertEquals(ID,doc.getDeletealbe().text());
- assertEquals(ID,doc.getWriteable().getField(IndexDocument.FIELD_ENTRY_ID).stringValue());
- assertNotNull(doc.getWriteable().getField(CONTENT_FIELD).stringValue());
- future = service.submit(this.zeroFields);
-
- try{
- future.get();
- fail("zero fields in document");
- }catch (ExecutionException e) {
- assertTrue(e.getCause().getClass() == GdataIndexerException.class);
-
- }
- service.shutdownNow();
- }
-
-
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/query/TestGdataQueryParser.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/query/TestGdataQueryParser.java
deleted file mode 100755
index 09a1927f2f1..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/query/TestGdataQueryParser.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.query;
-
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
-import org.apache.lucene.gdata.search.config.IndexSchema;
-import org.apache.lucene.queryParser.QueryParser.Operator;
-
-import junit.framework.TestCase;
-
-public class TestGdataQueryParser extends TestCase {
-
-
- public void testConstructor(){
- String field = "someField";
- IndexSchema s = new IndexSchema();
- s.setDefaultSearchField(field);
- GDataQueryParser p = new GDataQueryParser(s);
- assertEquals(field,p.getField());
- assertEquals(Operator.AND,p.getDefaultOperator());
- assertEquals(StandardAnalyzer.class,p.getAnalyzer().getClass());
- }
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/query/TestQueryTranslator.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/query/TestQueryTranslator.java
deleted file mode 100755
index 6f7e7e255ee..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/search/query/TestQueryTranslator.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.search.query;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.lucene.gdata.search.config.IndexSchema;
-import org.apache.lucene.gdata.search.config.IndexSchemaField;
-import org.apache.lucene.gdata.search.config.IndexSchemaField.ContentType;
-import org.apache.lucene.gdata.utils.ProvidedServiceStub;
-import org.apache.lucene.index.Term;
-import org.apache.lucene.search.RangeQuery;
-
-import junit.framework.TestCase;
-
-/**
- *
- *
- */
-public class TestQueryTranslator extends TestCase {
- private static final String CONTENT_FIELD = "content";
- private static final String UPDATED_FIELD = "updated";
- private IndexSchema schema;
- Map parameterMap;
- /*
- * @see junit.framework.TestCase#setUp()
- */
- @Override
- protected void setUp() throws Exception {
- this.schema = new IndexSchema();
- //must be set
- this.schema.setDefaultSearchField(CONTENT_FIELD);
- this.schema.setIndexLocation("/tmp/");
- this.schema.setName(ProvidedServiceStub.SERVICE_NAME);
- IndexSchemaField field = new IndexSchemaField();
-
- field.setName(CONTENT_FIELD);
- field.setContentType(ContentType.TEXT);
-
- IndexSchemaField field1 = new IndexSchemaField();
- field1.setName(UPDATED_FIELD);
- field1.setContentType(ContentType.GDATADATE);
- this.schema.addSchemaField(field);
- this.schema.addSchemaField(field1);
- parameterMap = new HashMap();
-
-
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.search.query.QueryTranslator.translateHttpSearchRequest(IndexSchema, Map, String, String)'
- */
- public void testTranslateHttpSearchRequest() {
- assertNull(QueryTranslator.translateHttpSearchRequest(this.schema,this.parameterMap,null));
- String contentQuery = "content1 -content2 \"exact Content\"";
- parameterMap.put("q", new String[]{contentQuery});
- String expected = CONTENT_FIELD+":("+contentQuery+") ";
-
- assertEquals(expected,QueryTranslator.translateHttpSearchRequest(this.schema,this.parameterMap,null));
- parameterMap.put("updated-min", new String[]{"2005-08-09T10:57:00-08:00"});
- parameterMap.put("updated-max", new String[]{"2005-10-09T10:57:00-08:00"});
- parameterMap.put("max-results", new String[]{"3"});
- parameterMap.remove("q");
- parameterMap.put(CONTENT_FIELD, new String[]{"apache"});
-
- String tranlatedQuery = QueryTranslator.translateHttpSearchRequest(this.schema,this.parameterMap,"test |{urn:google.com} {urn:apache.org}");
- assertTrue(tranlatedQuery.contains("updated:[1123613820000 TO 1128884219999]"));
- assertTrue(tranlatedQuery.contains(CONTENT_FIELD+":(apache)"));
-
- parameterMap.remove("updated-max");
- tranlatedQuery = QueryTranslator.translateHttpSearchRequest(this.schema,this.parameterMap,"test |{urn:google.com} {urn:apache.org}");
- assertTrue(tranlatedQuery.contains("updated:[1123613820000 TO "+Long.MAX_VALUE+"]"));
- assertTrue(tranlatedQuery.contains(CONTENT_FIELD+":(apache)"));
- parameterMap.put("updated-max", new String[]{"2005-10-09T10:57:00-08:00"});
- parameterMap.remove("updated-min");
- tranlatedQuery = QueryTranslator.translateHttpSearchRequest(this.schema,this.parameterMap,"test |{urn:google.com} {urn:apache.org}");
- assertTrue(tranlatedQuery.contains("updated:["+0+" TO 1128884219999]"));
- assertTrue(tranlatedQuery.contains(CONTENT_FIELD+":(apache)"));
-
-
-
- parameterMap.put("wrong-parameter", new String[]{"3"});
- try{
- QueryTranslator.translateHttpSearchRequest(this.schema,this.parameterMap,"test |{urn:google.com} {urn:apache.org}");
- fail("illegal parameter");
- }catch (RuntimeException e) {
-
- }
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/TestGDataRequest.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/TestGDataRequest.java
deleted file mode 100644
index f635a8e851f..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/TestGDataRequest.java
+++ /dev/null
@@ -1,681 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.server;
-
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.StringTokenizer;
-
-import javax.servlet.http.HttpServletRequest;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.gdata.search.config.IndexSchema;
-import org.apache.lucene.gdata.search.config.IndexSchemaField;
-import org.apache.lucene.gdata.search.config.IndexSchemaField.ContentType;
-import org.apache.lucene.gdata.server.GDataRequest.GDataRequestType;
-import org.apache.lucene.gdata.server.GDataRequest.OutputFormat;
-import org.apache.lucene.gdata.server.registry.GDataServerRegistry;
-import org.apache.lucene.gdata.server.registry.ProvidedService;
-import org.apache.lucene.gdata.utils.ProvidedServiceStub;
-import org.apache.lucene.gdata.utils.StorageStub;
-import org.easymock.MockControl;
-
-/**
- *
- * @author Simon Willnauer
- *
- */
-public class TestGDataRequest extends TestCase {
- private HttpServletRequest request;
-
- private MockControl control;
-
- private GDataRequest feedRequest;
-
- private Map parametermap = new HashMap();
-
- @Override
- protected void setUp() throws Exception {
- try{
- GDataServerRegistry.getRegistry().registerComponent(StorageStub.class,null);
- }catch (Exception e) {
-
- }
- ProvidedService configurator = new ProvidedServiceStub();
- GDataServerRegistry.getRegistry().registerService(configurator);
- IndexSchema schema = new IndexSchema();
- //must be set
- schema.setDefaultSearchField("field");
- schema.setIndexLocation("/tmp/");
- schema.setName(ProvidedServiceStub.SERVICE_NAME);
-
- ((ProvidedServiceStub)configurator).setIndexSchema(schema);
-
- this.control = MockControl.createControl(HttpServletRequest.class);
- this.request = (HttpServletRequest) this.control.getMock();
- this.feedRequest = new GDataRequest(this.request,GDataRequestType.GET);
-
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- this.control.reset();
- GDataServerRegistry.getRegistry().destroy();
- }
-
- public void testConstructor() {
- try {
- new GDataRequest(null,GDataRequestType.GET);
- fail("IllegalArgumentException expected");
- } catch (IllegalArgumentException e) {
- //
- }
- try {
- new GDataRequest(null,null);
- fail("IllegalArgumentException expected");
- } catch (IllegalArgumentException e) {
- //
- }
- try {
- new GDataRequest(this.request,null);
- fail("IllegalArgumentException expected");
- } catch (IllegalArgumentException e) {
- //
- }
- }
-
- public void testGetFeedId() throws GDataRequestException {
- this.control.expectAndDefaultReturn(this.request.getParameterMap(),this.parametermap);
- this.control.expectAndDefaultReturn(this.request.getPathInfo(),
- "/"+ProvidedServiceStub.SERVICE_NAME+"/feed/1/1");
- this.control.expectAndDefaultReturn(this.request.getParameter("alt"),
- null);
- this.control.replay();
- this.feedRequest.initializeRequest();
- assertEquals("feedID", this.feedRequest.getFeedId(), "feed");
- this.control.reset();
-
- }
-
- public void testEmptyPathInfo() {
- this.control.expectAndDefaultReturn(this.request.getPathInfo(), "/");
- this.control.expectAndDefaultReturn(this.request.getParameter("alt"),
- null);
- this.control.replay();
- try {
- this.feedRequest.initializeRequest();
-
- fail("FeedRequestException expected");
- } catch (GDataRequestException e) {
- // expected
- } catch (Exception e) {
- fail("FeedRequestException expected");
- }
-
- }
-
- public void testGetFeedIdWithoutEntry() throws GDataRequestException {
- this.control.expectAndDefaultReturn(this.request.getParameterMap(),this.parametermap);
- this.control
- .expectAndDefaultReturn(this.request.getPathInfo(), "/"+ProvidedServiceStub.SERVICE_NAME+"/feed");
- this.control.expectAndDefaultReturn(this.request.getParameter("alt"),
- null);
- this.control.replay();
- this.feedRequest.initializeRequest();
- assertEquals("feedID", this.feedRequest.getFeedId(), "feed");
- }
-
- public void testGetEntyId() throws GDataRequestException {
- this.control.expectAndDefaultReturn(this.request.getParameterMap(),this.parametermap);
- this.control.expectAndDefaultReturn(this.request.getPathInfo(),
- "/"+ProvidedServiceStub.SERVICE_NAME+"/feed/1/15");
- this.control.expectAndDefaultReturn(this.request.getParameter("alt"),
- null);
- this.control.replay();
- this.feedRequest.initializeRequest();
- assertEquals("entryid", this.feedRequest.getEntryId(), "1");
- assertEquals("feedId", this.feedRequest.getFeedId(), "feed");
- assertEquals("entryid", this.feedRequest.getEntryVersion(), "15");
- this.control.reset();
-
- }
-
- public void testSetResponseFormatAtom() throws GDataRequestException {
- this.control.expectAndDefaultReturn(this.request.getParameterMap(),this.parametermap);
- this.control.expectAndDefaultReturn(this.request.getParameter("alt"),
- "atom");
- this.control
- .expectAndDefaultReturn(this.request.getPathInfo(),"/"+ProvidedServiceStub.SERVICE_NAME+ "/feed");
- this.control.replay();
- this.feedRequest.initializeRequest();
- assertEquals("ResponseFromat Atom", this.feedRequest
- .getRequestedResponseFormat(), OutputFormat.ATOM);
- this.control.reset();
- }
-
- public void testSetResponseFormatRSS() throws GDataRequestException {
- this.control.expectAndDefaultReturn(this.request.getParameterMap(),this.parametermap);
- this.control.expectAndDefaultReturn(this.request.getParameter("alt"),
- "rss");
- this.control
- .expectAndDefaultReturn(this.request.getPathInfo(), "/"+ProvidedServiceStub.SERVICE_NAME+"/feed");
- this.control.replay();
- this.feedRequest.initializeRequest();
- assertEquals("ResponseFromat RSS", this.feedRequest
- .getRequestedResponseFormat(), OutputFormat.RSS);
- this.control.reset();
- }
-
- public void testSetResponseFormatKeepAtom() throws GDataRequestException {
- this.control.expectAndDefaultReturn(this.request.getParameterMap(),this.parametermap);
- this.control.expectAndDefaultReturn(this.request.getParameter("alt"),
- "fooBar");
- this.control
- .expectAndDefaultReturn(this.request.getPathInfo(), "/"+ProvidedServiceStub.SERVICE_NAME+"/feed");
- this.control.replay();
- this.feedRequest.initializeRequest();
- assertEquals("ResponseFromat Atom", this.feedRequest
- .getRequestedResponseFormat(), OutputFormat.ATOM);
- this.control.reset();
- }
-
- public void testSetResponseFormatNull() throws GDataRequestException {
- this.control.expectAndDefaultReturn(this.request.getParameterMap(),this.parametermap);
- this.control.expectAndDefaultReturn(this.request.getParameter("alt"),
- null);
-
- this.control
- .expectAndDefaultReturn(this.request.getPathInfo(), "/"+ProvidedServiceStub.SERVICE_NAME+"/feed");
- this.control.replay();
- this.feedRequest.initializeRequest();
- assertEquals("ResponseFromat Atom", this.feedRequest
- .getRequestedResponseFormat(), OutputFormat.ATOM);
- this.control.reset();
- }
-
- public void testGetItemsPerPage() throws GDataRequestException {
- this.control.expectAndReturn(this.request.getParameter("max-results"),
- null);
- this.control.replay();
- assertEquals("default value 25", 25, this.feedRequest.getItemsPerPage());
- this.control.verify();
- this.control.reset();
-
- this.control.expectAndReturn(this.request.getParameter("max-results"),
- "24", 2);
- this.control.replay();
- assertEquals("24 results", 24, this.feedRequest.getItemsPerPage());
- this.control.verify();
- this.control.reset();
-
- this.control.expectAndReturn(this.request.getParameter("max-results"),
- "-1", 2);
- this.control.replay();
- assertEquals("25 results", 25, this.feedRequest.getItemsPerPage());
- this.control.verify();
- this.control.reset();
-
- this.control.expectAndReturn(this.request.getParameter("max-results"),
- "helloworld", 2);
- this.control.replay();
- assertEquals("25 results", 25, this.feedRequest.getItemsPerPage());
- this.control.verify();
- this.control.reset();
- }
-
- public void testGetSelfId() throws GDataRequestException{
- String host = "www.apache.org";
- String feedAndEntryID = "/"+ProvidedServiceStub.SERVICE_NAME+"/feed/entryid";
- String queryString = "max-results=25";
- this.control.expectAndDefaultReturn(this.request.getParameterMap(),this.parametermap);
- this.control.expectAndDefaultReturn(this.request.getHeader("Host"),host);
- this.control.expectAndDefaultReturn(this.request.getRequestURI(),"/host"+"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/entryId/15/");
- this.control.expectAndDefaultReturn(this.request.getPathInfo(),"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/entryId/15");
- this.control.expectAndReturn(this.request.getParameter("max-results"),"25",2);
- this.control.expectAndDefaultReturn(this.request.getParameter("alt"),
- null);
- this.control.expectAndDefaultReturn(this.request.getQueryString(),
- queryString);
- this.control.replay();
- this.feedRequest.initializeRequest();
- String selfID = "http://"+host+"/host"+"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/entryId/15?"+queryString;
- assertEquals("Self ID",selfID,this.feedRequest.getSelfId());
- this.control.reset();
-
-
- queryString = "alt=rss&max-results=25";
- this.control.expectAndDefaultReturn(this.request.getParameterMap(),this.parametermap);
- this.control.expectAndDefaultReturn(this.request.getHeader("Host"),host);
- this.control.expectAndDefaultReturn(this.request.getRequestURI(),"/host"+"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/entryId/15/");
- this.control.expectAndDefaultReturn(this.request.getPathInfo(),"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/entryId/15");
- this.control.expectAndReturn(this.request.getParameter("max-results"),"25",2);
- this.control.expectAndDefaultReturn(this.request.getParameter("alt"),
- null);
- this.control.expectAndDefaultReturn(this.request.getQueryString(),
- queryString);
- this.control.replay();
- this.feedRequest.initializeRequest();
- selfID = "http://"+host+"/host"+"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/entryId/15?"+queryString;
-
- assertEquals("Self ID",selfID,this.feedRequest.getSelfId());
- this.control.reset();
-
- queryString = "";
- this.control.expectAndDefaultReturn(this.request.getParameterMap(),this.parametermap);
- this.control.expectAndDefaultReturn(this.request.getHeader("Host"),host);
- this.control.expectAndDefaultReturn(this.request.getRequestURI(),"/host"+"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/entryId/15/");
- this.control.expectAndDefaultReturn(this.request.getPathInfo(),"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/entryId/15");
- this.control.expectAndDefaultReturn(this.request.getParameter("max-results"),null);
- this.control.expectAndDefaultReturn(this.request.getParameter("alt"),
- null);
- this.control.expectAndDefaultReturn(this.request.getQueryString(),
- null);
- this.control.replay();
- this.feedRequest.initializeRequest();
- selfID = "http://"+host+"/host"+"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/entryId/15"+"?max-results=25";
-
- assertEquals("Self ID",selfID,this.feedRequest.getSelfId());
- this.control.reset();
- }
-
- public void testGetQueryString(){
- String maxResults = "max-results=25";
- String queryString = "?"+maxResults;
- this.control.expectAndReturn(this.request.getParameter("max-results"),"25",2);
-
- this.control.expectAndDefaultReturn(this.request.getQueryString(),
- queryString);
- this.control.replay();
-
- assertEquals(queryString,this.feedRequest.getQueryString());
- this.control.reset();
- // test no result defined
- queryString = "?alt=rss";
- this.control.expectAndDefaultReturn(this.request.getParameter("max-results"),null);
-
- this.control.expectAndDefaultReturn(this.request.getQueryString(),
- queryString);
- this.control.replay();
-
- assertEquals(queryString+"&"+maxResults,this.feedRequest.getQueryString());
- this.control.reset();
-
-// test no result defined && query == null
- queryString = null;
- this.control.expectAndDefaultReturn(this.request.getParameter("max-results"),null);
-
- this.control.expectAndDefaultReturn(this.request.getQueryString(),
- queryString);
- this.control.replay();
-
- assertEquals(maxResults,this.feedRequest.getQueryString());
- this.control.reset();
-
- }
-
- public void testIsFeedRequest() throws GDataRequestException{
- String host = "www.apache.org";
- String feedAndEntryID = "/feed";
- this.control.expectAndDefaultReturn(this.request.getParameterMap(),this.parametermap);
- this.control.expectAndDefaultReturn(this.request.getHeader("Host"),host);
- this.control.expectAndDefaultReturn(this.request.getRequestURI(),"/host"+"/"+ProvidedServiceStub.SERVICE_NAME+"/feed");
- this.control.expectAndDefaultReturn(this.request.getPathInfo(),"/"+ProvidedServiceStub.SERVICE_NAME+"/feed");
-
- this.control.expectAndDefaultReturn(this.request.getParameter("alt"),
- null);
- this.control.expectAndDefaultReturn(this.request.getQueryString(),
- null);
- this.control.replay();
- this.feedRequest.initializeRequest();
-
-
- assertTrue(this.feedRequest.isFeedRequested());
- assertFalse(this.feedRequest.isEntryRequested());
- this.control.reset();
-
- host = "www.apache.org";
- feedAndEntryID = "/"+ProvidedServiceStub.SERVICE_NAME+"/feed/1";
- this.control.expectAndDefaultReturn(this.request.getParameterMap(),this.parametermap);
- this.control.expectAndDefaultReturn(this.request.getHeader("Host"),host);
- this.control.expectAndDefaultReturn(this.request.getRequestURI(),"/host"+"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/1");
- this.control.expectAndDefaultReturn(this.request.getPathInfo(),feedAndEntryID);
-
- this.control.expectAndDefaultReturn(this.request.getParameter("alt"),
- null);
- this.control.expectAndDefaultReturn(this.request.getQueryString(),
- null);
- this.control.replay();
- this.feedRequest.initializeRequest();
-
-
- assertFalse(this.feedRequest.isFeedRequested());
- assertTrue(this.feedRequest.isEntryRequested());
- this.control.reset();
-
- host = "www.apache.org";
- feedAndEntryID = "/"+ProvidedServiceStub.SERVICE_NAME+"/feed/1";
- this.control.expectAndDefaultReturn(this.request.getParameterMap(),this.parametermap);
- this.control.expectAndDefaultReturn(this.request.getHeader("Host"),host);
- this.control.expectAndDefaultReturn(this.request.getRequestURI(),"/host"+"/"+"NOTREGISTERED"+"/feed/1");
- this.control.expectAndDefaultReturn(this.request.getPathInfo(),"/"+"NOTREGISTERED"+"/feed/1");
-
- this.control.expectAndDefaultReturn(this.request.getParameter("alt"),
- null);
- this.control.expectAndDefaultReturn(this.request.getQueryString(),
- null);
- this.control.replay();
- try{
- this.feedRequest.initializeRequest();
- fail("service not registered");
- }catch (GDataRequestException e) {
- //
- }
- this.control.reset();
-
- host = "www.apache.org";
- feedAndEntryID = "/"+ProvidedServiceStub.SERVICE_NAME+"/feed/1";
- this.control.expectAndDefaultReturn(this.request.getParameterMap(),this.parametermap);
- this.control.expectAndDefaultReturn(this.request.getHeader("Host"),host);
- this.control.expectAndDefaultReturn(this.request.getRequestURI(),"/host"+"/"+ProvidedServiceStub.SERVICE_NAME+"/");
- this.control.expectAndDefaultReturn(this.request.getPathInfo(),"/"+ProvidedServiceStub.SERVICE_NAME+"/");
-
- this.control.expectAndDefaultReturn(this.request.getParameter("alt"),
- null);
- this.control.expectAndDefaultReturn(this.request.getQueryString(),
- null);
- this.control.replay();
- try{
- this.feedRequest.initializeRequest();
- fail("service not registered");
- }catch (GDataRequestException e) {
-//
- }
- this.control.reset();
-
-
- }
- public void testgetAuthToken(){
- this.control.expectAndDefaultReturn(this.request.getHeader("Authentication"),"GoogleLogin auth=bla");
- this.control.replay();
- assertEquals("bla",this.feedRequest.getAuthToken());
- this.control.verify();
- this.control.reset();
-
- this.control.expectAndDefaultReturn(this.request.getHeader("Authentication"),null);
- this.control.replay();
- assertNull(this.feedRequest.getAuthToken());
- this.control.verify();
- this.control.reset();
-
- }
-
- public void testGetStartIndex(){
- this.control.expectAndDefaultReturn(this.request.getParameter("start-index"),"5");
- this.control.replay();
- assertEquals(5,this.feedRequest.getStartIndex());
- this.control.verify();
- this.control.reset();
- this.control.expectAndDefaultReturn(this.request.getParameter("start-index"),"-5");
- this.control.replay();
- assertEquals(1,this.feedRequest.getStartIndex());
- this.control.verify();
- this.control.reset();
- this.control.expectAndDefaultReturn(this.request.getParameter("start-index"),"unparsable");
- this.control.replay();
- assertEquals(1,this.feedRequest.getStartIndex());
- this.control.verify();
- this.control.reset();
- }
-
- public void testGetNextId() throws GDataRequestException{
- String host = "www.apache.org";
- String feedAndEntryID = "/"+ProvidedServiceStub.SERVICE_NAME+"/feed/entryid";
- String queryString = "max-results=25";
- String startIndex = "start-index=26";
- Enumeration enu = new StringTokenizer("max-results",",");
-
- this.control.expectAndDefaultReturn(this.request.getParameterMap(),this.parametermap);
- this.control.expectAndDefaultReturn(this.request.getParameterNames(),enu);
- this.control.expectAndDefaultReturn(this.request.getHeader("Host"),host);
- this.control.expectAndDefaultReturn(this.request.getRequestURI(),"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/");
- this.control.expectAndDefaultReturn(this.request.getPathInfo(),"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/");
- this.control.expectAndReturn(this.request.getParameter("max-results"),"25",3);
- this.control.expectAndReturn(this.request.getParameter("start-index"),null);
- this.control.expectAndDefaultReturn(this.request.getParameter("alt"),
- null);
- this.control.expectAndDefaultReturn(this.request.getQueryString(),
- queryString);
- this.control.replay();
-
- this.feedRequest.initializeRequest();
- String nextID = "http://"+host+"/"+ProvidedServiceStub.SERVICE_NAME+"/feed?"+startIndex+"&"+queryString;
-
- assertEquals("Next ID",nextID,this.feedRequest.getNextId());
- this.control.verify();
- this.control.reset();
-
- enu = new StringTokenizer("alt,max-results,start-index",",");
- queryString = "alt=rss&max-results=25";
- this.control.expectAndDefaultReturn(this.request.getParameterMap(),this.parametermap);
- this.control.expectAndDefaultReturn(this.request.getHeader("Host"),host);
- this.control.expectAndDefaultReturn(this.request.getRequestURI(),"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/");
- this.control.expectAndDefaultReturn(this.request.getPathInfo(),"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/");
- this.control.expectAndReturn(this.request.getParameter("max-results"),"25",4);
- this.control.expectAndReturn(this.request.getParameter("start-index"),"26",4);
- this.control.expectAndDefaultReturn(this.request.getParameter("alt"),
- "rss");
- this.control.expectAndDefaultReturn(this.request.getQueryString(),
- queryString+"&"+startIndex);
-
- this.control.expectAndDefaultReturn(this.request.getParameterNames(),enu);
-
-
- this.control.replay();
- this.feedRequest.initializeRequest();
- startIndex = "&start-index=51";
- nextID = "http://"+host+"/"+ProvidedServiceStub.SERVICE_NAME+"/feed?"+queryString+startIndex;
-
- assertEquals("Next ID 51",nextID,this.feedRequest.getNextId());
- this.control.reset();
-
- queryString = "";
- this.control.expectAndDefaultReturn(this.request.getParameterMap(),this.parametermap);
- this.control.expectAndDefaultReturn(this.request.getHeader("Host"),host);
- this.control.expectAndDefaultReturn(this.request.getRequestURI(),"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/");
- this.control.expectAndDefaultReturn(this.request.getPathInfo(),"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/entryId/15");
- this.control.expectAndDefaultReturn(this.request.getParameter("max-results"),null);
- this.control.expectAndDefaultReturn(this.request.getParameter("alt"),
- null);
- this.control.expectAndDefaultReturn(this.request.getQueryString(),
- null);
- this.control.replay();
- this.feedRequest.initializeRequest();
- String nextId = "http://"+host+"/"+ProvidedServiceStub.SERVICE_NAME+"/feed"+"?max-results=25&start-index=26";
-
- assertEquals("next ID",nextId,this.feedRequest.getNextId());
- this.control.reset();
-
-
- this.control.expectAndDefaultReturn(this.request.getParameterMap(),this.parametermap);
- this.control.expectAndDefaultReturn(this.request.getHeader("Host"),host);
- this.control.expectAndDefaultReturn(this.request.getRequestURI(),"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/");
- this.control.expectAndDefaultReturn(this.request.getPathInfo(),"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/entryId/15");
- this.control.expectAndReturn(this.request.getParameter("max-results"),null,3);
- this.control.expectAndReturn(this.request.getParameter("start-index"),null,3);
- this.control.expectAndDefaultReturn(this.request.getParameter("alt"),
- null);
- this.control.expectAndDefaultReturn(this.request.getQueryString(),
- null);
- this.control.replay();
- this.feedRequest.initializeRequest();
- nextId = "http://"+host+"/"+ProvidedServiceStub.SERVICE_NAME+"/feed"+"?max-results=25&start-index=26";
- assertEquals("nextID",nextId,this.feedRequest.getNextId());
- }
-
- public void testGetpreviousId() throws GDataRequestException{
- String host = "www.apache.org";
- String feedAndEntryID = "/"+ProvidedServiceStub.SERVICE_NAME+"/feed/entryid";
- String queryString = "max-results=25";
-
- Enumeration enu = new StringTokenizer("max-results",",");
-
- this.control.expectAndDefaultReturn(this.request.getParameterMap(),this.parametermap);
- this.control.expectAndDefaultReturn(this.request.getParameterNames(),enu);
- this.control.expectAndDefaultReturn(this.request.getHeader("Host"),host);
- this.control.expectAndDefaultReturn(this.request.getRequestURI(),"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/");
- this.control.expectAndDefaultReturn(this.request.getPathInfo(),"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/");
- this.control.expectAndReturn(this.request.getParameter("start-index"),null);
- this.control.expectAndDefaultReturn(this.request.getParameter("alt"),
- null);
- this.control.expectAndDefaultReturn(this.request.getQueryString(),
- queryString);
- this.control.replay();
-
- this.feedRequest.initializeRequest();
-
-
- assertNull(this.feedRequest.getPreviousId());
- this.control.verify();
- this.control.reset();
- String startIndex = "start-index=";
- enu = new StringTokenizer("alt,max-results,start-index",",");
- queryString = "alt=rss&max-results=25&start-index=26";
- this.control.expectAndDefaultReturn(this.request.getParameterMap(),this.parametermap);
- this.control.expectAndDefaultReturn(this.request.getHeader("Host"),host);
- this.control.expectAndDefaultReturn(this.request.getRequestURI(),"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/");
- this.control.expectAndDefaultReturn(this.request.getPathInfo(),"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/");
- this.control.expectAndReturn(this.request.getParameter("max-results"),"25",4);
- this.control.expectAndReturn(this.request.getParameter("start-index"),"26",4);
- this.control.expectAndDefaultReturn(this.request.getParameter("alt"),
- "rss");
- this.control.expectAndDefaultReturn(this.request.getQueryString(),
- queryString);
-
- this.control.expectAndDefaultReturn(this.request.getParameterNames(),enu);
-
-
- this.control.replay();
- this.feedRequest.initializeRequest();
-
- String prevId = "http://"+host+"/"+ProvidedServiceStub.SERVICE_NAME+"/feed"+"?alt=rss&max-results=25&start-index=1";
- assertEquals("prevID",prevId,this.feedRequest.getPreviousId());
-
- this.control.reset();
-
- queryString = "";
- this.control.expectAndDefaultReturn(this.request.getParameterMap(),this.parametermap);
- this.control.expectAndDefaultReturn(this.request.getHeader("Host"),host);
- this.control.expectAndDefaultReturn(this.request.getRequestURI(),"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/");
- this.control.expectAndDefaultReturn(this.request.getPathInfo(),"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/entryId/15");
- this.control.expectAndDefaultReturn(this.request.getParameter("max-results"),null);
- this.control.expectAndDefaultReturn(this.request.getParameter("alt"),
- null);
- this.control.expectAndDefaultReturn(this.request.getQueryString(),
- null);
- this.control.replay();
- this.feedRequest.initializeRequest();
- assertNull(this.feedRequest.getPreviousId());
-
-
- this.control.reset();
-
- this.control.expectAndDefaultReturn(this.request.getParameterMap(),this.parametermap);
- this.control.expectAndDefaultReturn(this.request.getHeader("Host"),host);
- this.control.expectAndDefaultReturn(this.request.getRequestURI(),"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/");
- this.control.expectAndDefaultReturn(this.request.getPathInfo(),"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/entryId/15");
- this.control.expectAndReturn(this.request.getParameter("max-results"),"35",3);
- this.control.expectAndReturn(this.request.getParameter("start-index"),"5",3);
- this.control.expectAndDefaultReturn(this.request.getParameter("alt"),
- null);
- this.control.expectAndDefaultReturn(this.request.getQueryString(),
- "max-results=35&start-index=5");
- this.control.replay();
- this.feedRequest.initializeRequest();
- prevId = "http://"+host+"/"+ProvidedServiceStub.SERVICE_NAME+"/feed"+"?max-results=35&start-index=1";
- assertEquals("prevID",prevId,this.feedRequest.getPreviousId());
-
-
-
-
- }
-
- public void testGetContextPath(){
- String host = "www.apache.org";
- this.control.expectAndDefaultReturn(this.request.getHeader("Host"),host);
- this.control.expectAndDefaultReturn(this.request.getRequestURI(),"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/id/");
- this.control.expectAndDefaultReturn(this.request.getPathInfo(),"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/id/");
- this.control.replay();
- String result = "http://"+host+"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/id/";
- assertEquals(result,this.feedRequest.getContextPath());
- this.control.verify();
- this.control.reset();
- this.control.expectAndDefaultReturn(this.request.getHeader("Host"),host);
- this.control.expectAndDefaultReturn(this.request.getRequestURI(),"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/id");
- this.control.expectAndDefaultReturn(this.request.getPathInfo(),"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/id");
- this.control.replay();
-
- assertEquals(result,this.feedRequest.getContextPath());
- this.control.verify();
-
- }
-
- public void testCategoryQuery() throws GDataRequestException{
- String host = "www.apache.org";
- String feedAndEntryID = "/feed";
- this.control.expectAndDefaultReturn(this.request.getParameterMap(),this.parametermap);
- this.control.expectAndDefaultReturn(this.request.getHeader("Host"),host);
- this.control.expectAndDefaultReturn(this.request.getRequestURI(),"/host"+"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/-/test");
- this.control.expectAndDefaultReturn(this.request.getPathInfo(),"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/-/test");
-
- this.control.expectAndDefaultReturn(this.request.getParameter("alt"),
- null);
- this.control.expectAndDefaultReturn(this.request.getQueryString(),
- null);
- this.control.replay();
- this.feedRequest.initializeRequest();
-
-
- assertTrue(this.feedRequest.isFeedRequested());
- assertFalse(this.feedRequest.isEntryRequested());
- assertNotNull(this.feedRequest.getTranslatedQuery());
- this.control.verify();
- this.control.reset();
- this.feedRequest = new GDataRequest(this.request,GDataRequestType.GET);
- this.control.expectAndDefaultReturn(this.request.getParameterMap(),this.parametermap);
- this.control.expectAndDefaultReturn(this.request.getHeader("Host"),host);
- this.control.expectAndDefaultReturn(this.request.getRequestURI(),"/host"+"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/");
- this.control.expectAndDefaultReturn(this.request.getPathInfo(),"/"+ProvidedServiceStub.SERVICE_NAME+"/feed/");
-
- this.control.expectAndDefaultReturn(this.request.getParameter("alt"),
- null);
- this.control.expectAndDefaultReturn(this.request.getQueryString(),
- null);
- this.control.replay();
- this.feedRequest.initializeRequest();
-
-
- assertTrue(this.feedRequest.isFeedRequested());
- assertFalse(this.feedRequest.isEntryRequested());
- assertNull(this.feedRequest.getTranslatedQuery());
- this.control.verify();
- this.control.reset();
- }
-
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/TestGDataResponse.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/TestGDataResponse.java
deleted file mode 100644
index 400ee5a7cdf..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/TestGDataResponse.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.server;
-
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-import javax.servlet.http.HttpServletResponse;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.gdata.server.GDataRequest.OutputFormat;
-import org.apache.lucene.gdata.utils.ProvidedServiceStub;
-import org.easymock.MockControl;
-
-import com.google.gdata.data.Entry;
-import com.google.gdata.data.ExtensionProfile;
-import com.google.gdata.data.Feed;
-import com.google.gdata.data.PlainTextConstruct;
-/**
- *
- * @author Simon Willnauer
- *
- */
-public class TestGDataResponse extends TestCase {
- private GDataResponse response;
- private HttpServletResponse httpResponse;
- private MockControl control;
- private static String generatedFeedAtom = "Test";
- private static String generatedEntryAtom = "Test";
- private static String generatedFeedRSS = "Test";
- private static String generatedEntryRSS = "Test";
- protected void setUp() throws Exception {
- this.control = MockControl.createControl(HttpServletResponse.class);
- this.httpResponse = (HttpServletResponse)this.control.getMock();
- this.response = new GDataResponse(this.httpResponse);
-
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
-
- public void testConstructor(){
- try{
- new GDataResponse(null);
- fail("IllegalArgumentExceptin expected");
- }catch (IllegalArgumentException e) {
- // TODO: handle exception
- }
- }
- /*
- * Test method for 'org.apache.lucene.gdata.server.GDataResponse.sendResponse(BaseFeed, ExtensionProfile)'
- */
- public void testSendResponseBaseFeedExtensionProfile() throws IOException {
- try{
- Feed f = null;
- this.response.sendResponse(f, new ProvidedServiceStub());
- fail("Exception expected");
- }catch (IllegalArgumentException e) {
- //
- }
-
- try{
- Feed f = createFeed();
- this.response.sendResponse(f,null);
- fail("Exception expected");
- }catch (IllegalArgumentException e) {
- //
- }
- StringWriter stringWriter = new StringWriter();
- PrintWriter writer = new PrintWriter(stringWriter);
-
- this.control.expectAndReturn(this.httpResponse.getWriter(),writer);
- this.httpResponse.setContentType(GDataResponse.XMLMIME_ATOM);
- this.response.setOutputFormat(OutputFormat.ATOM);
- this.control.replay();
-
- this.response.sendResponse(createFeed(), new ProvidedServiceStub());
- assertEquals("Simple XML representation",stringWriter.toString(),generatedFeedAtom);
- this.control.reset();
-
- stringWriter = new StringWriter();
- writer = new PrintWriter(stringWriter);
-
- this.control.expectAndReturn(this.httpResponse.getWriter(),writer);
- this.response.setOutputFormat(OutputFormat.RSS);
- this.httpResponse.setContentType(GDataResponse.XMLMIME_RSS);
- this.control.replay();
-
- this.response.sendResponse(createFeed(), new ProvidedServiceStub());
- assertEquals("Simple XML representation",stringWriter.toString(),generatedFeedRSS);
-
-
-
-
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.server.GDataResponse.sendResponse(BaseEntry, ExtensionProfile)'
- */
- public void testSendResponseBaseEntryExtensionProfile() throws IOException {
- try{
- Entry e = null;
- this.response.sendResponse(e, new ProvidedServiceStub());
- fail("Exception expected");
- }catch (IllegalArgumentException e) {
- //
- }
- try{
- Entry e = createEntry();
- this.response.sendResponse(e,null);
- fail("Exception expected");
- }catch (IllegalArgumentException e) {
- //
- }
-// // test Atom output
- StringWriter stringWriter = new StringWriter();
- PrintWriter writer = new PrintWriter(stringWriter);
-
- this.control.expectAndReturn(this.httpResponse.getWriter(),writer);
- this.httpResponse.setContentType(GDataResponse.XMLMIME_ATOM);
- this.response.setOutputFormat(OutputFormat.ATOM);
- this.control.replay();
-
- this.response.sendResponse(createEntry(), new ProvidedServiceStub());
- assertEquals("Simple XML representation ATOM",stringWriter.toString(),generatedEntryAtom);
-
- // test rss output
- this.control.reset();
- stringWriter = new StringWriter();
- writer = new PrintWriter(stringWriter);
-
- this.control.expectAndReturn(this.httpResponse.getWriter(),writer);
- this.httpResponse.setContentType(GDataResponse.XMLMIME_RSS);
- this.response.setOutputFormat(OutputFormat.RSS);
- this.control.replay();
-
- this.response.sendResponse(createEntry(), new ProvidedServiceStub());
-
- assertEquals("Simple XML representation RSS",stringWriter.toString(),generatedEntryRSS);
-
-
-
- }
-
- /* create a simple feed */
- private Feed createFeed(){
- Feed feed = new Feed();
-
- feed.getEntries().add(createEntry());
-
- return feed;
- }
- /* create a simple entry */
- private Entry createEntry(){
- Entry e = new Entry();
- e.setTitle(new PlainTextConstruct("Test"));
- return e;
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/administration/TestAccountBuilder.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/administration/TestAccountBuilder.java
deleted file mode 100644
index 7ed8586f158..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/administration/TestAccountBuilder.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.server.administration;
-
-import java.io.IOException;
-import java.io.StringReader;
-import java.net.URL;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.gdata.data.GDataAccount;
-import org.apache.lucene.gdata.data.GDataAccount.AccountRole;
-import org.xml.sax.SAXException;
-
-public class TestAccountBuilder extends TestCase {
- private StringReader reader;
- private String inputXML;
- private StringReader invalidReader;
- private String invalidInputXML;
- protected void setUp() throws Exception {
- this.inputXML = "" +
- "" +
- "simon" +
- "simon" +
- "6" +
- "" +
- "simon willnauer" +
- "simon@gmail.com" +
- "http://www.javawithchopsticks.de" +
- "" +
- "";
-
- this.reader = new StringReader(this.inputXML);
- this.invalidInputXML = "" +
- "" +
- "simon" +
- "6" +
- "" +
- "simon willnauer" +
- "simon@gmail.com" +
- "http://www.javawithchopsticks.de" +
- "" +
- "";
-
- this.invalidReader = new StringReader(this.invalidInputXML);
-
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.server.administration.AdminEntityBuilder.buildUser(Reader)'
- */
- public void testBuildUser() throws IOException, SAXException {
-
- GDataAccount user = AccountBuilder.buildAccount(this.reader);
- assertEquals("simon",user.getName());
- assertEquals("simon willnauer",user.getAuthorname());
- assertEquals("simon@gmail.com",user.getAuthorMail());
- assertEquals("simon",user.getPassword());
- assertEquals(new URL("http://www.javawithchopsticks.de"),user.getAuthorLink());
- assertTrue(user.isUserInRole(AccountRole.ENTRYAMINISTRATOR));
- assertTrue(user.isUserInRole(AccountRole.FEEDAMINISTRATOR));
- assertFalse(user.isUserInRole(AccountRole.USERADMINISTRATOR));
-
- }
-
- public void testBuildUserWrongXML() throws IOException{
- try{
- AccountBuilder.buildAccount(this.invalidReader);
- fail("invalid xml");
- }catch (SAXException e) {
-
- }
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/authentication/TestBlowfishAuthenticationController.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/authentication/TestBlowfishAuthenticationController.java
deleted file mode 100644
index 12c7a8d26db..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/authentication/TestBlowfishAuthenticationController.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.server.authentication;
-
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-
-import javax.crypto.BadPaddingException;
-import javax.crypto.IllegalBlockSizeException;
-
-import org.apache.lucene.gdata.data.GDataAccount;
-import org.apache.lucene.gdata.data.GDataAccount.AccountRole;
-
-import junit.framework.TestCase;
-
-/**
- * @author Simon Willnauer
- *
- */
-public class TestBlowfishAuthenticationController extends TestCase {
- private BlowfishAuthenticationController controller;
- private String key = "myKey";
- private String accountName = "simon";
-
- private String clientIp = "192.168.0.127";
- protected void setUp() throws Exception {
- this.controller = new BlowfishAuthenticationController();
- this.controller.setKey(this.key);
-
- this.controller.initialize();
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.server.authentication.AuthenticationController.authenticatAccount(HttpServletRequest)'
- */
- public void testAuthenticatAccount() throws IllegalBlockSizeException, BadPaddingException, AuthenticationException, IOException {
- GDataAccount account = new GDataAccount();
- account.setName(accountName);
- account.setPassword("testme");
- account.setRole(AccountRole.ENTRYAMINISTRATOR);
-
- String token = this.controller.authenticatAccount(account,this.clientIp);
- String notSame = this.controller.calculateAuthToken("192.168.0",Integer.toString(account.getRolesAsInt()),this.accountName);
- assertNotSame(notSame,token);
- String authString = "192.168.0#"+this.accountName +"#"+account.getRolesAsInt()+"#";
- assertTrue(this.controller.deCryptAuthToken(token).startsWith(authString));
- assertTrue(this.controller.deCryptAuthToken(notSame).startsWith(authString));
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.server.authentication.AuthenticationController.authenticateToken(String)'
- */
- public void testAuthenticateToken() throws IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException, AuthenticationException {
- GDataAccount account = new GDataAccount();
- account.setName("simon");
- account.setPassword("testme");
- account.setRole(AccountRole.ENTRYAMINISTRATOR);
- String token = this.controller.calculateAuthToken("192.168.0",Integer.toString(account.getRolesAsInt()),this.accountName);
-
- assertTrue(this.controller.authenticateToken(token,this.clientIp,AccountRole.ENTRYAMINISTRATOR,this.accountName));
- assertTrue(this.controller.authenticateToken(token,this.clientIp,AccountRole.USER,this.accountName));
- assertFalse(this.controller.authenticateToken(token,this.clientIp,AccountRole.USERADMINISTRATOR,"someOtherAccount"));
- try{
- this.controller.authenticateToken(token+"test",this.clientIp,AccountRole.ENTRYAMINISTRATOR,this.accountName);
- fail("exception expected");
- }catch (Exception e) {
- // TODO: handle exception
- }
- this.controller.setLoginTimeout(0);
- assertFalse(this.controller.authenticateToken(token,this.clientIp,AccountRole.ENTRYAMINISTRATOR,this.accountName));
-
- }
-
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/registry/TestEntityBuilderIncomingEntry.xml b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/registry/TestEntityBuilderIncomingEntry.xml
deleted file mode 100644
index 35e4817f3b0..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/registry/TestEntityBuilderIncomingEntry.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
- http://www.google.com/calendar/feeds/simon.willnauer%40googlemail.com/public/basic/af4b5ca305c80f96f42c9af66c5b04a8473c949c
-
- 2006-12-23T00:00:00.000Z
- 2006-05-23T16:42:48.000Z
-
-
-
- When: 2006-12-23 to 2006-12-31 America/Los_Angeles<br>
-
-
-
-
-
-
\ No newline at end of file
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/registry/TestEntityBuilderIncomingFeed.xml b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/registry/TestEntityBuilderIncomingFeed.xml
deleted file mode 100644
index 47f79781438..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/registry/TestEntityBuilderIncomingFeed.xml
+++ /dev/null
@@ -1,90 +0,0 @@
-
-
-
- http://www.google.com/calendar/feeds/simon.willnauer%40googlemail.com/public/basic
-
- 2006-05-27T11:47:55.000Z
- Simon Willnauer
- Simon Willnauer
-
-
-
-
-
-
-
- Simon Willnauer
- simon.willnauer@googlemail.com
-
-
- Google Calendar
-
- 25
-
-
- http://www.google.com/calendar/feeds/simon.willnauer%40googlemail.com/public/basic/af4b5ca305c80f96f42c9af66c5b04a8473c949c
-
- 2006-12-23T00:00:00.000Z
- 2006-05-23T16:42:48.000Z
-
-
-
- When: 2006-12-23 to 2006-12-31 America/Los_Angeles<br>
-
-
-
-
-
-
-
-
- http://www.google.com/calendar/feeds/simon.willnauer%40googlemail.com/public/basic/d5402951792ce690f6a45e51143deb78f4fffac4
-
- 2006-05-26T00:00:00.000Z
- 2006-05-20T22:17:44.000Z
-
-
-
- When: 2006-05-26 to 2006-05-27 America/Los_Angeles<br>
-
-
-
-
-
-
-
-
- http://www.google.com/calendar/feeds/simon.willnauer%40googlemail.com/public/basic/21630e853795ea81d5e792d0ab082ad1c44256e4
-
- 2006-06-19T14:00:00.000Z
- 2006-05-17T16:10:57.000Z
-
-
-
- When: 2006-06-19 07:00:00 to 08:00:00
- America/Los_Angeles<br>
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/registry/TestFeedRegistry.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/registry/TestFeedRegistry.java
deleted file mode 100644
index 147b743a1e0..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/registry/TestFeedRegistry.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.server.registry;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.gdata.server.ServiceFactory;
-import org.apache.lucene.gdata.servlet.handler.DefaultRequestHandlerFactory;
-import org.apache.lucene.gdata.servlet.handler.RequestHandlerFactory;
-import org.apache.lucene.gdata.storage.StorageController;
-import org.apache.lucene.gdata.storage.lucenestorage.StorageCoreController;
-
-import com.google.gdata.data.Entry;
-import com.google.gdata.data.ExtensionProfile;
-import com.google.gdata.data.Feed;
-
-/**
- * @author Simon Willnauer
- *
- */
-public class TestFeedRegistry extends TestCase {
- private GDataServerRegistry reg;
-
- private ProvidedServiceConfig configurator;
-
- @Override
- protected void setUp() {
- this.reg = GDataServerRegistry.getRegistry();
- this.configurator = new ProvidedServiceConfig();
- this.configurator.setEntryType(Entry.class);
- this.configurator.setFeedType(Feed.class);
- this.configurator.setExtensionProfile(new ExtensionProfile());
- }
-
- /**
- * @see junit.framework.TestCase#tearDown()
- */
- @Override
- protected void tearDown() throws Exception {
- this.reg.flushRegistry();
-
- }
-
- /**
- * Test method for
- * 'org.apache.lucene.gdata.server.registry.FeedRegistry.getRegistry()'
- */
- public void testGetRegistry() {
-
- GDataServerRegistry reg1 = GDataServerRegistry.getRegistry();
- assertEquals("test singleton", this.reg, reg1);
- }
-
- /**
- * Test method for
- * 'org.apache.lucene.gdata.server.registry.FeedRegistry.registerFeed(FeedInstanceConfigurator)'
- */
- public void testRegisterService() {
- String service = "service";
- registerService(service);
- assertEquals("Registered Configurator", this.configurator, this.reg
- .getProvidedService(service));
- assertNull("not registered Configurator", this.reg
- .getProvidedService("something"));
- try {
- this.reg.getProvidedService(null);
- fail("Exception expected");
- } catch (IllegalArgumentException e) {
- //
- }
- }
-
- /**
- * Test method for
- * 'org.apache.lucene.gdata.server.registry.FeedRegistry.getFeedConfigurator(String)'
- */
- public void testFlushRegistry() {
- String service = "service";
- registerService(service);
-
- assertEquals("Registered Configurator", this.configurator, this.reg
- .getProvidedService(service));
- this.reg.flushRegistry();
- assertNull("Registry flushed", this.reg.getProvidedService(service));
-
- }
-
- /**
- *
- */
- public void testIsFeedRegistered() {
- String service = "service";
- registerService(service);
- assertTrue("Feed is registerd", this.reg.isServiceRegistered(service));
- assertFalse("null Feed is not registerd", this.reg
- .isServiceRegistered(null));
- assertFalse("Feed is not registerd", this.reg
- .isServiceRegistered("something"));
-
- }
-
- private void registerService(String servicename) {
-
- this.configurator.setName(servicename);
- this.reg.registerService(this.configurator);
- }
-
- public void testRegisterComponent() throws RegistryException {
- try {
- this.reg.registerComponent(StorageController.class, null);
- fail("RegistryException expected");
- } catch (RegistryException e) {
- //
- }
- new GDataRequestListener();
- try {
- this.reg.registerComponent(StorageCoreController.class, null);
- fail("no config");
- } catch (Exception e) {
- // TODO: handle exception
- }
- this.reg.registerComponent(DefaultRequestHandlerFactory.class, null);
- RequestHandlerFactory factory = this.reg.lookup(
- RequestHandlerFactory.class,
- ComponentType.REQUESTHANDLERFACTORY);
- try {
- this.reg
- .registerComponent(DefaultRequestHandlerFactory.class, null);
- fail("RegistryException expected");
- } catch (RegistryException e) {
- //
- }
- this.reg.registerComponent(ServiceFactory.class, null);
- ServiceFactory servicefactory = this.reg.lookup(ServiceFactory.class,
- ComponentType.SERVICEFACTORY);
- assertNotNull(servicefactory);
- assertNotNull(factory);
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/registry/TestGDataEntityBuilder.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/registry/TestGDataEntityBuilder.java
deleted file mode 100644
index 92a0c9b1f1f..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/registry/TestGDataEntityBuilder.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.server.registry;
-
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.Reader;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.data.ServerBaseFeed;
-import org.apache.lucene.gdata.server.GDataEntityBuilder;
-
-import com.google.gdata.data.BaseEntry;
-import com.google.gdata.data.BaseFeed;
-import com.google.gdata.data.Entry;
-import com.google.gdata.data.ExtensionProfile;
-import com.google.gdata.data.Feed;
-import com.google.gdata.data.Source;
-import com.google.gdata.util.ParseException;
-
-/**
- * @author Simon Willnauer
- *
- */
-public class TestGDataEntityBuilder extends TestCase {
- private static String fileDir = System.getProperty("lucene.common.dir", null);
- private static File incomingFeed = new File(fileDir, "contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/registry/TestEntityBuilderIncomingFeed.xml");
- private static File incomingEntry = new File(fileDir, "contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/registry/TestEntityBuilderIncomingEntry.xml");
- private static String feedTitleFromXML = "Simon Willnauer";
- private static String entrySummaryFromXML = "When: 2006-12-23 to 2006-12-31 America/Los_Angeles";
- private static GDataServerRegistry reg = GDataServerRegistry.getRegistry();
- private Reader reader;
- private static String feedID = "myFeed";
- private ProvidedServiceConfig config;
- private static Class feedType = Feed.class;
- private static Class entryType = Entry.class;
-
-
- /**
- * @see junit.framework.TestCase#setUp()
- */
- @Override
- protected void setUp() throws Exception {
- this.config = new ProvidedServiceConfig();
-
- this.config.setFeedType(feedType);
- this.config.setEntryType(entryType);
- this.config.setExtensionProfile(new ExtensionProfile());
- reg.registerService(this.config);
- }
-
- /**
- * @see junit.framework.TestCase#tearDown()
- */
- @Override
- protected void tearDown() throws Exception {
- reg.flushRegistry();
- this.reader = null;
- }
-
- /**
- * Test method for 'org.apache.lucene.gdata.data.GDataEntityBuilder.buildFeed(String, Reader)'
- */
- public void testBuildFeedStringReader() throws ParseException, IOException {
- this.reader = new FileReader(incomingFeed);
- BaseFeed feed = GDataEntityBuilder.buildFeed(this.reader,this.config);
- assertNotNull(feed);
- assertEquals("feed title",feed.getTitle().getPlainText(), feedTitleFromXML);
-
-
-
- }
-
- /**
- * Test method for 'org.apache.lucene.gdata.data.GDataEntityBuilder.buildEntry(String, Reader)'
- */
- public void testBuildEntryStringReader() throws ParseException, IOException {
- this.reader = new FileReader(incomingEntry);
- BaseEntry entry = GDataEntityBuilder.buildEntry(this.reader,this.config);
- assertNotNull(entry);
- assertEquals("entry summary",entry.getSummary().getPlainText(),entrySummaryFromXML);
-
-
-
-
- }
-
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/registry/TestProvidedServiceConfig.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/registry/TestProvidedServiceConfig.java
deleted file mode 100755
index cc8402a092f..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/registry/TestProvidedServiceConfig.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.server.registry;
-
-import junit.framework.TestCase;
-
-import com.google.gdata.data.Entry;
-import com.google.gdata.data.ExtensionProfile;
-import com.google.gdata.data.Feed;
-
-public class TestProvidedServiceConfig extends TestCase {
- ProvidedServiceConfig instance;
- protected void setUp() throws Exception {
- instance = new ProvidedServiceConfig();
- instance.setExtensionProfileClass(ExtensionProfile.class);
- instance.setFeedType(Feed.class);
- instance.setEntryType(Entry.class);
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- instance.destroy();
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.server.registry.ProvidedServiceConfig.getExtensionProfile()'
- */
- public void testGetExtensionProfile() {
- try{
- this.instance.setExtensionProfile(null);
- fail("value must not be null");
- }catch (IllegalArgumentException e) {
-
- }
- ExtensionProfile profile = this.instance.getExtensionProfile();
- assertNotNull(profile);
- assertSame(profile,this.instance.getExtensionProfile());
- this.instance.visiteInitialize();
- assertSame(profile,this.instance.getExtensionProfile());
- assertNull(new ProvidedServiceConfig().getExtensionProfile());
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.server.registry.ProvidedServiceConfig.setExtensionProfile(ExtensionProfile)'
- */
- public void testSetPoolSize() throws InstantiationException, IllegalAccessException {
- assertEquals(5,instance.getPoolSize());
- instance.destroy();
- instance = new ProvidedServiceConfig();
- instance.setExtensionProfileClass(ExtensionProfile.class);
- instance.setFeedType(Feed.class);
- instance.setEntryType(Entry.class);
- instance.setPoolSize(30);
- instance.visiteInitialize();
- assertEquals(30,instance.getPoolSize());
- instance.destroy();
- instance = new ProvidedServiceConfig();
- instance.setExtensionProfileClass(ExtensionProfile.class);
- instance.setFeedType(Feed.class);
- instance.setEntryType(Entry.class);
- instance.setPoolSize(-5);
- instance.visiteInitialize();
- assertEquals(5,instance.getPoolSize());
- }
-
-
-
-
- /*
- * Test method for 'org.apache.lucene.gdata.server.registry.ProvidedServiceConfig.visiteInitialize()'
- */
- public void testVisiteInitialize() {
- instance.visiteInitialize();
- assertNull(instance.extProfThreadLocal.get());
- instance.getExtensionProfile();
- assertNotNull(instance.extProfThreadLocal.get());
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.server.registry.ProvidedServiceConfig.visiteDestroy()'
- */
- public void testVisiteDestroy() {
- ExtensionProfile profile = this.instance.getExtensionProfile();
- assertNotNull(profile);
- assertNotNull(instance.extProfThreadLocal.get());
- instance.visiteDestroy();
- assertNull(instance.extProfThreadLocal.get());
- instance.visiteDestroy();
- assertNull(instance.extProfThreadLocal.get());
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/registry/configuration/TestConfigurationBean.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/registry/configuration/TestConfigurationBean.java
deleted file mode 100755
index f66d2a9edb5..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/registry/configuration/TestConfigurationBean.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.server.registry.configuration;
-
-import junit.framework.TestCase;
-
-public class TestConfigurationBean extends TestCase {
- private ComponentConfiguration bean;
-
- protected void setUp() throws Exception {
- super.setUp();
- this.bean = new ComponentConfiguration();
-
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.server.registry.configuration.ConfigurationBean.set(String,
- * String)'
- */
- public void testSet() {
- this.bean.set("field", "value");
- try {
- this.bean.set("field", "value");
- fail("field already set");
- } catch (IllegalArgumentException e) {
- //
- }
- assertEquals("value", this.bean.get("field"));
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.server.registry.configuration.ConfigurationBean.get(String)'
- */
- public void testGet() {
- assertNull(this.bean.get("field"));
- this.bean.set("field", "value");
- assertEquals("value", this.bean.get("field"));
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/registry/configuration/TestPropertyInjector.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/registry/configuration/TestPropertyInjector.java
deleted file mode 100755
index 54b706a9d77..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/registry/configuration/TestPropertyInjector.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.server.registry.configuration;
-
-import junit.framework.TestCase;
-
-public class TestPropertyInjector extends TestCase {
- private PropertyInjector injector;
-
- protected void setUp() throws Exception {
- super.setUp();
- this.injector = new PropertyInjector();
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.server.registry.configuration.PropertyInjector.setTargetObject(Object)'
- */
- public void testSetTargetObject() {
- try {
- this.injector.setTargetObject(null);
- fail("must not be null");
- } catch (IllegalArgumentException e) {
- // TODO: handle exception
- }
- try {
- this.injector.setTargetObject(new Object());
- fail("no getter or setter methodes");
- } catch (InjectionException e) {
- // TODO: handle exception
- }
-
- this.injector.setTargetObject(new TestBean());
- assertEquals(1,this.injector.getOptionalSize());
- assertEquals(1,this.injector.getRequiredSize());
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.server.registry.configuration.PropertyInjector.injectProperties(ConfigurationBean)'
- */
- public void testInjectProperties() throws Exception {
- ComponentConfiguration bean = new ComponentConfiguration();
- bean.set("someValue","bla");
- try{
- this.injector.injectProperties(bean);
- fail("target is not set");
- }catch (IllegalStateException e) {
-
- }
- TestBean testBean = new TestBean();
- this.injector.setTargetObject(testBean);
- try{
- this.injector.injectProperties(null);
- fail("object is null");
- }catch (IllegalArgumentException e) {
-
- }
- try{
- this.injector.injectProperties(bean);
- fail("requiered Property is not available in config bean");
- }catch (InjectionException e) {
-
- }
-
- bean.set("test","fooBar");
- bean.set("testClass","java.lang.Object");
- this.injector.injectProperties(bean);
-
- assertEquals("fooBar",testBean.getTest());
- assertEquals(Object.class,testBean.getTestClass());
-
-
-
- this.injector = new PropertyInjector();
- SubTestBean subTestBean = new SubTestBean();
- this.injector.setTargetObject(subTestBean);
- bean.set("number","333");
- this.injector.injectProperties(bean);
-
- assertEquals("fooBar",subTestBean.getTest());
- assertEquals(Object.class,subTestBean.getTestClass());
- assertEquals(333,subTestBean.getNumber());
-
- bean = new ComponentConfiguration();
- bean.set("test","fooBar");
- bean.set("number","333");
- bean.set("wrapper","1.2");
-
- subTestBean = new SubTestBean();
- this.injector.setTargetObject(subTestBean);
- this.injector.injectProperties(bean);
-
- assertEquals("fooBar",subTestBean.getTest());
- assertEquals(333,subTestBean.getNumber());
- assertEquals(new Float(1.2),subTestBean.getWrapper());
-
-
- }
-
-
- public static class TestBean{
-
- private String test;
- private Class testClass;
- /**
- * @return Returns the test.
- */
- public String getTest() {
- return test;
- }
- /**
- * @param test The test to set.
- */
- @Requiered
- public void setTest(String test) {
- this.test = test;
- }
- /**
- * @return Returns the testClass.
- */
- public Class getTestClass() {
- return testClass;
- }
- /**
- * @param testClass The testClass to set.
- */
- public void setTestClass(Class testClass) {
- this.testClass = testClass;
- }
-
-
- }
- public static class SubTestBean extends TestBean{
- private int number;
- private Float wrapper;
-
- /**
- * @return Returns the wrapper.
- */
- public Float getWrapper() {
- return wrapper;
- }
-
- /**
- * @param wrapper The wrapper to set.
- */
- public void setWrapper(Float wrapper) {
- this.wrapper = wrapper;
- }
-
- /**
- * @return Returns the number.
- */
-
- public int getNumber() {
- return number;
- }
-
- /**
- * @param number The number to set.
- */
- @Requiered
- public void setNumber(int number) {
- this.number = number;
- }
-
-
-
-
- }
-
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/servlet/TestAbstractGdataServlet.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/servlet/TestAbstractGdataServlet.java
deleted file mode 100644
index 3a19426fffb..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/servlet/TestAbstractGdataServlet.java
+++ /dev/null
@@ -1,297 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.servlet;
-
-import java.io.IOException;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.easymock.MockControl;
-
-import junit.framework.TestCase;
-
-/**
- * @author Simon Willnauer
- *
- */
-public class TestAbstractGdataServlet extends TestCase {
- private static final String METHOD_DELETE = "DELETE";
-
- private static final String METHOD_GET = "GET";
-
- private static final String METHOD_POST = "POST";
-
- private static final String METHOD_PUT = "PUT";
-
- private static final String METHOD_HEADER_NAME = "x-http-method-override";
-
- private HttpServletRequest mockRequest = null;
-
- private HttpServletResponse mockResponse = null;
-
- private AbstractGdataServlet servletInstance = null;
-
- private MockControl requestMockControl;
-
- private MockControl responseMockControl;
-
- protected void setUp() throws Exception {
- this.requestMockControl = MockControl
- .createControl(HttpServletRequest.class);
- this.responseMockControl = MockControl
- .createControl(HttpServletResponse.class);
- this.mockRequest = (HttpServletRequest) this.requestMockControl
- .getMock();
- this.mockResponse = (HttpServletResponse) this.responseMockControl
- .getMock();
- this.servletInstance = new StubGDataServlet();
- }
-
- /**
- * Test method for
- * 'org.apache.lucene.gdata.servlet.AbstractGdataServlet.service(HttpServletRequest,
- * HttpServletResponse)'
- */
- public void testServiceHttpServletRequestHttpServletResponseDelete() {
- this.requestMockControl.expectAndDefaultReturn(this.mockRequest
- .getMethod(), METHOD_DELETE);
- this.requestMockControl.expectAndDefaultReturn(this.mockRequest
- .getHeader(METHOD_HEADER_NAME), METHOD_DELETE);
- this.requestMockControl.replay();
-
- try {
- this.servletInstance.service(this.mockRequest, this.mockResponse);
- } catch (ServletException e) {
- fail("ServeltExpception not expected");
- } catch (IOException e) {
- fail("IOExpception not expected");
- }
-
- this.requestMockControl.verify();
- this.requestMockControl.reset();
-
- this.requestMockControl.expectAndDefaultReturn(this.mockRequest
- .getMethod(), METHOD_POST);
- this.requestMockControl.expectAndDefaultReturn(this.mockRequest
- .getHeader(METHOD_HEADER_NAME), METHOD_DELETE);
- this.requestMockControl.replay();
-
- try {
- this.servletInstance.service(this.mockRequest, this.mockResponse);
- } catch (ServletException e) {
- fail("ServeltExpception not expected");
- } catch (IOException e) {
- fail("IOExpception not expected");
- }
-
- this.requestMockControl.verify();
- }
-
- /**
- *
- */
- public void testServiceNullOverrideHeader() {
- this.requestMockControl.expectAndDefaultReturn(this.mockRequest
- .getMethod(), METHOD_POST);
- this.requestMockControl.expectAndDefaultReturn(this.mockRequest
- .getHeader(METHOD_HEADER_NAME), null);
- this.requestMockControl.replay();
-
- try {
- this.servletInstance.service(this.mockRequest, this.mockResponse);
- } catch (ServletException e) {
- fail("ServeltExpception not expected");
- } catch (IOException e) {
- fail("IOExpception not expected");
- }
-
- this.requestMockControl.verify();
- this.requestMockControl.reset();
- }
-
- /**
- * Test method for
- * 'org.apache.lucene.gdata.servlet.AbstractGdataServlet.service(HttpServletRequest,
- * HttpServletResponse)'
- */
- public void testServiceHttpServletRequestHttpServletResponsePOST() {
- this.requestMockControl.expectAndDefaultReturn(this.mockRequest
- .getMethod(), METHOD_POST);
- this.requestMockControl.expectAndDefaultReturn(this.mockRequest
- .getHeader(METHOD_HEADER_NAME), METHOD_POST);
- this.requestMockControl.replay();
-
- try {
- this.servletInstance.service(this.mockRequest, this.mockResponse);
- } catch (ServletException e) {
- fail("ServeltExpception not expected");
- } catch (IOException e) {
- fail("IOExpception not expected");
- }
-
- this.requestMockControl.verify();
- this.requestMockControl.reset();
-
- this.requestMockControl.expectAndDefaultReturn(this.mockRequest
- .getMethod(), METHOD_PUT);
- this.requestMockControl.expectAndDefaultReturn(this.mockRequest
- .getHeader(METHOD_HEADER_NAME), METHOD_POST);
- this.requestMockControl.replay();
-
- try {
- this.servletInstance.service(this.mockRequest, this.mockResponse);
- } catch (ServletException e) {
- fail("ServeltExpception not expected");
- } catch (IOException e) {
- fail("IOExpception not expected");
- }
-
- this.requestMockControl.verify();
- }
-
- /**
- * Test method for
- * 'org.apache.lucene.gdata.servlet.AbstractGdataServlet.service(HttpServletRequest,
- * HttpServletResponse)'
- */
- public void testServiceHttpServletRequestHttpServletResponsePUT() {
- this.requestMockControl.expectAndDefaultReturn(this.mockRequest
- .getMethod(), METHOD_PUT);
- this.requestMockControl.expectAndDefaultReturn(this.mockRequest
- .getHeader(METHOD_HEADER_NAME), METHOD_PUT);
- this.requestMockControl.replay();
-
- try {
- this.servletInstance.service(this.mockRequest, this.mockResponse);
- } catch (ServletException e) {
- fail("ServeltExpception not expected");
- } catch (IOException e) {
- fail("IOExpception not expected");
- }
-
- this.requestMockControl.verify();
- this.requestMockControl.reset();
-
- this.requestMockControl.expectAndDefaultReturn(this.mockRequest
- .getMethod(), METHOD_POST);
- this.requestMockControl.expectAndDefaultReturn(this.mockRequest
- .getHeader(METHOD_HEADER_NAME), METHOD_PUT);
- this.requestMockControl.replay();
-
- try {
- this.servletInstance.service(this.mockRequest, this.mockResponse);
- } catch (ServletException e) {
- fail("ServeltExpception not expected");
- } catch (IOException e) {
- fail("IOExpception not expected");
- }
-
- this.requestMockControl.verify();
- }
-
- /**
- * Test method for
- * 'org.apache.lucene.gdata.servlet.AbstractGdataServlet.service(HttpServletRequest,
- * HttpServletResponse)'
- */
- public void testServiceHttpServletRequestHttpServletResponseGET() {
- this.requestMockControl.expectAndDefaultReturn(this.mockRequest
- .getMethod(), METHOD_GET);
- this.requestMockControl.expectAndDefaultReturn(this.mockRequest
- .getHeader(METHOD_HEADER_NAME), METHOD_GET);
- this.requestMockControl.replay();
-
- try {
- this.servletInstance.service(this.mockRequest, this.mockResponse);
- } catch (ServletException e) {
- fail("ServeltExpception not expected");
- } catch (IOException e) {
- fail("IOExpception not expected");
- }
-
- this.requestMockControl.verify();
- this.requestMockControl.reset();
-
- this.requestMockControl.expectAndDefaultReturn(this.mockRequest
- .getMethod(), METHOD_POST);
- this.requestMockControl.expectAndDefaultReturn(this.mockRequest
- .getHeader(METHOD_HEADER_NAME), METHOD_GET);
- this.requestMockControl.replay();
-
- try {
- this.servletInstance.service(this.mockRequest, this.mockResponse);
- } catch (ServletException e) {
- fail("ServeltExpception not expected");
- } catch (IOException e) {
- fail("IOExpception not expected");
- }
-
- this.requestMockControl.verify();
-
- }
- /**
- * Stub Implementation for AbstractGdataServlet
- * @author Simon Willnauer
- *
- */
- static class StubGDataServlet extends AbstractGdataServlet {
-
- private static final long serialVersionUID = -6271464588547620925L;
-
- protected void doDelete(HttpServletRequest arg0,
- HttpServletResponse arg1) {
- if (arg0.getHeader(METHOD_HEADER_NAME) == null)
- assertEquals("Http-Method --DELETE--", METHOD_DELETE, arg0
- .getMethod());
- else
- assertEquals("Http-Method override --DELETE--", METHOD_DELETE,
- arg0.getHeader(METHOD_HEADER_NAME));
-
- }
-
- protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1) {
- if (arg0.getHeader(METHOD_HEADER_NAME) == null)
- assertEquals("Http-Method --GET--", arg0.getMethod(),
- METHOD_GET);
- else
- assertEquals("Http-Method override --GET--", arg0
- .getHeader(METHOD_HEADER_NAME), METHOD_GET);
- }
-
- protected void doPost(HttpServletRequest arg0, HttpServletResponse arg1) {
- if (arg0.getHeader(METHOD_HEADER_NAME) == null)
- assertEquals("Http-Method --POST--", arg0.getMethod(),
- METHOD_POST);
- else
- assertEquals("Http-Method override --POST--", METHOD_POST, arg0
- .getHeader(METHOD_HEADER_NAME));
-
- }
-
- protected void doPut(HttpServletRequest arg0, HttpServletResponse arg1) {
- if (arg0.getHeader(METHOD_HEADER_NAME) == null)
- assertEquals("Http-Method --PUT--", arg0.getMethod(),
- METHOD_PUT);
- else
- assertEquals("Http-Method override --PUT--", arg0
- .getHeader(METHOD_HEADER_NAME), METHOD_PUT);
- }
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/servlet/handler/TestAbstractFeedHandler.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/servlet/handler/TestAbstractFeedHandler.java
deleted file mode 100644
index 91820c8eaee..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/servlet/handler/TestAbstractFeedHandler.java
+++ /dev/null
@@ -1,216 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.servlet.handler;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.gdata.data.GDataAccount;
-import org.apache.lucene.gdata.data.ServerBaseFeed;
-import org.apache.lucene.gdata.server.GDataResponse;
-import org.apache.lucene.gdata.server.ServiceException;
-import org.apache.lucene.gdata.server.ServiceFactory;
-import org.apache.lucene.gdata.server.administration.AdminService;
-import org.apache.lucene.gdata.server.registry.ComponentType;
-import org.apache.lucene.gdata.server.registry.GDataServerRegistry;
-import org.apache.lucene.gdata.server.registry.RegistryException;
-import org.apache.lucene.gdata.servlet.handler.AbstractFeedHandler.FeedHandlerException;
-import org.apache.lucene.gdata.utils.ProvidedServiceStub;
-import org.apache.lucene.gdata.utils.ServiceFactoryStub;
-import org.apache.lucene.gdata.utils.StorageStub;
-import org.easymock.MockControl;
-
-import com.google.gdata.util.ParseException;
-
-/**
- * @author Simon Willnauer
- *
- */
-public class TestAbstractFeedHandler extends TestCase {
- private MockControl requestMockControl;
-
- private HttpServletRequest mockRequest = null;
-
- private String accountName = "acc";
- private MockControl adminServiceMockControl;
- private AdminService adminService = null;
- private ServiceFactoryStub stub;
- private String serviceName = StorageStub.SERVICE_TYPE_RETURN;
- private static String fileDir = System.getProperty("lucene.common.dir", null);
- private static File incomingFeed = new File(fileDir, "contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/server/registry/TestEntityBuilderIncomingFeed.xml");
- BufferedReader reader;
- static{
-
- try {
-
- GDataServerRegistry.getRegistry().registerComponent(StorageStub.class,null);
- GDataServerRegistry.getRegistry().registerComponent(ServiceFactoryStub.class,null);
- } catch (RegistryException e) {
-
- e.printStackTrace();
- }
- }
- protected void setUp() throws Exception {
- super.setUp();
-
- GDataServerRegistry.getRegistry().registerService(new ProvidedServiceStub());
- this.requestMockControl = MockControl.createControl(HttpServletRequest.class);
- this.adminServiceMockControl = MockControl.createControl(AdminService.class);
- this.adminService = (AdminService)this.adminServiceMockControl.getMock();
- this.mockRequest = (HttpServletRequest)this.requestMockControl.getMock();
- this.stub = (ServiceFactoryStub)GDataServerRegistry.getRegistry().lookup(ServiceFactory.class,ComponentType.SERVICEFACTORY);
- this.stub.setAdminService(this.adminService);
- this.reader = new BufferedReader(new FileReader(incomingFeed));
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.servlet.handler.AbstractFeedHandler.createFeedFromRequest(HttpServletRequest)'
- */
- public void testCreateFeedFromRequest() throws ParseException, IOException, FeedHandlerException {
-
- this.requestMockControl.expectAndDefaultReturn(this.mockRequest
- .getParameter("service"), this.serviceName);
- this.requestMockControl.expectAndReturn(this.mockRequest.getReader(),this.reader);
- this.requestMockControl.replay();
- AbstractFeedHandler handler = new InsertFeedHandler();
- try{
- ServerBaseFeed feed = handler.createFeedFromRequest(this.mockRequest);
- assertNotNull(feed.getId());
-
- }catch (Exception e) {
- e.printStackTrace();
- fail("unexpected exception -- "+e.getMessage());
-
- }
- this.requestMockControl.verify();
- this.requestMockControl.reset();
- /*
- * Test for not registered service
- */
- this.requestMockControl.expectAndDefaultReturn(this.mockRequest
- .getParameter("service"), "some other service");
- this.requestMockControl.replay();
- handler = new InsertFeedHandler();
- try{
- ServerBaseFeed feed = handler.createFeedFromRequest(this.mockRequest);
-
- fail(" exception expected");
- }catch (FeedHandlerException e) {
- e.printStackTrace();
- assertEquals(HttpServletResponse.SC_NOT_FOUND,handler.getErrorCode());
- }
- this.requestMockControl.verify();
-
- this.requestMockControl.reset();
- /*
- * Test for IOException
- */
- this.requestMockControl.expectAndDefaultReturn(this.mockRequest
- .getParameter("service"), this.serviceName);
- this.reader.close();
- this.requestMockControl.expectAndReturn(this.mockRequest.getReader(),this.reader);
- this.requestMockControl.replay();
- handler = new InsertFeedHandler();
- try{
- ServerBaseFeed feed = handler.createFeedFromRequest(this.mockRequest);
-
- fail(" exception expected");
- }catch (IOException e) {
- e.printStackTrace();
- assertEquals(HttpServletResponse.SC_BAD_REQUEST,handler.getErrorCode());
- }
- this.requestMockControl.verify();
-
-
-
-
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.servlet.handler.AbstractFeedHandler.createRequestedAccount(HttpServletRequest)'
- */
- public void testCreateRequestedAccount() throws IOException, ParseException, ServiceException {
- this.requestMockControl.expectAndDefaultReturn(this.mockRequest
- .getParameter(AbstractFeedHandler.PARAMETER_ACCOUNT), this.accountName);
- GDataAccount a = new GDataAccount();
- a.setName("helloworld");
- this.adminServiceMockControl.expectAndReturn(this.adminService.getAccount(this.accountName),a );
- this.requestMockControl.replay();
- this.adminServiceMockControl.replay();
- AbstractFeedHandler handler = new InsertFeedHandler();
- try{
-
- GDataAccount account = handler.createRequestedAccount(this.mockRequest);
-
- assertEquals(a,account);
-
- }catch (Exception e) {
- e.printStackTrace();
- fail("unexpected exception -- "+e.getMessage());
-
- }
- this.requestMockControl.verify();
- this.requestMockControl.reset();
- this.adminServiceMockControl.verify();
- this.adminServiceMockControl.reset();
-
- /*
- *Test for service exception
- */
-
- this.requestMockControl.expectAndDefaultReturn(this.mockRequest
- .getParameter(AbstractFeedHandler.PARAMETER_ACCOUNT), this.accountName);
-
- a.setName("helloworld");
- this.adminServiceMockControl.expectAndDefaultThrow(this.adminService.getAccount(this.accountName),new ServiceException(GDataResponse.BAD_REQUEST) );
- this.requestMockControl.replay();
- this.adminServiceMockControl.replay();
- handler = new InsertFeedHandler();
- try{
-
- GDataAccount account = handler.createRequestedAccount(this.mockRequest);
-
- fail(" exception expected ");
-
- }catch (Exception e) {
- e.printStackTrace();
- assertEquals(HttpServletResponse.SC_BAD_REQUEST,handler.getErrorCode());
-
- }
- this.requestMockControl.verify();
- this.requestMockControl.reset();
- this.adminServiceMockControl.verify();
- this.adminServiceMockControl.reset();
-
-
-
-
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/servlet/handler/TestRequestAuthenticator.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/servlet/handler/TestRequestAuthenticator.java
deleted file mode 100644
index ace688a48d8..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/servlet/handler/TestRequestAuthenticator.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.servlet.handler;
-
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.gdata.server.authentication.AuthenticationController;
-import org.apache.lucene.gdata.server.registry.GDataServerRegistry;
-import org.easymock.MockControl;
-
-public class TestRequestAuthenticator extends TestCase {
- private MockControl requestMock;
- private HttpServletRequest request;
- private RequestAuthenticator authenticator;
- private String tokenHeader;
- private String token;
- private Cookie authCookie;
-
- protected void setUp() throws Exception {
- createMocks();
- this.authenticator = new RequestAuthenticator();
- this.token = "myToken";
- this.tokenHeader = "GoogleLogin auth="+this.token;
- this.authCookie = new Cookie("Auth",this.token);
- }
- protected void createMocks() {
- this.requestMock = MockControl.createControl(HttpServletRequest.class);
- this.request = (HttpServletRequest)this.requestMock.getMock();
-
- }
- protected void tearDown() throws Exception {
- GDataServerRegistry.getRegistry().destroy();
- }
- /*
- * Test method for 'org.apache.lucene.gdata.servlet.handler.RequestAuthenticator.authenticateAccount(GDataRequest, AccountRole)'
- */
- public void testGetTokenFromRequest() {
- // test token present
- this.requestMock.expectAndDefaultReturn(this.request.getHeader(AuthenticationController.AUTHORIZATION_HEADER), this.tokenHeader);
- this.requestMock.replay();
- assertEquals(this.token,this.authenticator.getTokenFromRequest(this.request));
- this.requestMock.verify();
- this.requestMock.reset();
-
- // test token null / cookie present
- this.requestMock.expectAndDefaultReturn(this.request.getHeader(AuthenticationController.AUTHORIZATION_HEADER), null);
- this.requestMock.expectAndDefaultReturn(this.request.getCookies(), new Cookie[]{this.authCookie});
- this.requestMock.replay();
- assertEquals(this.token,this.authenticator.getTokenFromRequest(this.request));
- this.requestMock.verify();
- this.requestMock.reset();
-
- // test token null / cookie not present
- this.requestMock.expectAndDefaultReturn(this.request.getHeader(AuthenticationController.AUTHORIZATION_HEADER), null);
- this.requestMock.expectAndDefaultReturn(this.request.getCookies(), new Cookie[]{new Cookie("somekey","someValue")});
- this.requestMock.replay();
- assertNull(this.authenticator.getTokenFromRequest(this.request));
- this.requestMock.verify();
- this.requestMock.reset();
-
-// test token null / cookie array emtpy
- this.requestMock.expectAndDefaultReturn(this.request.getHeader(AuthenticationController.AUTHORIZATION_HEADER), null);
- this.requestMock.expectAndDefaultReturn(this.request.getCookies(), new Cookie[]{});
- this.requestMock.replay();
- assertNull(this.authenticator.getTokenFromRequest(this.request));
- this.requestMock.verify();
- this.requestMock.reset();
-
-// test token null / cookie array null
- this.requestMock.expectAndDefaultReturn(this.request.getHeader(AuthenticationController.AUTHORIZATION_HEADER), null);
- this.requestMock.expectAndDefaultReturn(this.request.getCookies(), null);
- this.requestMock.replay();
- assertNull(this.authenticator.getTokenFromRequest(this.request));
- this.requestMock.verify();
- this.requestMock.reset();
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/TestIDGenerator.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/TestIDGenerator.java
deleted file mode 100644
index f320d162a1b..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/TestIDGenerator.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.storage;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.gdata.storage.IDGenerator;
-
-/**
- * @author Simon Willnauer
- *
- */
-public class TestIDGenerator extends TestCase {
- private IDGenerator idgen;
-
- private int initialCap = 100;
-
- @Override
- protected void setUp() throws Exception {
- this.idgen = new IDGenerator(this.initialCap);
-
-
- }
-
- @Override
- protected void tearDown() throws Exception {
-
- this.idgen.stopIDGenerator();
-
- }
-
- /**
- * Test method for 'org.apache.lucene.gdata.storage.IDGenerator.getUID()'
- * @throws InterruptedException
- */
- public void testGetUID() throws InterruptedException {
-
- List idlist = new ArrayList();
- //TODO think about a better way to test this
- for (int i = 0; i < 1000; i++) {
- String id = this.idgen.getUID();
- assertNotNull(id);
- assertFalse(idlist.contains(id));
- idlist.add(id);
-
-
-
- }
-
- }
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/db4o/TestDb4oStorage.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/db4o/TestDb4oStorage.java
deleted file mode 100755
index ff2d09458d1..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/db4o/TestDb4oStorage.java
+++ /dev/null
@@ -1,1040 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.storage.db4o;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.gdata.data.GDataAccount;
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.data.ServerBaseFeed;
-import org.apache.lucene.gdata.server.registry.ProvidedServiceConfig;
-import org.apache.lucene.gdata.storage.ModificationConflictException;
-import org.apache.lucene.gdata.storage.Storage;
-import org.apache.lucene.gdata.storage.StorageController;
-import org.apache.lucene.gdata.storage.StorageException;
-import org.apache.lucene.gdata.storage.lucenestorage.StorageEntryWrapper.StorageOperation;
-import org.apache.lucene.gdata.utils.MultiThreadEntryStub;
-import org.apache.lucene.gdata.utils.Visitor;
-
-import com.db4o.ObjectContainer;
-import com.db4o.ObjectSet;
-import com.db4o.query.Query;
-import com.google.gdata.data.BaseEntry;
-import com.google.gdata.data.BaseFeed;
-import com.google.gdata.data.DateTime;
-import com.google.gdata.data.PlainTextConstruct;
-
-public class TestDb4oStorage extends TestCase {
- private static final String FEEDID = "myFeed";
-
- private static final String ACCOUNTNAME = "myAccount";
-
- private static final String SERVICENAME = "myService";
-
- DB4oController controller;
-
- static volatile boolean fail = false;
-
- protected void setUp() throws Exception {
- this.controller = new DB4oController();
- this.controller.setContainerPoolSize(2);
- this.controller.setFilePath("test.yap");
- this.controller.setRunAsServer(true);
- this.controller.setPassword("");
- this.controller.setUser("");
- this.controller.setUseWeakReferences(true);
- this.controller.setPort(0);
- this.controller.initialize();
- this.controller.visiteInitialize();
- clearDB();
- }
-
- protected void tearDown() throws Exception {
- clearDB();
- fail = false;
- this.controller.getStorage().close();
- this.controller.visiteDestroy();
- this.controller.destroy();
- File dbFile = new File("test.yap");
- assertTrue(dbFile.delete());
- }
-
- private void clearDB() {
- ObjectContainer container = this.controller.releaseContainer();
- ObjectSet set = container.get(new Object());
-
- for (Object object : set) {
- container.delete(object);
- }
- container.ext().purge();
- container.close();
- }
-
- ObjectContainer getContainer() {
- return this.controller.releaseContainer();
- }
-
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.storage.db4o.DB4oStorage.storeEntry(ServerBaseEntry)'
- */
- @SuppressWarnings("unchecked")
- public void testStoreEntry() throws StorageException {
- Storage storage = this.controller.getStorage();
- try {
- ServerBaseEntry e = createServerBaseEntry();
- storage.storeEntry(e);
- fail("excption exp. for feed for the entry");
- } catch (StorageException e) {
- //
- }
-
- try {
-
- storage.storeEntry(null);
- fail("entry is null");
- } catch (StorageException e) {
- //
- }
- ServerBaseEntry exEntry = new ServerBaseEntry();
- exEntry.setFeedId("some");
- try {
-
- storage.storeEntry(exEntry);
- fail("entry id is null");
- } catch (StorageException e) {
- //
- }
- exEntry.setId("someID");
- exEntry.setFeedId(null);
- try {
-
- storage.storeEntry(exEntry);
- fail("feed id is null");
- } catch (StorageException e) {
- //
- }
-
- storeServerBaseFeed();
- ServerBaseEntry e = createServerBaseEntry();
- storage.storeEntry(e);
- ServerBaseEntry e1 = createServerBaseEntry();
- storage.storeEntry(e1);
-
- storage = this.controller.getStorage();
- Query query = getContainer().query();
- query.constrain(BaseEntry.class);
- query.descend("id").constrain(e.getId());
- ObjectSet resultSet = query.execute();
- assertEquals(1, resultSet.size());
- BaseEntry storedEntry = (BaseEntry) resultSet.next();
- assertEquals("1", storedEntry.getVersionId());
-
- ServerBaseFeed bFeed = new ServerBaseFeed();
- bFeed.setItemsPerPage(25);
- bFeed.setId(FEEDID);
- bFeed.setStartIndex(1);
- bFeed.setServiceType(SERVICENAME);
- BaseFeed feed = storage.getFeed(bFeed);
- assertEquals(2, feed.getEntries().size());
- assertEquals(e.getId(), feed.getEntries().get(1).getId()); // last post
- // ->
- // previously
- // created
- assertEquals(e1.getId(), feed.getEntries().get(0).getId()); // first pos
- // -> last
- // created
- assertEquals(feed.getUpdated(), feed.getEntries().get(0).getUpdated());
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.storage.db4o.DB4oStorage.deleteEntry(ServerBaseEntry)'
- */
- public void testDeleteEntry() throws StorageException, InterruptedException {
- ObjectContainer container = getContainer();
- storeServerBaseFeed();
- Storage storage = this.controller.getStorage();
-
- try {
-
- storage.deleteEntry(null);
- fail("entry is null");
- } catch (StorageException e) {
- //
- }
- ServerBaseEntry exEntry = new ServerBaseEntry();
- exEntry.setFeedId("some");
- try {
-
- storage.deleteEntry(exEntry);
- fail("entry id is null");
- } catch (StorageException e) {
- //
- }
- exEntry.setId("someID");
- exEntry.setFeedId(null);
- try {
-
- storage.storeEntry(exEntry);
- fail("feed id is null");
- } catch (StorageException e) {
- //
- }
-
-
- ServerBaseEntry e = createServerBaseEntry();
- storage.storeEntry(e);
- ServerBaseEntry e1 = createServerBaseEntry();
- storage.storeEntry(e1);
-
- storage.deleteEntry(e);
-
- container.close();
- container = getContainer();
- Query query = container.query();
- query.constrain(BaseEntry.class);
- query.descend("id").constrain(e.getId());
- ObjectSet resultSet = query.execute();
- assertEquals(0, resultSet.size());
-
- // #### test version matching
- ServerBaseEntry eVersion = createServerBaseEntry();
- storage.storeEntry(eVersion);
- eVersion.setVersion(33);
- try {
- storage.deleteEntry(eVersion);
- fail("version does not match");
- } catch (Exception ex) {
- // TODO: handle exception
- }
- try {
- storage.deleteEntry(null);
- fail("entry id is null");
- } catch (Exception ex) {
- // TODO: handle exception
- }
- storage = this.controller.getStorage();
- storage.deleteEntry(e1);
- container.close();
- container = getContainer();
- query = container.query();
- query.constrain(BaseEntry.class);
- query.descend("id").constrain(e1.getId());
- resultSet = query.execute();
- assertEquals(0, resultSet.size());
-
- // ############ test concurrency
-
- // ############ test concurrency
- Object monitor = new Object();
- AtomicBoolean reached = new AtomicBoolean(false);
- MultiThreadEntryStub concuEntry = new MultiThreadEntryStub();
- concuEntry.setId(System.currentTimeMillis() + "");
- ProvidedServiceConfig conf = new ProvidedServiceConfig();
- conf.setName(SERVICENAME);
- concuEntry.setServiceConfig(conf);
- concuEntry.setUpdated(DateTime.now());
- concuEntry.setFeedId(FEEDID);
-
- storage = this.controller.getStorage();
-
- storage.storeEntry(concuEntry);
- storage.close();
- concuEntry.acceptGetVersionVisitor(getMonitorVisitor(monitor, reached));
-
- Thread t1 = getDelThread(controller, concuEntry, false);
-
- Thread t2 = getDelThread(controller, concuEntry, true);
- t1.start();
- /*
- * Wait active -- not nice but works fine here wait until thread parked
- */
-
- while (true) {
- synchronized (monitor) {
- if (reached.get())
- break;
- monitor.wait(10);
- }
- }
- t2.start();
- t2.join(800);
- /*
- * Wait active -- not nice but works fine here wake up the waiting
- * thread
- */
- while (true) {
- synchronized (monitor) {
- if (!reached.get())
- break;
- monitor.notifyAll();
- }
- }
- t1.join(300);
- if (fail)
- fail("thread failed -- see stacktrace");
-
- container.close();
-
- }
-
- private Visitor getMonitorVisitor(final Object monitor,
- final AtomicBoolean reached) {
- /*
- * The executing thread stops at a defined position while holding the
- * semaphore inside the storageImpl
- */
- return new Visitor() {
- public void execute(Object[] o) {
- synchronized (monitor) {
- try {
- reached.set(true);
- monitor.wait();
- reached.set(false);
-
- } catch (InterruptedException e) {
- //
- }
- }
- }
- };
- }
-
- private Thread getDelThread(StorageController c, ServerBaseEntry e,
- boolean conflictExpected) {
- Thread t1 = new Thread(new Runner(c, e, conflictExpected,
- StorageOperation.DELETE));
- t1.setPriority(Thread.MAX_PRIORITY);
- return t1;
- }
-
- private Thread getUpdThread(StorageController c, ServerBaseEntry e,
- boolean conflictExpected) {
- Thread t1 = new Thread(new Runner(c, e, conflictExpected,
- StorageOperation.UPDATE));
- t1.setPriority(Thread.MAX_PRIORITY);
- return t1;
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.storage.db4o.DB4oStorage.updateEntry(ServerBaseEntry)'
- */
- public void testUpdateEntry() throws StorageException, InterruptedException {
- storeServerBaseFeed();
- Storage storage = this.controller.getStorage();
- ServerBaseEntry exEntry = new ServerBaseEntry();
-
-
- try {
-
- storage.updateEntry(null);
- fail("entry is null");
- } catch (StorageException e) {
- //
- }
-
- try {
-
- storage.updateEntry(exEntry);
- fail("entry id is null");
- } catch (StorageException e) {
- //
- }
- exEntry.setId("someID");
- try {
-
- storage.updateEntry(exEntry);
- fail("feed id is null");
- } catch (StorageException e) {
- //
- }
-
-
-
- ServerBaseEntry e = createServerBaseEntry();
- ServerBaseEntry e1 = createServerBaseEntry();
- try {
- storage.updateEntry(e);
- fail("entry does not exist");
- } catch (StorageException ex) {
- ex.printStackTrace();
- }
- storage.storeEntry(e);
-
- storage = this.controller.getStorage();
-
- storage.storeEntry(e1);
- ServerBaseEntry e2 = createServerBaseEntry();
- e2.setId(e.getId());
- e2.setTitle(new PlainTextConstruct("new"));
- e2.setUpdated(DateTime.now());
- storage.updateEntry(e2);
- ObjectContainer container = getContainer();
- Query query = container.query();
- query.constrain(BaseEntry.class);
- query.descend("id").constrain(e.getId());
- ObjectSet resultSet = query.execute();
- assertEquals(1, resultSet.size());
- BaseEntry result = (BaseEntry) resultSet.next();
- assertEquals("new", result.getTitle().getPlainText());
- assertEquals("2", result.getVersionId());
-
- ServerBaseFeed bFeed = new ServerBaseFeed();
- bFeed.setItemsPerPage(25);
- bFeed.setId(FEEDID);
- bFeed.setStartIndex(1);
- bFeed.setServiceType(SERVICENAME);
- storage = this.controller.getStorage();
- BaseFeed feed = storage.getFeed(bFeed);
-
- assertEquals(2, feed.getEntries().size());
- assertEquals(e.getId(), feed.getEntries().get(0).getId());
- assertEquals(feed.getUpdated(), feed.getEntries().get(0).getUpdated());
-
- storage = this.controller.getStorage();
- storage.storeEntry(e);
-
- e2.setVersion(5);
- try {
- storage.updateEntry(e2);
- fail("version does not match");
- } catch (Exception ex) {
- // TODO: handle exception
- }
-
- // ############ test concurrency
- Object monitor = new Object();
- AtomicBoolean reached = new AtomicBoolean(false);
-
- MultiThreadEntryStub concuEntry = new MultiThreadEntryStub();
- concuEntry.setId(System.currentTimeMillis() + "");
- ProvidedServiceConfig conf = new ProvidedServiceConfig();
- conf.setName(SERVICENAME);
- concuEntry.setServiceConfig(conf);
- concuEntry.setUpdated(DateTime.now());
- concuEntry.setFeedId(FEEDID);
-
- storage = this.controller.getStorage();
-
- storage.storeEntry(concuEntry);
- storage.close();
- concuEntry.acceptGetEntryVisitor(getMonitorVisitor(monitor, reached));
-
- Thread t1 = getUpdThread(controller, concuEntry, false);
-
- Thread t2 = getUpdThread(controller, concuEntry, true);
- t1.start();
- /*
- * Wait active -- not nice but works fine here wait until thread parked
- */
-
- while (true) {
- synchronized (monitor) {
- if (reached.get())
- break;
- monitor.wait(10);
- }
- }
- t2.start();
- t2.join(800);
- /*
- * Wait active -- not nice but works fine here wake up the waiting
- * thread
- */
- while (true) {
- synchronized (monitor) {
- if (!reached.get())
- break;
- monitor.notifyAll();
- }
- }
- t1.join(300);
- if (fail)
- fail("thread failed -- see stacktrace");
- container.close();
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.storage.db4o.DB4oStorage.getFeed(ServerBaseFeed)'
- */
- public void testGetFeed() throws StorageException {
- storeServerBaseFeed();
- Storage storage = this.controller.getStorage();
- ServerBaseFeed feed = new ServerBaseFeed();
- feed.setItemsPerPage(25);
- feed.setStartIndex(1);
- feed.setServiceType(SERVICENAME);
- try{
- storage.getFeed(feed);
- fail("feedid is null");
- }catch (StorageException e) {
- //
- }
-
- feed.setId(FEEDID);
- BaseFeed result = storage.getFeed(feed);
- assertNotNull(result);
- assertEquals(0, result.getEntries().size());
- List idlist = new ArrayList(30);
- ServerBaseEntry e1 = null;
- for (int i = 0; i < 30; i++) {
- e1 = createServerBaseEntry();
- storage.storeEntry(e1);
- idlist.add(0, e1.getId());
- }
- String firstId = e1.getId();
-
- storage = this.controller.getStorage();
- result = storage.getFeed(feed);
- assertNotNull(result);
- assertEquals(25, result.getEntries().size());
- for (int i = 0; i < 25; i++) {
- assertEquals(idlist.get(i),
- ((BaseEntry) result.getEntries().get(i)).getId());
- }
-
- storage = this.controller.getStorage();
- feed.setItemsPerPage(5);
- result = storage.getFeed(feed);
- assertNotNull(result);
- assertEquals(5, result.getEntries().size());
- for (int i = 0; i < 5; i++) {
- assertEquals(idlist.get(i),
- ((BaseEntry) result.getEntries().get(i)).getId());
- }
-
- storage = this.controller.getStorage();
- feed.setItemsPerPage(1);
- feed.setStartIndex(1);
- result = storage.getFeed(feed);
- assertNotNull(result);
- assertEquals(1, result.getEntries().size());
-
- assertEquals(idlist.get(0), ((BaseEntry) result.getEntries().get(0))
- .getId());
-
- storage = this.controller.getStorage();
- feed.setItemsPerPage(50);
- feed.setStartIndex(28);
- result = storage.getFeed(feed);
- assertNotNull(result);
- assertEquals(3, result.getEntries().size());
-
- assertEquals(idlist.get(27), ((BaseEntry) result.getEntries().get(0))
- .getId());
- assertEquals(idlist.get(28), ((BaseEntry) result.getEntries().get(1))
- .getId());
- assertEquals(idlist.get(29), ((BaseEntry) result.getEntries().get(2))
- .getId());
-
- storage = this.controller.getStorage();
- feed.setItemsPerPage(50);
- feed.setStartIndex(30);
- result = storage.getFeed(feed);
- assertNotNull(result);
- assertEquals(1, result.getEntries().size());
-
- assertEquals(idlist.get(29), ((BaseEntry) result.getEntries().get(0))
- .getId());
-
- // assertNotSame(firstId,((BaseEntry)result.getEntries().get(0)).getId());
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.storage.db4o.DB4oStorage.getEntry(ServerBaseEntry)'
- */
- public void testGetEntry() throws StorageException {
- storeServerBaseFeed();
- Storage storage = this.controller.getStorage();
- ServerBaseEntry exEntry = createServerBaseEntry();
- exEntry.setId(null);
- try{
- storage.getEntry(exEntry);
- fail("id is null");
- }catch (StorageException e) {
-
- }
- ServerBaseEntry e = createServerBaseEntry();
- storage.storeEntry(e);
- ServerBaseEntry e1 = createServerBaseEntry();
- storage.storeEntry(e1);
-
- storage = this.controller.getStorage();
- BaseEntry result = storage.getEntry(e);
- assertNotNull(result);
- assertEquals(e.getId(), result.getId());
- try {
- e1.setId("hello");
- result = storage.getEntry(e1);
- fail("no such entry");
- } catch (StorageException ex) {
- ex.printStackTrace();
- }
-
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.storage.db4o.DB4oStorage.storeAccount(GDataAccount)'
- */
- public void testStoreAccount() throws StorageException {
- GDataAccount account = new GDataAccount();
- account.setName("simon");
- account.setPassword("somepass");
- Storage storage = this.controller.getStorage();
- storage.storeAccount(account);
- ObjectContainer container = getContainer();
- Query q = container.query();
- q.constrain(GDataAccount.class);
- q.descend("name").constrain(account.getName());
- ObjectSet set = q.execute();
- assertEquals(1, set.size());
- assertEquals(account.getPassword(), ((GDataAccount) set.next())
- .getPassword());
- try {
- storage.storeAccount(account);
- fail("Account already stored");
- } catch (Exception e) {
-
- }
- container.close();
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.storage.db4o.DB4oStorage.updateAccount(GDataAccount)'
- */
- public void testUpdateAccount() throws StorageException {
- GDataAccount account = new GDataAccount();
- account.setName("simon");
- account.setPassword("somepass");
-
- Storage storage = this.controller.getStorage();
- try {
- storage.updateAccount(account);
- fail("Account does not exist");
- } catch (Exception e) {
- //
- }
- try {
- storage.updateAccount(null);
- fail("Account is null");
- } catch (Exception e) {
- //
- }
- storage.storeAccount(account);
- ObjectContainer container = getContainer();
- Query q = container.query();
- q.constrain(GDataAccount.class);
- q.descend("name").constrain(account.getName());
- ObjectSet set = q.execute();
- assertEquals(1, set.size());
- assertEquals(account.getPassword(), ((GDataAccount) set.next())
- .getPassword());
- account = new GDataAccount();
- account.setName("simon");
- account.setPassword("newPass");
- storage.updateAccount(account);
- container.close();
- container = getContainer();
- q = container.query();
- q.constrain(GDataAccount.class);
- q.descend("name").constrain(account.getName());
- set = q.execute();
- assertEquals(1, set.size());
- assertEquals(account.getPassword(), ((GDataAccount) set.next())
- .getPassword());
- container.close();
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.storage.db4o.DB4oStorage.deleteAccount(String)'
- */
- public void testDeleteAccount() throws StorageException {
- GDataAccount account = new GDataAccount();
- account.setName("simon");
- account.setPassword("somepass");
- Storage storage = this.controller.getStorage();
- storage.storeAccount(account);
- ObjectContainer container = getContainer();
- Query q = container.query();
- q.constrain(GDataAccount.class);
- q.descend("name").constrain(account.getName());
- ObjectSet set = q.execute();
- assertEquals(1, set.size());
-
- storage.deleteAccount(account.getName());
- container.close();
- container = getContainer();
- q = container.query();
- q.constrain(GDataAccount.class);
- q.descend("name").constrain(account.getName());
- set = q.execute();
- assertEquals(0, set.size());
- try {
- storage.deleteAccount("notstored");
- fail("account not stored");
- } catch (Exception e) {
- //
- }
- try {
- storage.deleteAccount(null);
- fail("name is null");
- } catch (Exception e) {
- //
- }
- container.close();
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.storage.db4o.DB4oStorage.storeFeed(ServerBaseFeed,
- * String)'
- */
- public void testStoreFeed() throws StorageException {
- ObjectContainer container = getContainer();
- ServerBaseFeed feed = new ServerBaseFeed();
- feed.setId(FEEDID);
- ProvidedServiceConfig conf = new ProvidedServiceConfig();
- conf.setName(SERVICENAME);
- feed.setServiceConfig(conf);
-
- Storage storage = this.controller.getStorage();
- try {
- storage.storeFeed(feed, ACCOUNTNAME);
- fail("no accoutn stored");
- } catch (Exception e) {
- //
- }
- GDataAccount account = new GDataAccount();
- account.setName(ACCOUNTNAME);
- account.setPassword("somePass");
- container.set(account);
- container.commit();
- container.close();
- storage.storeFeed(feed, ACCOUNTNAME);
-
- container = getContainer();
- Query query = container.query();
- query.constrain(ServerBaseFeed.class);
- query.descend("feed").descend("id").constrain(FEEDID);
- ObjectSet set = query.execute();
- assertEquals(1, set.size());
-
- assertEquals(feed.getId(), ((ServerBaseFeed) set.next()).getId());
- container.close();
-
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.storage.db4o.DB4oStorage.deleteFeed(String)'
- */
- public void testDeleteFeed() throws StorageException {
-
- ServerBaseFeed feed = new ServerBaseFeed();
- feed.setId(FEEDID);
- GDataAccount account = new GDataAccount();
- account.setName(ACCOUNTNAME);
- account.setPassword("somePass");
- ObjectContainer container = getContainer();
- container.set(account);
- container.commit();
- container.close();
- Storage storage = this.controller.getStorage();
- ProvidedServiceConfig conf = new ProvidedServiceConfig();
- conf.setName(SERVICENAME);
- feed.setServiceConfig(conf);
- storage.storeFeed(feed, ACCOUNTNAME);
-
- storage.deleteFeed(FEEDID);
- container = getContainer();
- Query query = container.query();
- query.constrain(ServerBaseFeed.class);
- query.descend("feed").descend("id").constrain(FEEDID);
- ObjectSet set = query.execute();
- assertEquals(0, set.size());
-
- query = getContainer().query();
- query.constrain(BaseFeed.class);
- query.descend("id").constrain(FEEDID);
- set = query.execute();
- assertEquals(0, set.size());
- container.close();
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.storage.db4o.DB4oStorage.getServiceForFeed(String)'
- */
- public void testGetServiceForFeed() throws StorageException {
- ServerBaseFeed feed = new ServerBaseFeed();
- ProvidedServiceConfig conf = new ProvidedServiceConfig();
- conf.setName(SERVICENAME);
- feed.setServiceConfig(conf);
- feed.setId(FEEDID);
- GDataAccount account = new GDataAccount();
- account.setName(ACCOUNTNAME);
- account.setPassword("somePass");
- ObjectContainer container = getContainer();
- container.set(account);
- container.commit();
- container.close();
- Storage storage = this.controller.getStorage();
- storage.storeFeed(feed, ACCOUNTNAME);
-
- assertEquals(SERVICENAME, storage.getServiceForFeed(FEEDID));
- try {
- storage.getServiceForFeed(null);
- fail("ID is null");
- } catch (Exception e) {
- //
- }
-
- try {
- storage.getServiceForFeed("someOtherId");
- fail("feed for id is not stored");
- } catch (Exception e) {
- //
- }
-
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.storage.db4o.DB4oStorage.getAccount(String)'
- */
- public void testGetAccount() throws StorageException {
- GDataAccount account = new GDataAccount();
- account.setName(ACCOUNTNAME);
- account.setPassword("somePass");
- ObjectContainer container = getContainer();
- container.set(account);
- container.commit();
- container.close();
-
- Storage storage = this.controller.getStorage();
- assertNotNull(storage.getAccount(ACCOUNTNAME));
- assertEquals(account.getPassword(), storage.getAccount(ACCOUNTNAME)
- .getPassword());
- try {
- storage.getAccount(null);
- fail("accountname is null");
- } catch (Exception e) {
- //
- }
- try {
- storage.getAccount("someOtherAccount");
- fail("accountname is not stored");
- } catch (Exception e) {
- //
- }
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.storage.db4o.DB4oStorage.updateFeed(ServerBaseFeed,
- * String)'
- */
- public void testUpdateFeed() throws StorageException {
- ObjectContainer container = getContainer();
- ServerBaseFeed feed = new ServerBaseFeed();
- ProvidedServiceConfig conf = new ProvidedServiceConfig();
- conf.setName(SERVICENAME);
- feed.setId(FEEDID);
- feed.setServiceConfig(conf);
- Storage storage = this.controller.getStorage();
- GDataAccount account = new GDataAccount();
- account.setName(ACCOUNTNAME);
- account.setPassword("somePass");
- container.set(account);
- container.commit();
- container.close();
- storage.storeFeed(feed, ACCOUNTNAME);
- assertNull(feed.getTitle());
- ServerBaseFeed feedU = new ServerBaseFeed();
- feedU.setServiceConfig(conf);
- feedU.setId(FEEDID);
- feedU.setTitle(new PlainTextConstruct("someText"));
- feedU.setServiceType(SERVICENAME);
-
- storage.updateFeed(feedU, ACCOUNTNAME);
- ServerBaseFeed requestFeed = new ServerBaseFeed();
- requestFeed.setId(FEEDID);
- requestFeed.setServiceType(SERVICENAME);
- assertNotNull(storage.getFeed(requestFeed));
- assertEquals(feedU.getTitle(), storage.getFeed(requestFeed).getTitle());
- try {
- storage.updateFeed(null, ACCOUNTNAME);
- fail("feed is null");
- } catch (Exception e) {
- //
- }
- try {
- storage.updateFeed(feedU, null);
- fail("accountname is null");
- } catch (Exception e) {
- //
- }
- try {
- feedU.setServiceType(null);
- storage.updateFeed(feedU, ACCOUNTNAME);
- fail("servicetype is null");
- } catch (Exception e) {
- //
- }
-
- }
-
- private static ServerBaseEntry createServerBaseEntry() {
- ServerBaseEntry e = new ServerBaseEntry();
- e.setId(System.currentTimeMillis() + "");
- ProvidedServiceConfig conf = new ProvidedServiceConfig();
- conf.setName(SERVICENAME);
- e.setServiceConfig(conf);
- e.setUpdated(DateTime.now());
- e.setFeedId(FEEDID);
- try {
- Thread.sleep(2);
- } catch (InterruptedException e1) {
-
- e1.printStackTrace();
- }
- return e;
- }
-
- private ServerBaseFeed storeServerBaseFeed() {
- ServerBaseFeed f = new ServerBaseFeed();
- ProvidedServiceConfig conf = new ProvidedServiceConfig();
- conf.setName(SERVICENAME);
- f.setServiceConfig(conf);
- f.setId(System.currentTimeMillis() + "");
- f.setId(FEEDID);
- f.setUpdated(DateTime.now());
- ObjectContainer con = this.controller.releaseContainer();
- con.set(f);
- con.commit();
-
- con.close();
- return f;
- }
-
- static class Runner implements Runnable {
- Storage s;
-
- StorageController c;
-
- ServerBaseEntry e;
-
- boolean expConf;
-
- StorageOperation op;
-
- public Runner(StorageController c, ServerBaseEntry e,
- boolean expectConflict, StorageOperation op) {
-
- this.c = c;
-
- this.e = e;
- this.expConf = expectConflict;
- this.op = op;
-
- }
-
- public void run() {
- try {
- ((DB4oController) this.c).visiteInitialize();
- this.s = this.c.getStorage();
- } catch (StorageException e1) {
-
- e1.printStackTrace();
- }
- try {
- if (this.op == StorageOperation.DELETE)
- this.s.deleteEntry(e);
- if (this.op == StorageOperation.UPDATE)
- this.s.updateEntry(e);
- if (expConf)
- fail = true;
- } catch (ModificationConflictException ex) {
- if (!expConf)
- fail = true;
- ex.printStackTrace();
-
- } catch (StorageException ex) {
- ex.printStackTrace();
- fail = true;
- } finally {
- ((DB4oController) this.c).visiteDestroy();
- }
-
- }
- }
-
- public void testFeedLastModified() {
- ServerBaseFeed feed = storeServerBaseFeed();
- Storage s = this.controller.getStorage();
- assertEquals(feed.getUpdated().getValue(), s
- .getFeedLastModified(FEEDID).longValue());
- try {
- s.getFeedLastModified(null);
- fail("id is null");
- } catch (StorageException e) {
-
- }
- try {
- s.getFeedLastModified("someOtherid");
- fail("no such feed");
- } catch (StorageException e) {
-
- }
-
- }
-
- public void testEntryLastModified() {
- ServerBaseFeed feed = storeServerBaseFeed();
- Storage s = this.controller.getStorage();
- ServerBaseEntry en = createServerBaseEntry();
- s.storeEntry(en);
- assertEquals(en.getUpdated().getValue(), s.getEntryLastModified(
- en.getId(), FEEDID).longValue());
- try {
- s.getEntryLastModified(null, null);
- fail("id is null");
- } catch (StorageException e) {
-
- }
- try {
- s.getEntryLastModified("someOtherid", "notinstorage");
- fail("no such Entry");
- } catch (StorageException e) {
-
- }
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/db4o/TestObjectServerDecorator.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/db4o/TestObjectServerDecorator.java
deleted file mode 100755
index 4004fa982ce..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/db4o/TestObjectServerDecorator.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.storage.db4o;
-
-import java.io.File;
-import java.lang.reflect.Proxy;
-
-import com.db4o.Db4o;
-import com.db4o.ObjectContainer;
-import com.db4o.ObjectServer;
-
-import junit.framework.TestCase;
-
-public class TestObjectServerDecorator extends TestCase {
- ObjectServer decorator;
- ObjectServer actualServer;
- String dbFile = "test.yap";
- protected void setUp() throws Exception {
- decorator = (ObjectServer) Proxy.newProxyInstance(this.getClass().getClassLoader(),new Class[]{ObjectServer.class},new ObjectServerDecorator("u","p","127.0.0.1",10101));
- actualServer= Db4o.openServer(dbFile,10101);
- actualServer.grantAccess("u","p");
-
- }
-
- protected void tearDown() throws Exception {
- actualServer.close();
- File dbF = new File(dbFile);
- assertTrue(dbF.delete());
-
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.storage.db4o.ObjectServerDecorator.invoke(Object, Method, Object[])'
- */
- public void testInvoke() {
- assertFalse(this.decorator.close());
- assertNull(this.decorator.ext());
- assertEquals(0,this.decorator.hashCode());
- ObjectContainer container = this.decorator.openClient();
- assertNotNull(container);
- assertTrue(this.decorator.openClient()instanceof ObjectContainer);
- container.close();
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/StorageCoreControllerStub.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/StorageCoreControllerStub.java
deleted file mode 100755
index 4dd48eb8358..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/StorageCoreControllerStub.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.storage.lucenestorage;
-
-import java.io.IOException;
-import java.security.NoSuchAlgorithmException;
-
-import org.apache.lucene.gdata.server.registry.Component;
-import org.apache.lucene.gdata.server.registry.ComponentType;
-import org.apache.lucene.gdata.storage.IDGenerator;
-import org.apache.lucene.gdata.storage.Storage;
-import org.apache.lucene.gdata.storage.StorageException;
-import org.apache.lucene.gdata.utils.ReferenceCounter;
-import org.apache.lucene.index.IndexModifier;
-import org.apache.lucene.store.Directory;
-
-/**
- *
- *
- */
-@Component(componentType = ComponentType.STORAGECONTROLLER)
-public class StorageCoreControllerStub extends StorageCoreController {
- private final IDGenerator idGenerator;
-
-
- public StorageCoreControllerStub() throws IOException, StorageException {
- try{
- this.idGenerator = new IDGenerator(5);
- }catch (NoSuchAlgorithmException e) {
- throw new StorageException(e);
- }
-
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageCoreController#createIndexModifier()
- */
- @Override
- protected IndexModifier createIndexModifier() throws IOException {
-
- return null;
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageCoreController#forceWrite()
- */
- @Override
- public void forceWrite() throws IOException {
-
-
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageCoreController#getDirectory()
- */
- @Override
- protected Directory getDirectory() {
-
- return null;
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageCoreController#getBufferSize()
- */
- @Override
- public int getBufferSize() {
-
- return 1;
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageCoreController#getStorageModifier()
- */
- @Override
- protected StorageModifier getStorageModifier() {
-
- try {
- return new StorageModifierStub();
- } catch (IOException e) {
-
- e.printStackTrace();
- } catch (StorageException e) {
-
- e.printStackTrace();
- }
- return null;
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageCoreController#getPersistFactor()
- */
- @Override
- public int getPersistFactor() {
-
- return 1;
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageCoreController#getStorageQuery()
- */
- @Override
- protected ReferenceCounter getStorageQuery() {
-
- ReferenceCounter retVal = new ReferenceCounter(new StorageQueryStub(null,null)){
-
- @Override
- protected void close() {
- //
- }
-
- };
- retVal.increamentReference();
- retVal.increamentReference();
- return retVal;
-
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageCoreController#registerNewStorageQuery()
- */
- @Override
- protected void registerNewStorageQuery() throws IOException {
-
-
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageCoreController#releaseId()
- */
- @Override
- public synchronized String releaseId() throws StorageException {
-
- try {
- return this.idGenerator.getUID();
- } catch (InterruptedException e) {
-
- throw new StorageException(e);
- }
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageCoreController#releaseNewStorageBuffer()
- */
- @Override
- protected StorageBuffer releaseNewStorageBuffer() {
-
- return null;
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageCoreController#setBufferSize(int)
- */
- @Override
- public void setBufferSize(int storageBufferSize) {
-
-
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageCoreController#setPersistFactor(int)
- */
- @Override
- public void setPersistFactor(int storagePersistFactor) {
-
-
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageCoreController#destroy()
- */
- @Override
- public void destroy() {
-
- this.idGenerator.stopIDGenerator();
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageCoreController#getStorage()
- */
- @Override
- public Storage getStorage() throws StorageException {
-
- return new StorageImplementation();
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageCoreController#initialize()
- */
- @Override
- public void initialize() {
-// this.setStorageDir(new RAMDirectory());
-// super.initialize();
- }
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/StorageModifierStub.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/StorageModifierStub.java
deleted file mode 100644
index b521dcd3ff0..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/StorageModifierStub.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.storage.lucenestorage;
-
-import java.io.IOException;
-
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
-import org.apache.lucene.gdata.storage.StorageException;
-import org.apache.lucene.gdata.storage.lucenestorage.StorageBuffer;
-import org.apache.lucene.gdata.storage.lucenestorage.StorageCoreController;
-import org.apache.lucene.gdata.storage.lucenestorage.StorageModifier;
-import org.apache.lucene.gdata.utils.StorageControllerStub;
-import org.apache.lucene.index.IndexModifier;
-import org.apache.lucene.store.RAMDirectory;
-
-/**
- * @author Simon Willnauer
- *
- */
-public class StorageModifierStub extends StorageModifier {
- public boolean throwException = false;
- public StorageModifierStub() throws IOException, StorageException{
- super(new StorageCoreControllerStub(), new IndexModifier(new RAMDirectory(),new StandardAnalyzer(),true), new StorageBuffer(1),1, 1);
- }
- /**
- * @param controller
- * @param modifier
- * @param buffer
- * @param persitsFactor
- * @param optimizeInterval
- * @throws IOException
- * @throws StorageException
- */
- public StorageModifierStub(StorageCoreController controller,
- IndexModifier modifier, StorageBuffer buffer, int persitsFactor,
- int optimizeInterval) throws IOException, StorageException {
-
- super(new StorageCoreControllerStub(), new IndexModifier(new RAMDirectory(),new StandardAnalyzer(),true), new StorageBuffer(1),1, 1);
-
- // TODO Auto-generated constructor stub
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageModifier#close()
- */
- @Override
- protected void close() throws IOException {
- if(throwException)
- throw new IOException();
-
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageModifier#createAccount(org.apache.lucene.gdata.storage.lucenestorage.StorageAccountWrapper)
- */
- @Override
- public void createAccount(StorageAccountWrapper account) throws StorageException {
- if(throwException)
- throw new StorageException();
-
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageModifier#createFeed(org.apache.lucene.gdata.storage.lucenestorage.StorageFeedWrapper)
- */
- @Override
- public void createFeed(StorageFeedWrapper wrapper) throws StorageException {
- if(throwException)
- throw new StorageException();
-
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageModifier#deleteAccount(java.lang.String)
- */
- @Override
- public void deleteAccount(String accountName) throws StorageException {
- if(throwException)
- throw new StorageException();
-
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageModifier#deleteEntry(org.apache.lucene.gdata.storage.lucenestorage.StorageEntryWrapper)
- */
- @Override
- public void deleteEntry(StorageEntryWrapper wrapper) throws StorageException {
- if(throwException)
- throw new StorageException();
-
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageModifier#deleteFeed(java.lang.String)
- */
- @Override
- public void deleteFeed(String feedId) throws StorageException {
- if(throwException)
- throw new StorageException();
-
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageModifier#forceWrite()
- */
- @Override
- public void forceWrite() throws IOException {
- if(throwException)
- throw new IOException();
-
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageModifier#insertEntry(org.apache.lucene.gdata.storage.lucenestorage.StorageEntryWrapper)
- */
- @Override
- public void insertEntry(StorageEntryWrapper wrapper) throws StorageException {
- if(throwException)
- throw new StorageException();
-
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageModifier#updateAccount(org.apache.lucene.gdata.storage.lucenestorage.StorageAccountWrapper)
- */
- @Override
- public void updateAccount(StorageAccountWrapper user) throws StorageException {
- if(throwException)
- throw new StorageException();
-
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageModifier#updateEntry(org.apache.lucene.gdata.storage.lucenestorage.StorageEntryWrapper)
- */
- @Override
- public void updateEntry(StorageEntryWrapper wrapper) throws StorageException {
- if(throwException)
- throw new StorageException();
- if(wrapper != null)
- wrapper.getEntry();
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageModifier#updateFeed(org.apache.lucene.gdata.storage.lucenestorage.StorageFeedWrapper)
- */
- @Override
- public void updateFeed(StorageFeedWrapper wrapper) throws StorageException {
- if(throwException)
- throw new StorageException();
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/StorageQueryStub.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/StorageQueryStub.java
deleted file mode 100755
index fc496d33f0b..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/StorageQueryStub.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.storage.lucenestorage;
-
-import java.io.IOException;
-import java.util.List;
-
-import org.apache.lucene.gdata.data.GDataAccount;
-import org.apache.lucene.gdata.server.registry.ProvidedService;
-import org.apache.lucene.gdata.storage.StorageException;
-import org.apache.lucene.search.Searcher;
-
-import com.google.gdata.data.BaseEntry;
-import com.google.gdata.data.BaseFeed;
-import com.google.gdata.util.ParseException;
-
-/**
- *
- *
- */
-public class StorageQueryStub extends StorageQuery {
-
- public boolean booleanReturn = true;
-
- /**
- * @param buffer
- * @param searcher
- */
- public StorageQueryStub(StorageBuffer buffer, Searcher searcher) {
- super(buffer, searcher);
- // TODO Auto-generated constructor stub
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageQuery#checkEntryVersion(java.lang.String, java.lang.String, int)
- */
- @Override
- protected boolean checkEntryVersion(String id, String feedId, int version) throws IOException {
-
- return booleanReturn;
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageQuery#close()
- */
- @Override
- public void close() throws IOException {
-
- super.close();
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageQuery#entryQuery(java.util.List, java.lang.String, org.apache.lucene.gdata.server.registry.ProvidedService)
- */
- @Override
- public List entryQuery(List entryIds, String feedId, ProvidedService config) throws IOException, ParseException {
-
- return null;
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageQuery#getAccountNameForFeedId(java.lang.String)
- */
- @Override
- public String getAccountNameForFeedId(String feedId) throws IOException {
-
- return null;
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageQuery#getEntryLastModified(java.lang.String, java.lang.String)
- */
- @Override
- protected long getEntryLastModified(String entryId, String feedId) throws IOException, StorageException {
-
- return System.currentTimeMillis();
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageQuery#getFeedLastModified(java.lang.String)
- */
- @Override
- protected long getFeedLastModified(String feedId) throws IOException {
-
- return System.currentTimeMillis();
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageQuery#getLatestFeedQuery(java.lang.String, int, int, org.apache.lucene.gdata.server.registry.ProvidedService)
- */
- @Override
- public BaseFeed getLatestFeedQuery(String feedId, int resultCount, int startIndex, ProvidedService config) throws IOException, ParseException {
-
- return null;
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageQuery#getService(java.lang.String)
- */
- @Override
- public String getService(String feedID) throws IOException {
-
- return null;
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageQuery#getUser(java.lang.String)
- */
- @Override
- public GDataAccount getUser(String username) throws IOException {
-
- return null;
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageQuery#isEntryStored(java.lang.String, java.lang.String)
- */
- @Override
- protected boolean isEntryStored(String entryId, String feedId) throws IOException {
-
- return booleanReturn;
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageQuery#isFeedStored(java.lang.String)
- */
- @Override
- public boolean isFeedStored(String feedId) throws IOException {
-
- return booleanReturn;
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.lucenestorage.StorageQuery#singleEntryQuery(java.lang.String, java.lang.String, org.apache.lucene.gdata.server.registry.ProvidedService)
- */
- @Override
- public BaseEntry singleEntryQuery(String entryId, String feedId, ProvidedService config) throws IOException, ParseException {
-
- return null;
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/TestModifiedEntryFilter.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/TestModifiedEntryFilter.java
deleted file mode 100644
index 709c062516b..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/TestModifiedEntryFilter.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package org.apache.lucene.gdata.storage.lucenestorage;
-
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
-import org.apache.lucene.gdata.storage.lucenestorage.StorageEntryWrapper;
-import org.apache.lucene.gdata.utils.ModifiedEntryFilter;
-import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.index.Term;
-import org.apache.lucene.search.Hits;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.Searcher;
-import org.apache.lucene.search.TermQuery;
-import org.apache.lucene.store.RAMDirectory;
-
-public class TestModifiedEntryFilter extends TestCase {
- IndexWriter writer;
- IndexReader reader;
- List excludeList;
- String feedID = "feed";
- String fieldFeedId = "feedID";
- protected void setUp() throws Exception {
- RAMDirectory dir = new RAMDirectory();
- this.writer = new IndexWriter(dir,new StandardAnalyzer(),true);
- Document doc = new Document();
- doc.add(new Field(StorageEntryWrapper.FIELD_ENTRY_ID,"1",Field.Store.YES,Field.Index.UN_TOKENIZED));
- doc.add(new Field(fieldFeedId,feedID,Field.Store.YES,Field.Index.UN_TOKENIZED));
- Document doc1 = new Document();
- doc1.add(new Field(StorageEntryWrapper.FIELD_ENTRY_ID,"2",Field.Store.YES,Field.Index.UN_TOKENIZED));
- doc1.add(new Field(fieldFeedId,feedID,Field.Store.YES,Field.Index.UN_TOKENIZED));
- this.writer.addDocument(doc);
- this.writer.addDocument(doc1);
- this.writer.close();
- this.reader = IndexReader.open(dir);
- this.excludeList = new ArrayList();
- this.excludeList.add("1");
-
-
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- }
- public void testFilter() throws IOException{
- Searcher s = new IndexSearcher(this.reader);
- Query q = new TermQuery(new Term(fieldFeedId,feedID));
- Hits hits = s.search(q);
- assertEquals(2,hits.length());
-
- hits = s.search(q,new ModifiedEntryFilter(this.excludeList.toArray(new String[0]),StorageEntryWrapper.FIELD_ENTRY_ID));
- assertEquals(1,hits.length());
- this.excludeList.add("2");
-
- hits = s.search(q,new ModifiedEntryFilter(this.excludeList.toArray(new String[0]),StorageEntryWrapper.FIELD_ENTRY_ID));
- assertEquals(0,hits.length());
- this.excludeList.add(null);
- this.excludeList.add("5");
- hits = s.search(q,new ModifiedEntryFilter(this.excludeList.toArray(new String[0]),StorageEntryWrapper.FIELD_ENTRY_ID));
- assertEquals(0,hits.length());
-
- }
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/TestSingelHostConcurrencyLock.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/TestSingelHostConcurrencyLock.java
deleted file mode 100755
index c1257686ee3..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/TestSingelHostConcurrencyLock.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.storage.lucenestorage;
-
-import org.apache.lucene.gdata.storage.lucenestorage.SingleHostConcurrentStorageLock.ConcurrencyException;
-
-import junit.framework.TestCase;
-
-public class TestSingelHostConcurrencyLock extends TestCase {
- SingleHostConcurrentStorageLock lock;
- boolean threadResult = false;
- protected void setUp() throws Exception {
- this.lock = (SingleHostConcurrentStorageLock)SingleHostConcurrentStorageLock.getConcurrentStorageLock();
- super.setUp();
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- threadResult = false;
- this.lock.close();
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.storage.lucenestorage.SingleHostConcurrentStorageLock.getConcurrentStorageLock()'
- */
- public void testGetConcurrentStorageLock() {
- ConcurrentStorageLock lock = SingleHostConcurrentStorageLock.getConcurrentStorageLock();
- assertEquals(lock,SingleHostConcurrentStorageLock.getConcurrentStorageLock() );
-
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.storage.lucenestorage.SingleHostConcurrentStorageLock.setLock(String)'
- */
- public void testSetLock() throws InterruptedException {
- final String key = "someKey";
- final String nextKey = "fooKey";
- assertTrue(lock.setLock(key));
- assertTrue(lock.isKeyLocked(key));
-
- try{
- this.lock.setLock(key);
- fail("thread has already locked the key");
- }catch (Exception e) {
- // TODO: handle exception
- }
-
- try{
- assertTrue(lock.setLock(nextKey));
- fail("thread has already locked the key");
- }catch (Exception e) {
- // TODO: handle exception
- }
-
- Thread t = new Thread(new Runnable(){
- public void run(){
- threadResult = lock.setLock(key);
-
-
-
- }
- });
- t.start();
- t.join(300);
- assertFalse(threadResult);
-
- t = new Thread(new Runnable(){
- public void run(){
- threadResult = lock.setLock(nextKey);
-
-
-
- }
- });
- t.start();
- t.join(300);
- assertTrue(threadResult);
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.storage.lucenestorage.SingleHostConcurrentStorageLock.releaseLock(String)'
- */
- public void testReleaseLock() throws InterruptedException {
- final String key = "someKey";
- final String nextKey = "fooKey";
- assertTrue(lock.setLock(key));
- assertTrue(lock.isKeyLocked(key));
- assertTrue(lock.releaseLock(key));
- assertTrue(this.lock.setLock(key));
- try{
- assertTrue(lock.setLock(nextKey));
- fail("thread has already locked the key");
- }catch (Exception e) {
- // TODO: handle exception
- }
-
- Thread t = new Thread(new Runnable(){
- public void run(){
- threadResult = lock.setLock(nextKey);
- }
- });
- t.start();
- t.join(300);
- assertTrue(threadResult);
- try{
- this.lock.releaseLock(nextKey);
- fail("current thread is not owner");
- }catch (ConcurrencyException e) {
- // TODO: handle exception
- }
-
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.storage.lucenestorage.SingleHostConcurrentStorageLock.releaseThreadLocks()'
- */
- public void testReleaseThreadLocks() {
-
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.storage.lucenestorage.SingleHostConcurrentStorageLock.isKeyLocked(String)'
- */
- public void testIsKeyLocked() {
-
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.storage.lucenestorage.SingleHostConcurrentStorageLock.close()'
- */
- public void testClose() {
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/TestStorageBuffer.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/TestStorageBuffer.java
deleted file mode 100755
index d43154fe9bf..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/TestStorageBuffer.java
+++ /dev/null
@@ -1,251 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.storage.lucenestorage;
-
-import java.io.IOException;
-import java.util.List;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.storage.lucenestorage.StorageEntryWrapper.StorageOperation;
-import org.apache.lucene.gdata.utils.ProvidedServiceStub;
-
-import com.google.gdata.data.DateTime;
-
-public class TestStorageBuffer extends TestCase {
- private static final String FEEDID = "feed";
- private static final String ENTRYID = "someID";
- private StorageBuffer buffer;
- protected void setUp() throws Exception {
- super.setUp();
- this.buffer = new StorageBuffer(10);
- }
-
- protected void tearDown() throws Exception {
- this.buffer.close();
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.storage.lucenestorage.StorageBuffer.StorageBuffer(int)'
- */
- public void testStorageBuffer() {
- assertEquals(StorageBuffer.DEFAULT_BUFFER_COUNT,new StorageBuffer(StorageBuffer.DEFAULT_BUFFER_COUNT-1).getBufferSize());
- assertEquals(StorageBuffer.DEFAULT_BUFFER_COUNT,new StorageBuffer(StorageBuffer.DEFAULT_BUFFER_COUNT).getBufferSize());
- assertEquals(StorageBuffer.DEFAULT_BUFFER_COUNT+1,new StorageBuffer(StorageBuffer.DEFAULT_BUFFER_COUNT+1).getBufferSize());
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.storage.lucenestorage.StorageBuffer.addEntry(StorageEntryWrapper)'
- */
- public void testAddEntry() throws IOException {
-
- ServerBaseEntry e = createServerBaseEntry(ENTRYID,FEEDID);
- StorageEntryWrapper wrapper = new StorageEntryWrapper(e,StorageOperation.INSERT);
- this.buffer.addEntry(wrapper);
- assertEquals(1,this.buffer.getSortedEntries(FEEDID).size());
- this.buffer.addEntry(wrapper);
- assertEquals(1,this.buffer.getSortedEntries(FEEDID).size());
-
- e.setId("someotherID");
- e.setFeedId(FEEDID);
- e.setServiceConfig(new ProvidedServiceStub());
- wrapper = new StorageEntryWrapper(e,StorageOperation.INSERT);
- this.buffer.addEntry(wrapper);
- assertEquals(2,this.buffer.getSortedEntries(FEEDID).size());
- e.setId("someotherID");
- e.setFeedId("someOtherFeed");
- e.setServiceConfig(new ProvidedServiceStub());
- wrapper = new StorageEntryWrapper(e,StorageOperation.UPDATE);
- this.buffer.addEntry(wrapper);
- wrapper = new StorageEntryWrapper(e,StorageOperation.DELETE);
- e.setId("deleted and ingnored");
- e.setFeedId("someOtherFeed");
- e.setServiceConfig(new ProvidedServiceStub());
- this.buffer.addEntry(wrapper);
- assertEquals(2,this.buffer.getSortedEntries(FEEDID).size());
- assertEquals(1,this.buffer.getSortedEntries("someOtherFeed").size());
- assertEquals("Contains 2 different IDs",2,this.buffer.getExculdList().length);
-
- }
- /*
- * Test method for 'org.apache.lucene.gdata.storage.lucenestorage.StorageBuffer.addDeleted(String, String)'
- */
- public void testAddDeleted() throws IOException {
-
- this.buffer.addDeleted(ENTRYID,FEEDID);
- assertNull(this.buffer.getSortedEntries(FEEDID));
- assertEquals(1,this.buffer.getExculdList().length);
- assertEquals(ENTRYID,this.buffer.getExculdList()[0]);
-
- this.buffer.addDeleted(ENTRYID,FEEDID);
- assertNull(this.buffer.getSortedEntries(FEEDID));
- assertEquals(1,this.buffer.getExculdList().length);
- assertEquals(ENTRYID,this.buffer.getExculdList()[0]);
-
-
- }
- /*
- * Test method for 'org.apache.lucene.gdata.storage.lucenestorage.StorageBuffer.getFeedLastModified(String)'
- */
- public void testGetFeedLastModified() throws IOException, InterruptedException {
- ServerBaseEntry e = createServerBaseEntry(ENTRYID,FEEDID);
- e.setUpdated(new DateTime(System.currentTimeMillis()-200,0));
- StorageEntryWrapper wrapper = new StorageEntryWrapper(e,StorageOperation.INSERT);
- this.buffer.addEntry(wrapper);
- assertEquals(new Long(e.getUpdated().getValue()),this.buffer.getFeedLastModified(FEEDID));
- //test update
-// force timestamp
- e.setUpdated(new DateTime(System.currentTimeMillis()-180,0));
- wrapper = new StorageEntryWrapper(e,StorageOperation.UPDATE);
- this.buffer.addEntry(wrapper);
- Long firstAddTimestamp = new Long(e.getUpdated().getValue());
- assertEquals(firstAddTimestamp,this.buffer.getFeedLastModified(FEEDID));
-// force timestamp
- e.setUpdated(new DateTime(System.currentTimeMillis()-160,0));
- assertFalse("updated after add" ,e.getUpdated().equals(this.buffer.getFeedLastModified(FEEDID)));
-
- //insert for other feed
- String otherID = "someOtherFeedID";
- e.setFeedId(otherID);
-// force timestamp
- e.setUpdated(new DateTime(System.currentTimeMillis()-140,0));
- wrapper = new StorageEntryWrapper(e,StorageOperation.INSERT);
- this.buffer.addEntry(wrapper);
- assertEquals(new Long(e.getUpdated().getValue()),this.buffer.getFeedLastModified(otherID));
- assertEquals(firstAddTimestamp,this.buffer.getFeedLastModified(FEEDID));
-
- assertTrue(firstAddTimestamp.equals(this.buffer.getFeedLastModified(FEEDID)));
- this.buffer.addDeleted(e.getId(),FEEDID);
- // time will be set inside the buffer
- assertTrue(firstAddTimestamp < this.buffer.getFeedLastModified(FEEDID));
-
-
- }
-
-
- /*
- * Test method for 'org.apache.lucene.gdata.storage.lucenestorage.StorageBuffer.getSortedEntries(String)'
- */
- public void testGetSortedEntries() throws IOException, InterruptedException {
- assertNull(this.buffer.getSortedEntries(FEEDID));
- ServerBaseEntry e = createServerBaseEntry("2",FEEDID);
- e.setUpdated(new DateTime(System.currentTimeMillis()-200,0));
- StorageEntryWrapper wrapper = new StorageEntryWrapper(e,StorageOperation.INSERT);
- this.buffer.addEntry(wrapper);
- e.setId("0");
-// force timestamp
- e.setUpdated(new DateTime(System.currentTimeMillis()-180,0));
- wrapper = new StorageEntryWrapper(e,StorageOperation.INSERT);
- this.buffer.addEntry(wrapper);
- e.setId("1");
-// force timestamp
- e.setUpdated(new DateTime(System.currentTimeMillis()-160,0));
- wrapper = new StorageEntryWrapper(e,StorageOperation.INSERT);
- this.buffer.addEntry(wrapper);
- e.setId("0");
-// force timestamp
- e.setUpdated(new DateTime(System.currentTimeMillis()-140,0));
- wrapper = new StorageEntryWrapper(e,StorageOperation.UPDATE);
- this.buffer.addEntry(wrapper);
-// force timestamp
- e.setUpdated(new DateTime(System.currentTimeMillis()-120,0));
- wrapper = new StorageEntryWrapper(e,StorageOperation.DELETE);
- this.buffer.addEntry(wrapper);
- List list = this.buffer.getSortedEntries(FEEDID);
- assertEquals(3,list.size());
- for (int i = 0; i < 3; i++) {
- assertEquals(""+i,list.get(i).getEntryId());
- }
-
-
- }
-
-
-
- /*
- * Test method for 'org.apache.lucene.gdata.storage.lucenestorage.StorageBuffer.getEntry(String, String)'
- */
- public void testGetEntry() throws IOException {
- assertNull(this.buffer.getEntry(ENTRYID,FEEDID));
- ServerBaseEntry e = createServerBaseEntry(ENTRYID,FEEDID);
- StorageEntryWrapper wrapper = new StorageEntryWrapper(e,StorageOperation.INSERT);
- this.buffer.addEntry(wrapper);
- assertSame(wrapper,this.buffer.getEntry(ENTRYID,FEEDID));
-
- e = createServerBaseEntry("0",FEEDID);
- wrapper = new StorageEntryWrapper(e,StorageOperation.UPDATE);
- this.buffer.addEntry(wrapper);
- assertSame(wrapper,this.buffer.getEntry("0",FEEDID));
-
-
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.storage.lucenestorage.StorageBuffer.getExculdList()'
- */
- public void testGetExculdList() throws IOException {
- ServerBaseEntry e = createServerBaseEntry(ENTRYID,FEEDID);
- StorageEntryWrapper wrapper = new StorageEntryWrapper(e,StorageOperation.INSERT);
- this.buffer.addEntry(wrapper);
- this.buffer.addEntry(wrapper);
- assertEquals(1,this.buffer.getExculdList().length);
- assertEquals(wrapper.getEntryId(),this.buffer.getExculdList()[0]);
-
- wrapper = new StorageEntryWrapper(e,StorageOperation.UPDATE);
- this.buffer.addEntry(wrapper);
- assertEquals(1,this.buffer.getExculdList().length);
- assertEquals(wrapper.getEntryId(),this.buffer.getExculdList()[0]);
- this.buffer.addDeleted(ENTRYID,FEEDID);
- assertEquals(1,this.buffer.getExculdList().length);
- assertEquals(wrapper.getEntryId(),this.buffer.getExculdList()[0]);
-
- e = createServerBaseEntry("someOtherEntry","someOtherFeed");
- wrapper = new StorageEntryWrapper(e,StorageOperation.INSERT);
- this.buffer.addEntry(wrapper);
- this.buffer.addEntry(wrapper);
- assertEquals(2,this.buffer.getExculdList().length);
-
-
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.storage.lucenestorage.StorageBuffer.close()'
- */
- public void testClose() throws IOException {
- ServerBaseEntry e = createServerBaseEntry(ENTRYID,FEEDID);
- StorageEntryWrapper wrapper = new StorageEntryWrapper(e,StorageOperation.INSERT);
-
- this.buffer.addEntry(wrapper);
- assertNotNull(this.buffer.getSortedEntries(FEEDID));
- assertNotNull(this.buffer.getEntry(ENTRYID,FEEDID));
- assertEquals(1,this.buffer.getExculdList().length);
- this.buffer.close();
- assertNull(this.buffer.getSortedEntries(FEEDID));
- assertNull(this.buffer.getEntry(ENTRYID,FEEDID));
- assertEquals(0,this.buffer.getExculdList().length);
-
-
-
- }
- public ServerBaseEntry createServerBaseEntry(String entryID, String feedId) throws IOException{
- ServerBaseEntry e = new ServerBaseEntry();
- e.setId(entryID);
- e.setFeedId(feedId);
- e.setServiceConfig(new ProvidedServiceStub());
- return e;
- }
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/TestStorageImplementation.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/TestStorageImplementation.java
deleted file mode 100755
index 8f76d7e9652..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/TestStorageImplementation.java
+++ /dev/null
@@ -1,458 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.storage.lucenestorage;
-
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.server.registry.ComponentType;
-import org.apache.lucene.gdata.server.registry.GDataServerRegistry;
-import org.apache.lucene.gdata.server.registry.ProvidedService;
-import org.apache.lucene.gdata.storage.ModificationConflictException;
-import org.apache.lucene.gdata.storage.Storage;
-import org.apache.lucene.gdata.storage.StorageController;
-import org.apache.lucene.gdata.storage.StorageException;
-import org.apache.lucene.gdata.storage.lucenestorage.StorageEntryWrapper.StorageOperation;
-import org.apache.lucene.gdata.utils.MultiThreadEntryStub;
-import org.apache.lucene.gdata.utils.ProvidedServiceStub;
-import org.apache.lucene.gdata.utils.Visitor;
-
-import com.google.gdata.data.DateTime;
-
-public class TestStorageImplementation extends TestCase {
- private static GDataServerRegistry reg = null;
-
- private Storage storage;
-
- public static boolean fail = false;
-
- protected void setUp() throws Exception {
-
- if (reg == null) {
- reg = GDataServerRegistry.getRegistry();
- if(reg.lookup(StorageController.class,ComponentType.STORAGECONTROLLER)!= null);
- reg.destroy();
- reg.registerComponent(StorageCoreControllerStub.class,null);
-
- }
- this.storage = reg.lookup(StorageController.class,
- ComponentType.STORAGECONTROLLER).getStorage();
- }
-
- protected void tearDown() throws Exception {
- this.storage.close();
- fail = false;
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.storage.lucenestorage.StorageImplementation.storeEntry(ServerBaseEntry)'
- */
- public void testStoreEntry() {
-
- try {
- this.storage.storeEntry(null);
- fail("entry is null");
- } catch (StorageException e) {
- //
- }
- ServerBaseEntry entry = new ServerBaseEntry();
- entry.setServiceConfig(new ProvidedServiceStub());
-
- try {
- this.storage.storeEntry(entry);
- fail("feed is null");
- } catch (StorageException e) {
- //
- }
-
- entry.setFeedId("someID");
- try {
- this.storage.storeEntry(entry);
-
- } catch (StorageException e1) {
- fail("unexpected exception");
-
- }
- entry.setServiceConfig(null);
- try {
- this.storage.storeEntry(entry);
- fail("no service config");
- } catch (StorageException e) {
-
- }
- entry.setVersion(5);
- try {
- this.storage.storeEntry(entry);
- fail("version is greater than 1");
- } catch (StorageException e) {
-
- }
-
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.storage.lucenestorage.StorageImplementation.deleteEntry(ServerBaseEntry)'
- */
- public void testDeleteEntry() throws InterruptedException {
- try {
- this.storage.storeEntry(null);
- fail("entry is null");
- } catch (StorageException e) {
- //
- }
- ServerBaseEntry entry = new ServerBaseEntry();
- entry.setServiceConfig(new ProvidedServiceStub());
- entry.setId("someID");
- entry.setFeedId("someID");
- try {
- this.storage.storeEntry(entry);
-
- } catch (StorageException e) {
- fail("unexpected exception");
- //
- }
- entry.setFeedId(null);
- try {
- this.storage.deleteEntry(entry);
- fail("feed is null");
- } catch (StorageException e) {
- //
- }
-
- entry.setFeedId("someID");
- try {
- this.storage.deleteEntry(entry);
-
- } catch (StorageException e1) {
- e1.printStackTrace();
- fail("unexpected exception");
-
- }
- entry.setFeedId("someID");
-
- try {
- this.storage.deleteEntry(entry);
-
- } catch (StorageException e1) {
- e1.printStackTrace();
- fail("unexpected exception");
-
- }
-
-
-
- Object monitor = new Object();
- AtomicBoolean reached = new AtomicBoolean(false);
-
- MultiThreadEntryStub concuEntry = new MultiThreadEntryStub();
- concuEntry.setId(System.currentTimeMillis() + "");
- ProvidedService conf = new ProvidedServiceStub();
-
- concuEntry.setServiceConfig(conf);
- concuEntry.setUpdated(DateTime.now());
- concuEntry.setFeedId("feed");
- this.storage.storeEntry(concuEntry);
- storage.close();
- concuEntry.acceptGetVersionVisitor(getMonitorVisitor(monitor,reached));
-
-
- Thread t1 = getDelThread(storage, concuEntry, false);
-
- Thread t2 = getDelThread(storage, concuEntry, true);
- t1.start();
- /*
- * Wait active -- not nice but works fine here
- * wait until thread parked
- */
-
- while (true) {
- synchronized (monitor) {
- if (reached.get())
- break;
- monitor.wait(10);
- }
- }
- t2.start();
- t2.join(800);
- /*
- * Wait active -- not nice but works fine here
- * wake up the waiting thread
- */
- while (true) {
- synchronized (monitor) {
- if (!reached.get())
- break;
- monitor.notifyAll();
- }
- }
- t1.join(300);
- if (fail)
- fail("thread failed -- see stacktrace");
-
-
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.storage.lucenestorage.StorageImplementation.updateEntry(ServerBaseEntry)'
- */
- public void testUpdateEntry() throws InterruptedException {
- Object monitor = new Object();
- AtomicBoolean reached = new AtomicBoolean(false);
-
- MultiThreadEntryStub concuEntry = new MultiThreadEntryStub();
- concuEntry.setId(System.currentTimeMillis() + "");
- ProvidedService conf = new ProvidedServiceStub();
-
- concuEntry.setServiceConfig(conf);
- concuEntry.setUpdated(DateTime.now());
- concuEntry.setFeedId("feed");
- this.storage.storeEntry(concuEntry);
- storage.close();
- concuEntry.acceptGetEntryVisitor(getMonitorVisitor(monitor,reached));
-
-
- Thread t1 = getUpdThread(storage, concuEntry, false);
-
- Thread t2 = getUpdThread(storage, concuEntry, true);
- t1.start();
- /*
- * Wait active -- not nice but works fine here
- * wait until thread parked
- */
-
- while (true) {
- synchronized (monitor) {
- if (reached.get())
- break;
- monitor.wait(10);
- }
- }
- t2.start();
- t2.join(800);
- /*
- * Wait active -- not nice but works fine here
- * wake up the waiting thread
- */
- while (true) {
- synchronized (monitor) {
- if (!reached.get())
- break;
- monitor.notifyAll();
- }
- }
- t1.join(300);
- if (fail)
- fail("thread failed -- see stacktrace");
-
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.storage.lucenestorage.StorageImplementation.getFeed(ServerBaseFeed)'
- */
- public void testGetFeed() {
-
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.storage.lucenestorage.StorageImplementation.getEntry(ServerBaseEntry)'
- */
- public void testGetEntry() {
-
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.storage.lucenestorage.StorageImplementation.close()'
- */
- public void testClose() {
-
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.storage.lucenestorage.StorageImplementation.storeAccount(GDataAccount)'
- */
- public void testStoreAccount() {
-
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.storage.lucenestorage.StorageImplementation.updateAccount(GDataAccount)'
- */
- public void testUpdateAccount() {
-
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.storage.lucenestorage.StorageImplementation.deleteAccount(String)'
- */
- public void testDeleteAccount() {
-
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.storage.lucenestorage.StorageImplementation.storeFeed(ServerBaseFeed,
- * String)'
- */
- public void testStoreFeed() {
-
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.storage.lucenestorage.StorageImplementation.deleteFeed(String)'
- */
- public void testDeleteFeed() {
-
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.storage.lucenestorage.StorageImplementation.updateFeed(ServerBaseFeed,
- * String)'
- */
- public void testUpdateFeed() {
-
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.storage.lucenestorage.StorageImplementation.getServiceForFeed(String)'
- */
- public void testGetServiceForFeed() {
-
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.storage.lucenestorage.StorageImplementation.getAccount(String)'
- */
- public void testGetAccount() {
-
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.storage.lucenestorage.StorageImplementation.getAccountNameForFeedId(String)'
- */
- public void testGetAccountNameForFeedId() {
-
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.storage.lucenestorage.StorageImplementation.getEntryLastModified(String,
- * String)'
- */
- public void testGetEntryLastModified() {
-
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.gdata.storage.lucenestorage.StorageImplementation.getFeedLastModified(String)'
- */
- public void testGetFeedLastModified() {
-
- }
- static class Runner implements Runnable {
- Storage s;
-
- StorageController c;
-
- ServerBaseEntry e;
-
- boolean expConf;
-
- StorageOperation op;
-
- public Runner(Storage s, ServerBaseEntry e,
- boolean expectConflict, StorageOperation op) {
- this.s = s;
- this.e = e;
- this.expConf = expectConflict;
- this.op = op;
- }
-
- public void run() {
-
- try {
- if (this.op == StorageOperation.DELETE)
- this.s.deleteEntry(e);
- if (this.op == StorageOperation.UPDATE)
- this.s.updateEntry(e);
- if (expConf)
- fail = true;
- } catch (ModificationConflictException ex) {
- if (!expConf)
- fail = true;
- ex.printStackTrace();
-
- } catch (StorageException ex) {
- ex.printStackTrace();
- fail = true;
- }
-
- }
- }
-
- private Visitor getMonitorVisitor(final Object monitor, final AtomicBoolean reached){
- /*
- * The executing thread stops at a defined position while holding the semaphore inside the storageImpl
- */
- return new Visitor(){
- public void execute(Object[] o){
- synchronized (monitor) {
- try {
- reached.set(true);
- monitor.wait();
- reached.set(false);
-
- } catch (InterruptedException e) {
- //
- }
- }
- }
- };
- }
-
- private Thread getDelThread(Storage s, ServerBaseEntry e,
- boolean conflictExpected) {
- Thread t1 = new Thread(new Runner(s, e, conflictExpected,
- StorageOperation.DELETE));
- t1.setPriority(Thread.MAX_PRIORITY);
- return t1;
- }
-
- private Thread getUpdThread(Storage s, ServerBaseEntry e,
- boolean conflictExpected) {
- Thread t1 = new Thread(new Runner(s, e, conflictExpected,
- StorageOperation.UPDATE));
- t1.setPriority(Thread.MAX_PRIORITY);
- return t1;
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/TestStorageModifier.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/TestStorageModifier.java
deleted file mode 100644
index 91da27c93d3..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/TestStorageModifier.java
+++ /dev/null
@@ -1,419 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.storage.lucenestorage;
-
-import java.io.IOException;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.gdata.data.GDataAccount;
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.data.ServerBaseFeed;
-import org.apache.lucene.gdata.server.registry.ProvidedService;
-import org.apache.lucene.gdata.storage.StorageException;
-import org.apache.lucene.gdata.storage.lucenestorage.StorageEntryWrapper.StorageOperation;
-import org.apache.lucene.gdata.utils.ProvidedServiceStub;
-import org.apache.lucene.gdata.utils.ReferenceCounter;
-import org.apache.lucene.index.Term;
-import org.apache.lucene.search.BooleanClause;
-import org.apache.lucene.search.BooleanQuery;
-import org.apache.lucene.search.Hits;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.TermQuery;
-import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.RAMDirectory;
-
-import com.google.gdata.data.BaseEntry;
-import com.google.gdata.data.DateTime;
-import com.google.gdata.data.Entry;
-import com.google.gdata.data.PlainTextConstruct;
-import com.google.gdata.data.TextContent;
-import com.google.gdata.util.ParseException;
-
-public class TestStorageModifier extends TestCase {
- private StorageModifier modifier;
-
- private int count = 1;
-
- private ProvidedService configurator;
-
- private Directory dir;
-
- private StorageCoreController controller;
-
- private static String feedId = "myFeed";
-
- private static String username = "simon";
-
- private static String password = "test";
- private static String service = "myService";
-
- protected void setUp() throws Exception {
- this.controller = new StorageCoreController();
- this.dir = new RAMDirectory();
- this.controller.setStorageDir(this.dir);
- this.controller.setKeepRecoveredFiles(false);
- this.controller.setOptimizeInterval(10);
- this.controller.setRecover(false);
- this.controller.setBufferSize(10);
- this.controller.setPersistFactor(10);
- this.controller.initialize();
- this.configurator = new ProvidedServiceStub();
- this.modifier = this.controller.getStorageModifier();
- this.dir = this.controller.getDirectory();
-
- }
-
- protected void tearDown() throws Exception {
- this.count = 1;
- // destroy all resources
- this.controller.destroy();
-
-
-
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.storage.lucenestorage.StorageModifier.updateEntry(StroageEntryWrapper)'
- */
- public void testUpdateEntry() throws IOException, InterruptedException,
- ParseException, StorageException {
- testInsertEntry();
- for (int i = 1; i < this.count; i++) {
- Entry e = new Entry();
- e.setId("" + i);
- String insertString = "Hello world" + i;
- e.setTitle(new PlainTextConstruct(insertString));
- ServerBaseEntry en = getServerEntry(e);
- StorageEntryWrapper wrapper = new StorageEntryWrapper(en,
- StorageOperation.UPDATE);
- this.modifier.updateEntry(wrapper);
- ReferenceCounter innerQuery = this.controller
- .getStorageQuery();
- BaseEntry fetchedEntry = innerQuery.get().singleEntryQuery("" + i,
- feedId, this.configurator);
- assertEquals("updated Title:", insertString, fetchedEntry
- .getTitle().getPlainText());
- }
- // double updates
- for (int i = 1; i < this.count; i++) {
- Entry e = new Entry();
- e.setId("" + i);
- String insertString = "Hello world" + i;
- e.setTitle(new PlainTextConstruct(insertString));
- ServerBaseEntry en = getServerEntry(e);
- StorageEntryWrapper wrapper = new StorageEntryWrapper(en,
- StorageOperation.UPDATE);
- this.modifier.updateEntry(wrapper);
-
- e = new Entry();
- e.setId("" + i);
- insertString = "Foo Bar" + i;
- e.setTitle(new PlainTextConstruct(insertString));
- en = getServerEntry(e);
- wrapper = new StorageEntryWrapper(en,
- StorageOperation.UPDATE);
- this.modifier.updateEntry(wrapper);
-
- ReferenceCounter innerQuery = this.controller
- .getStorageQuery();
-
- BaseEntry fetchedEntry = innerQuery.get().singleEntryQuery("" + i,
- feedId, this.configurator);
- assertEquals("updated Title:", insertString, fetchedEntry
- .getTitle().getPlainText());
- }
-
-
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.storage.lucenestorage.StorageModifier.insertEntry(StroageEntryWrapper)'
- */
- public void testInsertEntry() throws IOException, InterruptedException,
- ParseException, StorageException {
-
- Thread a = getRunnerThread(this.count);
-
-
- Thread b = getRunnerThread((this.count += 10));
- b.start();
- a.start();
-// wait for the first thread to check for the inserted entries
- a.join();
- try{
- for (int i = 1; i < this.count; i++) {
-
- ReferenceCounter innerQuery = this.controller
- .getStorageQuery();
- BaseEntry e = innerQuery.get().singleEntryQuery("" + i, feedId,
- this.configurator);
- assertNotNull(e);
- assertEquals("get entry for id" + i, "" + i, e.getId());
-
- }
- }finally{
- /*
- * if an exception occures the tread can at least finnish running before the
- * controller will be closed in the tearDown method
- */
- b.join();
- }
-
-
- ReferenceCounter query = this.controller
- .getStorageQuery();
-
- this.count += 10;
- for (int i = 1; i < this.count; i++) {
- BaseEntry e = query.get().singleEntryQuery("" + i, feedId,
- this.configurator);
- assertEquals("get entry for id" + i, "" + i, e.getId());
- }
-
- BaseEntry e = query.get().singleEntryQuery("" + this.count, feedId,
- this.configurator);
- assertNull("not entry for ID", e);
- query.decrementRef();
-
- }
-
- /*
- * Test method for
- * 'org.apache.lucene.storage.lucenestorage.StorageModifier.deleteEntry(String)'
- */
- public void testDeleteEntry() throws IOException, InterruptedException,
- ParseException, StorageException {
- testInsertEntry();
- for (int i = 1; i < this.count; i++) {
- if (i % 2 == 0 || i < 10) {
- ServerBaseEntry entry = new ServerBaseEntry();
- entry.setId("" + i);
- entry.setFeedId(feedId);
- this.modifier.deleteEntry(new StorageEntryWrapper(entry,StorageOperation.DELETE));
- }
- ReferenceCounter query = this.controller
- .getStorageQuery();
- if (i % 2 == 0 || i < 10) {
- assertNull(query.get().singleEntryQuery("" + i, feedId,
- this.configurator));
- } else
- assertEquals("" + i, query.get().singleEntryQuery("" + i,
- feedId, this.configurator).getId());
- query.decrementRef();
- }
-
- this.controller.forceWrite();
- IndexSearcher searcher = new IndexSearcher(this.dir);
-
- for (int i = 1; i < this.count; i++) {
- Query luceneQuery = new TermQuery(new Term(
- StorageEntryWrapper.FIELD_ENTRY_ID, "" + i));
- Hits hits = searcher.search(luceneQuery);
- if (i % 2 == 0 || i < 10) {
-
- assertEquals(0, hits.length());
- } else
- assertEquals(1, hits.length());
- }
- searcher.close();
-
- }
-
- public void testSaveUser() throws StorageException, IOException {
-
- GDataAccount user = new GDataAccount();
- user.setName(username);
- user.setPassword(password);
- StorageAccountWrapper wrapper = new StorageAccountWrapper(user);
- this.modifier.createAccount(wrapper);
- IndexSearcher searcher = new IndexSearcher(this.dir);
- Query q = new TermQuery(new Term(StorageAccountWrapper.FIELD_ACCOUNTNAME,
- username));
- Hits h = searcher.search(q);
- assertEquals("length == 1", 1, h.length());
- GDataAccount storedUser = StorageAccountWrapper.buildEntity(h.doc(0));
- assertTrue(storedUser.equals(user));
- searcher.close();
- }
-
- public void testDeleteUser() throws StorageException, IOException {
- testSaveUser();
- this.modifier.deleteAccount(username);
- IndexSearcher searcher = new IndexSearcher(this.dir);
- Query q = new TermQuery(new Term(StorageAccountWrapper.FIELD_ACCOUNTNAME,
- username));
- Hits h = searcher.search(q);
- assertEquals("length == 0", 0, h.length());
- searcher.close();
- }
-
- public void testUpdateUser() throws StorageException, IOException {
- testSaveUser();
- GDataAccount user = new GDataAccount();
- user.setName(username);
- user.setPassword("newPass");
- StorageAccountWrapper wrapper = new StorageAccountWrapper(user);
- this.modifier.updateAccount(wrapper);
- IndexSearcher searcher = new IndexSearcher(this.dir);
- Query q = new TermQuery(new Term(StorageAccountWrapper.FIELD_ACCOUNTNAME,
- username));
- Hits h = searcher.search(q);
- assertEquals("length == 1", 1, h.length());
- GDataAccount storedUser = StorageAccountWrapper.buildEntity(h.doc(0));
- assertTrue(storedUser.equals(user));
-
- assertFalse(storedUser.getPassword().equals(password));
- searcher.close();
- }
-
- public void testSaveFeed() throws IOException, StorageException {
- String title = "myTitle";
- ServerBaseFeed feed = new ServerBaseFeed();
- feed.setId(feedId);
- feed.setTitle(new PlainTextConstruct(title));
- feed.setServiceType(service);
- feed.setServiceConfig(this.configurator);
- StorageFeedWrapper wrapper = new StorageFeedWrapper(feed,username);
- this.modifier.createFeed(wrapper);
-
- IndexSearcher searcher = new IndexSearcher(this.dir);
- Query q = new TermQuery(new Term(StorageFeedWrapper.FIELD_FEED_ID,
- feedId));
- Hits h = searcher.search(q);
- assertEquals("length == 1", 1, h.length());
- searcher.close();
-
- }
-
- public void testDeleteFeed() throws IOException, StorageException {
- testSaveFeed();
- Entry e = new Entry();
- e.setTitle(new PlainTextConstruct("hello world"));
- ServerBaseEntry entry = new ServerBaseEntry(e);
- entry.setFeedId(feedId);
- entry.setId("testme");
- entry.setServiceConfig(this.configurator);
- StorageEntryWrapper entryWrapper = new StorageEntryWrapper(entry,StorageOperation.INSERT);
- this.modifier.insertEntry(entryWrapper);
- this.modifier.forceWrite();
- this.modifier.deleteFeed(feedId);
- IndexSearcher searcher = new IndexSearcher(this.dir);
- Query q = new TermQuery(new Term(StorageFeedWrapper.FIELD_FEED_ID,
- feedId));
- Query q1 = new TermQuery(new Term(StorageEntryWrapper.FIELD_FEED_REFERENCE,
- feedId));
- BooleanQuery boolQuery = new BooleanQuery();
- boolQuery.add(q,BooleanClause.Occur.SHOULD);
- boolQuery.add(q1,BooleanClause.Occur.SHOULD);
- Hits h = searcher.search(boolQuery);
- assertEquals("length == 0", 0, h.length());
- searcher.close();
-
-
-
- }
-
- /**
- * @throws IOException
- * @throws StorageException
- */
- public void testUpdateFeed() throws IOException, StorageException {
- testSaveFeed();
- ServerBaseFeed feed = new ServerBaseFeed();
- String title = "myTitle";
- String newusername = "doug";
- feed.setTitle(new PlainTextConstruct(title));
- feed.setId(feedId);
- feed.setServiceType(service);
- feed.setServiceConfig(this.configurator);
- StorageFeedWrapper wrapper = new StorageFeedWrapper(feed,newusername);
- this.modifier.updateFeed(wrapper);
- IndexSearcher searcher = new IndexSearcher(this.dir);
- Query q = new TermQuery(new Term(StorageFeedWrapper.FIELD_FEED_ID,
- feedId));
- Hits h = searcher.search(q);
- assertEquals("length == 1", 1, h.length());
- assertTrue(h.doc(0).get(StorageFeedWrapper.FIELD_ACCOUNTREFERENCE).equals(newusername));
- searcher.close();
-
- }
-
- private Thread getRunnerThread(int idIndex) {
- Thread t = new Thread(new Runner(idIndex));
- return t;
- }
-
- private class Runner implements Runnable {
- private int idIndex;
-
- public Runner(int idIndex) {
- this.idIndex = idIndex;
- }
-
- public void run() {
- for (int i = idIndex; i < idIndex + 10; i++) {
-
- BaseEntry e = buildEntry("" + i);
- try {
- ServerBaseEntry en = new ServerBaseEntry(e);
- en.setFeedId(feedId);
- en.setServiceConfig(configurator);
- StorageEntryWrapper wrapper = new StorageEntryWrapper(en,
- StorageOperation.INSERT);
- modifier.insertEntry(wrapper);
-// System.out.println("insert: "+i+" Thread: "+Thread.currentThread().getName());
- } catch (Exception e1) {
-
- e1.printStackTrace();
- }
-
- }
-
- }// end run
-
- private BaseEntry buildEntry(String id) {
- Entry e = new Entry();
- e.setId(id);
- e.setTitle(new PlainTextConstruct("Monty Python"));
-
- e.setPublished(DateTime.now());
-
- e.setUpdated(DateTime.now());
- String content = "1st soldier with a keen interest in birds: Who goes there?"
- + "King Arthur: It is I, Arthur, son of Uther Pendragon, from the castle of Camelot. King of the Britons, defeater of the Saxons, Sovereign of all England!"
- + "1st soldier with a keen interest in birds: Pull the other one!"
- + "King Arthur: I am, and this is my trusty servant Patsy. We have ridden the length and breadth of the land in search of knights who will join me in my court at Camelot. I must speak with your lord and master."
- + "1st soldier with a keen interest in birds: What? Ridden on a horse?"
- + "King Arthur: Yes!";
- e.setContent(new TextContent(new PlainTextConstruct(content)));
- e.setSummary(new PlainTextConstruct("The Holy Grail"));
- return e;
- }
-
- }
-
- private ServerBaseEntry getServerEntry(BaseEntry e){
- ServerBaseEntry en = new ServerBaseEntry(e);
- en.setFeedId(feedId);
- en.setServiceConfig(this.configurator);
- return en;
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/TestStorageQuery.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/TestStorageQuery.java
deleted file mode 100644
index 32fae22d19b..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/TestStorageQuery.java
+++ /dev/null
@@ -1,319 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.storage.lucenestorage;
-
-import java.io.IOException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.gdata.data.GDataAccount;
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.data.ServerBaseFeed;
-import org.apache.lucene.gdata.server.registry.ProvidedService;
-import org.apache.lucene.gdata.storage.StorageException;
-import org.apache.lucene.gdata.storage.lucenestorage.StorageEntryWrapper.StorageOperation;
-import org.apache.lucene.gdata.utils.ProvidedServiceStub;
-import org.apache.lucene.gdata.utils.ReferenceCounter;
-import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.RAMDirectory;
-
-import com.google.gdata.data.BaseEntry;
-import com.google.gdata.data.BaseFeed;
-import com.google.gdata.data.DateTime;
-import com.google.gdata.data.Entry;
-import com.google.gdata.util.ParseException;
-
-public class TestStorageQuery extends TestCase {
- private StorageModifier modifier;
- private int count = 30;
- private ReferenceCounter query;
- private ProvidedService configurator;
- private StorageCoreController controller;
- private Directory dir;
- private static String feedId = "myFeed";
- private static String accountName = "simon";
- private static String service = ProvidedServiceStub.SERVICE_NAME;
- protected void setUp() throws Exception {
- this.configurator = new ProvidedServiceStub();
- this.controller = new StorageCoreController();
- this.dir = new RAMDirectory();
- this.controller.setStorageDir(this.dir);
- this.controller.setKeepRecoveredFiles(false);
- this.controller.setOptimizeInterval(10);
- this.controller.setRecover(false);
- this.controller.setBufferSize(10);
- this.controller.setPersistFactor(10);
- this.controller.initialize();
- this.configurator = new ProvidedServiceStub();
- this.modifier = this.controller.getStorageModifier();
- this.dir = this.controller.getDirectory();
- ServerBaseFeed feed = new ServerBaseFeed();
- feed.setId(feedId);
- feed.setServiceType(service);
- feed.setServiceConfig(this.configurator);
-
- StorageFeedWrapper wrapper = new StorageFeedWrapper(feed,accountName);
- this.modifier.createFeed(wrapper);
- insertEntries(this.count);
- this.query = this.controller.getStorageQuery();
-
- }
-
- /**
- * @param entrycount
- * @throws IOException
- * @throws InterruptedException
- * @throws StorageException
- */
- public void insertEntries(int entrycount) throws IOException,InterruptedException, StorageException{
- List tempList = new ArrayList();
- for (int i = 0; i <= entrycount ; i++) {
- ServerBaseEntry entry = new ServerBaseEntry(new Entry());
- entry.setId(""+i);
- entry.setServiceConfig(this.configurator);
- entry.setUpdated(new DateTime(System.currentTimeMillis(),0));
- entry.setFeedId(feedId);
- StorageEntryWrapper wrapper = new StorageEntryWrapper(entry,StorageOperation.INSERT);
- tempList.add(i,wrapper);
-
- // force different timestamps --> DateTime 2006-06-05T13:37:55.724Z
- Thread.sleep(10);
-
- }
- for (StorageEntryWrapper entry : tempList) {
- this.modifier.insertEntry(entry);
- }
-
-
-
-
- }
-
- protected void tearDown() throws Exception {
- this.query.decrementRef();
- this.controller.destroy();
- }
-
- /*
- *
- */
- public void testAccountNameQuery() throws IOException, StorageException{
- ReferenceCounter query = this.controller.getStorageQuery();
- assertEquals(accountName,query.get().getAccountNameForFeedId(feedId));
- assertNull(query.get().getAccountNameForFeedId("someId"));
- }
-
- /*
- * Test method for 'org.apache.lucene.storage.lucenestorage.StorageQuery.feedQuery(String, int, int)'
- */
- public void testFeedQuery() throws IOException, ParseException, StorageException {
- feedQueryHelper(this.query);
- this.controller.forceWrite();
- ReferenceCounter queryAssureWritten = this.controller.getStorageQuery();
-
- assertNotSame(queryAssureWritten,this.query);
- feedQueryHelper(queryAssureWritten);
- queryAssureWritten.decrementRef();
- }
- private void feedQueryHelper(ReferenceCounter currentQuery) throws IOException, ParseException{
- BaseFeed feed = currentQuery.get().getLatestFeedQuery(feedId,25,1,this.configurator);
- List entryList = feed.getEntries();
- assertTrue("listSize: "+entryList.size(),entryList.size() == 25);
-
- BaseEntry tempEntry = null;
- for (BaseEntry entry : entryList) {
-
- assertNotNull("entry",entry);
- if(tempEntry != null){
- assertTrue(tempEntry.getUpdated().compareTo(entry.getUpdated())>=0) ;
- tempEntry = entry;
- }else
- tempEntry = entry;
-
- }
- // test sub retrieve sublist
- int offset = 15;
- int resultCount = 5;
- feed = currentQuery.get().getLatestFeedQuery(feedId,resultCount,offset,this.configurator);
- List entrySubList = feed.getEntries();
-
- assertTrue("listSize: "+entrySubList.size(),entrySubList.size() == resultCount);
- offset--;
- for (BaseEntry entry : entrySubList) {
-
- assertEquals(entry.getId(),entryList.get(offset).getId());
- offset++;
-
- }
-
-
-
- }
-
- /*
- * Test method for 'org.apache.lucene.storage.lucenestorage.StorageQuery.singleEntryQuery(String, String)'
- */
- public void testSingleEntryQuery() throws ParseException, IOException {
- for (int i = 1; i <= this.count; i++) {
- BaseEntry entry = this.query.get().singleEntryQuery(""+i,feedId,this.configurator);
- assertEquals(""+i,entry.getId());
- }
-
- }
-
- /*
- * Test method for 'org.apache.lucene.storage.lucenestorage.StorageQuery.entryQuery(List, String)'
- */
- public void testEntryQuery() throws ParseException, IOException, StorageException {
- entryQueryHelper(this.query);
- this.controller.forceWrite();
- ReferenceCounter queryAssureWritten = this.controller.getStorageQuery();
-
- assertNotSame(queryAssureWritten,query);
- entryQueryHelper(queryAssureWritten);
- queryAssureWritten.decrementRef();
- }
- public void testGetUser() throws StorageException, IOException{
- this.modifier.forceWrite();
- GDataAccount user = new GDataAccount();
- user.setName("simon");
- user.setPassword("pass");
- user.setAuthorname("simon willnauer");
- user.setAuthorMail("simon@apache.org");
- user.setAuthorLink(new URL("http://www.apache.org"));
-
-
-
- this.modifier.createAccount(new StorageAccountWrapper(user));
- GDataAccount queriedUser = this.query.get().getUser("simon");
- assertNull(queriedUser);
- ReferenceCounter tempQuery = this.controller.getStorageQuery();
- queriedUser = tempQuery.get().getUser("simon");
- assertTrue(queriedUser.equals(user));
- assertTrue(queriedUser.getAuthorMail().equals(user.getAuthorMail()));
- assertTrue(queriedUser.getAuthorLink().equals(user.getAuthorLink()));
- assertTrue(queriedUser.getAuthorname().equals(user.getAuthorname()));
- assertTrue(queriedUser.getPassword().equals(user.getPassword()));
- }
-
- public void testIsEntryStored() throws IOException{
-
- assertTrue(this.query.get().isEntryStored(""+(this.count-1),feedId));
- assertFalse(this.query.get().isEntryStored("someOther",feedId));
- this.modifier.forceWrite();
- assertTrue(this.query.get().isEntryStored(""+(this.count-1),feedId));
- this.query = this.controller.getStorageQuery();
- assertTrue(this.query.get().isEntryStored(""+(this.count-1),feedId));
- assertFalse(this.query.get().isEntryStored("someOther",feedId));
- }
-
- public void testGetEntryLastModied() throws IOException, StorageException{
- ServerBaseEntry entry = new ServerBaseEntry(new Entry());
- entry.setId("test");
- entry.setServiceConfig(this.configurator);
- entry.setUpdated(new DateTime(System.currentTimeMillis(),0));
- entry.setFeedId(feedId);
- StorageEntryWrapper wrapper = new StorageEntryWrapper(entry,StorageOperation.INSERT);
-
- this.modifier.insertEntry(wrapper);
- assertEquals(entry.getUpdated().getValue(),this.query.get().getEntryLastModified("test",feedId));
- this.modifier.forceWrite();
- assertEquals(entry.getUpdated().getValue(),this.query.get().getEntryLastModified("test",feedId));
- this.query = this.controller.getStorageQuery();
- assertEquals(entry.getUpdated().getValue(),this.query.get().getEntryLastModified("test",feedId));
- try{
- this.query.get().getEntryLastModified("some",feedId);
- fail("exception expected");
- }catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public void testGetFeedLastModified() throws StorageException, IOException{
- ServerBaseEntry entry = new ServerBaseEntry(new Entry());
- entry.setId("test");
- entry.setServiceConfig(this.configurator);
- entry.setUpdated(new DateTime(System.currentTimeMillis(),0));
- entry.setFeedId(feedId);
- StorageEntryWrapper wrapper = new StorageEntryWrapper(entry,StorageOperation.INSERT);
- this.modifier.insertEntry(wrapper);
- assertEquals(entry.getUpdated().getValue(),this.query.get().getFeedLastModified(feedId));
- this.modifier.forceWrite();
- assertEquals(entry.getUpdated().getValue(),this.query.get().getFeedLastModified(feedId));
- this.query = this.controller.getStorageQuery();
- assertEquals(entry.getUpdated().getValue(),this.query.get().getFeedLastModified(feedId));
- }
-
- public void testCheckVersionId() throws IOException, StorageException{
- this.modifier.forceWrite();
- ReferenceCounter sQuery = this.controller.getStorageQuery();
- ServerBaseEntry entry = new ServerBaseEntry(new Entry());
- entry.setId("test");
- entry.setServiceConfig(this.configurator);
- entry.setUpdated(new DateTime(System.currentTimeMillis(),0));
- entry.setFeedId(feedId);
- entry.setVersion(5);
- StorageEntryWrapper wrapper = new StorageEntryWrapper(entry,StorageOperation.INSERT);
- this.modifier.insertEntry(wrapper);
- //test in buffer
- assertTrue(sQuery.get().checkEntryVersion(entry.getId(),entry.getFeedId(),entry.getVersion()));
- assertFalse(sQuery.get().checkEntryVersion(entry.getId(),entry.getFeedId(),10000));
- assertFalse(sQuery.get().checkEntryVersion(entry.getId(),"someOtherFeed",entry.getVersion()));
- assertFalse(sQuery.get().checkEntryVersion("foobar",entry.getFeedId(),entry.getVersion()));
-
-
- this.modifier.forceWrite();
- //test in buffer after written
- assertTrue(sQuery.get().checkEntryVersion(entry.getId(),entry.getFeedId(),entry.getVersion()));
- assertFalse(sQuery.get().checkEntryVersion(entry.getId(),entry.getFeedId(),10000));
- assertFalse(sQuery.get().checkEntryVersion(entry.getId(),"someOtherFeed",entry.getVersion()));
- assertFalse(sQuery.get().checkEntryVersion("foobar",entry.getFeedId(),entry.getVersion()));
- sQuery.decrementRef();
- sQuery = this.controller.getStorageQuery();
- //test in index
- assertTrue(sQuery.get().checkEntryVersion(entry.getId(),entry.getFeedId(),entry.getVersion()));
- assertFalse(sQuery.get().checkEntryVersion(entry.getId(),entry.getFeedId(),10000));
- assertFalse(sQuery.get().checkEntryVersion("foobar",entry.getFeedId(),entry.getVersion()));
- sQuery.decrementRef();
-
-
-
-
- }
- private void entryQueryHelper(ReferenceCounter currentQuery) throws IOException, ParseException{
-
- List entryIdList = new ArrayList();
- for (int i = 1; i <= this.count; i++) {
- entryIdList.add(""+i);
- }
- List entryList = currentQuery.get().entryQuery(entryIdList,feedId,this.configurator);
- assertEquals(entryIdList.size(),entryList.size());
- List entryIdCompare = new ArrayList();
- for (BaseEntry entry : entryList) {
- assertEquals("1",entry.getVersionId());
- entryIdCompare.add(entry.getId());
-
- }
- assertTrue(entryIdList.containsAll(entryIdCompare));
-
- }
-
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/recover/TestRecoverController.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/recover/TestRecoverController.java
deleted file mode 100644
index 2c58f75e0e6..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/recover/TestRecoverController.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.storage.lucenestorage.recover;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.server.registry.GDataServerRegistry;
-import org.apache.lucene.gdata.storage.StorageException;
-import org.apache.lucene.gdata.storage.lucenestorage.StorageEntryWrapper;
-import org.apache.lucene.gdata.storage.lucenestorage.StorageModifierStub;
-import org.apache.lucene.gdata.storage.lucenestorage.StorageEntryWrapper.StorageOperation;
-import org.apache.lucene.gdata.utils.ProvidedServiceStub;
-
-import com.google.gdata.data.DateTime;
-
-public class TestRecoverController extends TestCase {
- private RecoverController writeController;
- private RecoverController readController;
- private File recDir;
- private String feedId = "feedid";
- private String entryId = "entryId";
-
- protected void setUp() throws Exception {
- this.recDir = new File("unittest"+System.currentTimeMillis());
- if(!this.recDir.exists())
- this.recDir.mkdir();
- this.recDir.deleteOnExit();
- GDataServerRegistry.getRegistry().registerService(new ProvidedServiceStub());
- this.writeController = new RecoverController(this.recDir,false,true);
- this.readController = new RecoverController(this.recDir,true,true);
-
-
-
-
- }
-
- protected void tearDown() throws Exception {
-
-
-
- File[] files = this.recDir.listFiles();
- for (int i = 0; i < files.length; i++) {
- files[i].delete();
- }
- this.recDir.delete();
- GDataServerRegistry.getRegistry().destroy();
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.storage.lucenestorage.recover.RecoverController.storageModified(StorageEntryWrapper)'
- */
- public void testStorageModified() throws IOException, RecoverException {
- this.writeController.initialize();
- ServerBaseEntry entry = new ServerBaseEntry();
- entry.setFeedId(this.feedId);
- entry.setId(entryId);
- entry.setUpdated(DateTime.now());
- entry.setServiceConfig(new ProvidedServiceStub());
- StorageEntryWrapper wrapper = new StorageEntryWrapper(entry,StorageOperation.INSERT);
- this.writeController.storageModified(wrapper);
- assertEquals(1,this.recDir.listFiles().length);
- this.writeController.destroy();
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.storage.lucenestorage.recover.RecoverController.recoverEntries(StorageModifier)'
- */
- public void testRecoverEntries() throws IOException, StorageException, RecoverException {
- testStorageModified();
-
- int length = this.recDir.listFiles().length;
- assertEquals(1,length);
-
- this.readController.initialize();
- try{
- this.readController.recoverEntries(new StorageModifierStub(null,null,null,0,0));
- }catch (Exception e) {
- fail("unexpected exception"+e.getMessage());
- }
- this.readController.destroy();
- assertEquals(1,this.recDir.listFiles().length);
-
- createCorruptedFile();
- this.readController.initialize();
- try{
- this.readController.recoverEntries(new StorageModifierStub(null,null,null,0,0));
- }catch (Exception e) {
- fail("unexpected exception"+e.getMessage());
- }
- this.readController.destroy();
- assertEquals(2,this.recDir.listFiles().length);
- }
-
-
- private void createCorruptedFile() throws IOException{
- File file = new File(this.recDir,"somefile.rec");
- file.deleteOnExit();
- FileWriter writer = new FileWriter(file);
- writer.write("someString\nSomeOtherString");
- writer.close();
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/recover/TestRecoverWriter.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/recover/TestRecoverWriter.java
deleted file mode 100644
index 58d53ebfb49..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/recover/TestRecoverWriter.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.storage.lucenestorage.recover;
-
-import java.io.IOException;
-import java.io.StringWriter;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.server.registry.ProvidedService;
-import org.apache.lucene.gdata.storage.lucenestorage.StorageEntryWrapper;
-import org.apache.lucene.gdata.storage.lucenestorage.StorageEntryWrapper.StorageOperation;
-import org.apache.lucene.gdata.utils.ProvidedServiceStub;
-
-import com.google.gdata.data.DateTime;
-import com.google.gdata.data.Entry;
-import com.google.gdata.data.PlainTextConstruct;
-
-public class TestRecoverWriter extends TestCase {
- private static final String ENTRYID = "myID";
- private static final String TITLE = "title";
- private static final String FEEDID = "myFeed";
-
- private static final Long TIMESTAMP = 132326657L;
- private DateTime dateTime = new DateTime(TIMESTAMP,0);
- String compareEntry = "I;"+FEEDID+";"+ENTRYID+";"+TIMESTAMP+";" +ProvidedServiceStub.SERVICE_NAME+";"+RecoverWriter.META_DATA_ENTRY_SEPARATOR+
- ""+ENTRYID+""+this.dateTime.toString()+"" + TITLE+
- ""+RecoverWriter.META_DATA_ENTRY_SEPARATOR+RecoverWriter.STORAGE_OPERATION_SEPARATOR+RecoverWriter.META_DATA_ENTRY_SEPARATOR;
- String compareDelete = "D;"+FEEDID+";"+ENTRYID+";"+TIMESTAMP+";"+RecoverWriter.META_DATA_ENTRY_SEPARATOR+RecoverWriter.STORAGE_OPERATION_SEPARATOR+RecoverWriter.META_DATA_ENTRY_SEPARATOR;
- StorageEntryWrapper wrapper;
- StorageEntryWrapper deleteWrapper;
-
- protected void setUp() throws Exception {
- ServerBaseEntry entry = new ServerBaseEntry(new Entry());
- entry.setId(ENTRYID);
-
- entry.setUpdated(new DateTime(TIMESTAMP,0));
- entry.setTitle(new PlainTextConstruct(TITLE));
- ProvidedService config = new ProvidedServiceStub();
- entry.setFeedId(FEEDID);
- entry.setServiceConfig(config);
- this.wrapper = new StorageEntryWrapper(entry,StorageOperation.INSERT);
- this.deleteWrapper = new StorageEntryWrapper(entry,StorageOperation.DELETE);
-
-
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
-
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.storage.lucenestorage.recover.RecoverWriter.writeEntry(StorageEntryWrapper, Writer)'
- */
- public void testWriteEntry() throws IOException {
- RecoverWriter wr = new RecoverWriter();
- StringWriter writer = new StringWriter();
- wr.writeEntry(this.wrapper,writer);
- assertEquals(compareEntry,writer.toString());
- writer.close();
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.storage.lucenestorage.recover.RecoverWriter.writeDelete(String, String, Writer)'
- */
- public void testWriteDelete() throws IOException {
- RecoverWriter wr = new RecoverWriter();
- StringWriter writer = new StringWriter();
- wr.writeEntry(this.deleteWrapper,writer);
- System.out.println(writer.toString());
- assertEquals(compareDelete,writer.toString());
- writer.close();
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/recover/TestRevocerReader.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/recover/TestRevocerReader.java
deleted file mode 100644
index c4a7b1264d8..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/storage/lucenestorage/recover/TestRevocerReader.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.storage.lucenestorage.recover;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.StringReader;
-import java.util.List;
-
-import junit.framework.TestCase;
-
-import org.apache.lucene.gdata.server.registry.GDataServerRegistry;
-import org.apache.lucene.gdata.storage.lucenestorage.StorageEntryWrapper;
-import org.apache.lucene.gdata.storage.lucenestorage.StorageEntryWrapper.StorageOperation;
-import org.apache.lucene.gdata.utils.ProvidedServiceStub;
-
-import com.google.gdata.data.DateTime;
-
-public class TestRevocerReader extends TestCase {
- private RecoverReader recReader;
- private static final String feedId = "myFeed";
- private static final String entryId = "myID";
- private static final Long timestamp = System.currentTimeMillis();
- private String title = "myTitle";
- private static final DateTime dateTime = DateTime.now();
- private String delete = "D;"+feedId+";"+entryId+";"+timestamp+";\n###########\n";
- private String insert = "I;"+feedId+";"+entryId+";"+timestamp+";" +ProvidedServiceStub.SERVICE_NAME+";"+RecoverWriter.META_DATA_ENTRY_SEPARATOR+
- ""+entryId+""+dateTime.toString()+"" + this.title+
- ""+RecoverWriter.META_DATA_ENTRY_SEPARATOR+RecoverWriter.STORAGE_OPERATION_SEPARATOR+RecoverWriter.META_DATA_ENTRY_SEPARATOR;
- protected void setUp() throws Exception {
- this.recReader = new RecoverReader();
- GDataServerRegistry.getRegistry().registerService(new ProvidedServiceStub());
-
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.storage.lucenestorage.recover.RecoverReader.getNonDeleteEntries(Reader)'
- */
- public void testRecoverDeletedEntries() throws IOException {
- StringReader reader = new StringReader(this.delete);
- assertNotNull(this.recReader.recoverEntries(new BufferedReader(reader)));
- reader = new StringReader(this.delete);
- List recList = this.recReader.recoverEntries(new BufferedReader(reader));
- assertEquals(1,recList.size());
- StorageEntryWrapper delWrapper = recList.get(0);
- assertEquals(StorageOperation.DELETE,delWrapper.getOperation());
- assertEquals(feedId,delWrapper.getFeedId());
- assertEquals(entryId,delWrapper.getEntryId());
-
- }
- public void testRecoverInsertedEntries() throws IOException {
-
- StringReader reader = new StringReader(this.insert);
- List recList = this.recReader.recoverEntries(new BufferedReader(reader));
- assertEquals(1,recList.size());
- StorageEntryWrapper insWrapper = recList.get(0);
- assertEquals(StorageOperation.INSERT,insWrapper.getOperation());
- assertEquals(feedId,insWrapper.getFeedId());
- assertEquals(entryId,insWrapper.getEntryId());
- assertEquals(dateTime,insWrapper.getEntry().getUpdated());
- assertEquals(this.title,insWrapper.getEntry().getTitle().getPlainText());
-
-
- }
-
- public void testRecoverReader()throws IOException{
- StringReader reader = new StringReader(this.insert+this.delete);
- List recList = this.recReader.recoverEntries(new BufferedReader(reader));
- assertEquals(2,recList.size());
- assertEquals(StorageOperation.INSERT,recList.get(0).getOperation());
- assertEquals(StorageOperation.DELETE,recList.get(1).getOperation());
-
- reader = new StringReader("some corrupted\n###########\n"+this.insert);
- recList = this.recReader.recoverEntries(new BufferedReader(reader));
- assertEquals(1,recList.size());
- assertEquals(StorageOperation.INSERT,recList.get(0).getOperation());
-
- }
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/utils/AuthenticationContorllerStub.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/utils/AuthenticationContorllerStub.java
deleted file mode 100644
index d0ff01203cc..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/utils/AuthenticationContorllerStub.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.utils;
-
-import org.apache.lucene.gdata.data.GDataAccount;
-import org.apache.lucene.gdata.data.GDataAccount.AccountRole;
-import org.apache.lucene.gdata.server.authentication.AuthenticationController;
-import org.apache.lucene.gdata.server.registry.Component;
-import org.apache.lucene.gdata.server.registry.ComponentType;
-
-/**
- * @author Simon Willnauer
- *
- */
-@Component(componentType=ComponentType.AUTHENTICATIONCONTROLLER)
-public class AuthenticationContorllerStub implements AuthenticationController {
- public static AuthenticationController controller;
- /**
- *
- */
- public AuthenticationContorllerStub() {
- super();
- // TODO Auto-generated constructor stub
- }
-
- /**
- * @see org.apache.lucene.gdata.server.authentication.AuthenticationController#authenticatAccount(org.apache.lucene.gdata.data.GDataAccount, java.lang.String, java.lang.String)
- */
- public String authenticatAccount(GDataAccount account, String requestIp
- ) {
-
- return controller.authenticatAccount(account,requestIp);
- }
-
- /**
- * @see org.apache.lucene.gdata.server.authentication.AuthenticationController#authenticateToken(java.lang.String, java.lang.String, org.apache.lucene.gdata.data.GDataAccount.AccountRole, java.lang.String)
- */
- public boolean authenticateToken(String token, String requestIp,
- AccountRole role, String serviceName) {
-
- return controller.authenticateToken(token,requestIp,role,serviceName);
- }
-
- /**
- * @see org.apache.lucene.gdata.server.registry.ServerComponent#initialize()
- */
- public void initialize() {
- }
-
- /**
- * @see org.apache.lucene.gdata.server.registry.ServerComponent#destroy()
- */
- public void destroy() {
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/utils/MultiThreadEntryStub.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/utils/MultiThreadEntryStub.java
deleted file mode 100755
index 4fb72468ebb..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/utils/MultiThreadEntryStub.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.utils;
-
-
-
-
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-
-import com.google.gdata.data.BaseEntry;
-
-/**
- *
- *
- */
-public class MultiThreadEntryStub extends ServerBaseEntry {
-
-
- private Visitor getEntryVisitor;
- private Visitor getVersionVisitor;
- /**
- *
- */
- public MultiThreadEntryStub() {
-
-
- }
-
- /**
- * @param arg0
- */
- public MultiThreadEntryStub(BaseEntry arg0) {
- super(arg0);
-
- }
-
-
-
- public void acceptGetEntryVisitor(Visitor visitor){
- this.getEntryVisitor = visitor;
- }
- public void acceptGetVersionVisitor(Visitor visitor){
- this.getVersionVisitor = visitor;
- }
- /**
- * @see org.apache.lucene.gdata.data.ServerBaseEntry#getEntry()
- */
- @Override
- public BaseEntry getEntry() {
-
- if(this.getEntryVisitor != null){
- this.getEntryVisitor.execute(null);
-
- }
- return super.getEntry();
- }
-
- /**
- * @see org.apache.lucene.gdata.data.ServerBaseEntry#getVersion()
- */
- @Override
- public int getVersion() {
-
- if(this.getVersionVisitor != null){
- this.getVersionVisitor.execute(null);
-
- }
- return super.getVersion();
- }
-
-
-
-
-
-
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/utils/ProvidedServiceStub.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/utils/ProvidedServiceStub.java
deleted file mode 100644
index 3e5c04296f1..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/utils/ProvidedServiceStub.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.utils;
-
-import javax.xml.transform.Templates;
-
-import org.apache.lucene.gdata.search.config.IndexSchema;
-import org.apache.lucene.gdata.server.registry.ProvidedService;
-
-import com.google.gdata.data.Entry;
-import com.google.gdata.data.ExtensionProfile;
-import com.google.gdata.data.Feed;
-
-public class ProvidedServiceStub implements ProvidedService {
-
- public static final String SERVICE_NAME = "service";
- private IndexSchema indexSchema;
-
- public ProvidedServiceStub() {
- super();
- // TODO Auto-generated constructor stub
- }
-
- public Class getFeedType() {
-
- return Feed.class;
- }
-
- public ExtensionProfile getExtensionProfile() {
-
- return new ExtensionProfile();
- }
-
- public Class getEntryType() {
-
- return Entry.class;
- }
-
- public String getName() {
-
- return SERVICE_NAME;
- }
-
- public void destroy() {
- }
- public void setIndexSchema(IndexSchema schema){
- this.indexSchema = schema;
- this.indexSchema.setName(SERVICE_NAME);
- }
- public IndexSchema getIndexSchema() {
-
- return this.indexSchema;
- }
-
- public Templates getTransformTemplate() {
-
- return null;
- }
-
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/utils/ServiceFactoryStub.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/utils/ServiceFactoryStub.java
deleted file mode 100644
index 0311e9ce430..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/utils/ServiceFactoryStub.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.utils;
-
-import org.apache.lucene.gdata.server.GDataRequest;
-import org.apache.lucene.gdata.server.Service;
-import org.apache.lucene.gdata.server.ServiceFactory;
-import org.apache.lucene.gdata.server.administration.AdminService;
-import org.apache.lucene.gdata.server.registry.Component;
-import org.apache.lucene.gdata.server.registry.ComponentType;
-
-
-
-/**
- * @author Simon Willnauer
- *
- */
-@Component(componentType=ComponentType.SERVICEFACTORY)
-public class ServiceFactoryStub extends ServiceFactory {
-
- public Service service;
- public AdminService adminService;
- /**
- * @see org.apache.lucene.gdata.server.ServiceFactory#getAdminService()
- */
- @Override
- public AdminService getAdminService() {
-
- return adminService;
- }
-
- /**
- * @see org.apache.lucene.gdata.server.ServiceFactory#getService()
- */
- @Override
- public Service getService(GDataRequest request) {
-
- return service;
- }
-
- public void setAdminService(AdminService service) {
- this.adminService = service;
- }
- public void setService(Service service) {
- this.service = service;
- }
-
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/utils/StorageControllerStub.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/utils/StorageControllerStub.java
deleted file mode 100644
index 26670147441..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/utils/StorageControllerStub.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.utils;
-
-import org.apache.lucene.gdata.server.registry.Component;
-import org.apache.lucene.gdata.server.registry.ComponentType;
-import org.apache.lucene.gdata.storage.Storage;
-import org.apache.lucene.gdata.storage.StorageController;
-import org.apache.lucene.gdata.storage.StorageException;
-
-/**
- * @author Simon Willnauer
- *
- */
-@Component(componentType = ComponentType.STORAGECONTROLLER)
-public class StorageControllerStub implements StorageController {
-
- /**
- *
- */
- public StorageControllerStub() {
- super();
- // TODO Auto-generated constructor stub
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.StorageController#destroy()
- */
- public void destroy() {
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.StorageController#getStorage()
- */
- public Storage getStorage() throws StorageException {
-
- return new StorageStub();
- }
-
- /**
- * @see org.apache.lucene.gdata.server.registry.ServerComponent#initialize()
- */
- public void initialize() {
- }
-
- public String releaseId() {
-
- return null;
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/utils/StorageStub.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/utils/StorageStub.java
deleted file mode 100644
index 321d6038cd2..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/utils/StorageStub.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.utils;
-
-import java.util.Date;
-
-import org.apache.lucene.gdata.data.GDataAccount;
-import org.apache.lucene.gdata.data.ServerBaseEntry;
-import org.apache.lucene.gdata.data.ServerBaseFeed;
-import org.apache.lucene.gdata.server.registry.Component;
-import org.apache.lucene.gdata.server.registry.ComponentType;
-import org.apache.lucene.gdata.storage.Storage;
-import org.apache.lucene.gdata.storage.StorageController;
-import org.apache.lucene.gdata.storage.StorageException;
-
-import com.google.gdata.data.BaseEntry;
-import com.google.gdata.data.BaseFeed;
-
-/**
- * @author Simon Willnauer
- *
- */
-@Component(componentType=ComponentType.STORAGECONTROLLER)
-public class StorageStub implements Storage, StorageController {
-public static String SERVICE_TYPE_RETURN = "service";
- /**
- *
- */
- public StorageStub() {
- super();
- // TODO Auto-generated constructor stub
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#storeEntry(org.apache.lucene.gdata.data.ServerBaseEntry)
- */
- public BaseEntry storeEntry(ServerBaseEntry entry)
- throws StorageException {
-
- return null;
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#deleteEntry(org.apache.lucene.gdata.data.ServerBaseEntry)
- */
- public void deleteEntry(ServerBaseEntry entry) throws StorageException {
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#updateEntry(org.apache.lucene.gdata.data.ServerBaseEntry)
- */
- public BaseEntry updateEntry(ServerBaseEntry entry)
- throws StorageException {
-
- return null;
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#getFeed(org.apache.lucene.gdata.data.ServerBaseFeed)
- */
- public BaseFeed getFeed(ServerBaseFeed feed) throws StorageException {
-
- return null;
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#getEntry(org.apache.lucene.gdata.data.ServerBaseEntry)
- */
- public BaseEntry getEntry(ServerBaseEntry entry)
- throws StorageException {
-
- return null;
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#storeAccount(org.apache.lucene.gdata.data.GDataAccount)
- */
- public void storeAccount(GDataAccount Account) throws StorageException {
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#updateAccount(org.apache.lucene.gdata.data.GDataAccount)
- */
- public void updateAccount(GDataAccount Account) throws StorageException {
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#deleteAccount(java.lang.String)
- */
- public void deleteAccount(String Accountname) throws StorageException {
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#storeFeed(org.apache.lucene.gdata.data.ServerBaseFeed, java.lang.String)
- */
- public void storeFeed(ServerBaseFeed feed, String accountname)
- throws StorageException {
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#deleteFeed(java.lang.String)
- */
- public void deleteFeed(String feedId) throws StorageException {
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#updateFeed(org.apache.lucene.gdata.data.ServerBaseFeed, java.lang.String)
- */
- public void updateFeed(ServerBaseFeed feed, String accountname)
- throws StorageException {
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#close()
- */
- public void close() {
- }
-
- /**
- * @see org.apache.lucene.gdata.storage.Storage#getServiceForFeed(java.lang.String)
- */
- public String getServiceForFeed(String feedId) throws StorageException {
-
- return SERVICE_TYPE_RETURN;
- }
-
- public void destroy() {
- }
-
- public Storage getStorage() throws StorageException {
-
- return new StorageStub();
- }
-
- public GDataAccount getAccount(String accountName) throws StorageException {
-
- return null;
- }
-
- public String getAccountNameForFeedId(String feedId) throws StorageException {
-
- return null;
- }
-
- public void initialize() {
- }
-
-
- public Long getFeedLastModified(String feedId) throws StorageException {
-
- return null;
- }
-
- public Long getEntryLastModified(String entryId, String feedId) throws StorageException {
-
- return null;
- }
-
- public String releaseId() {
-
- return null;
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/utils/TestDateFormater.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/utils/TestDateFormater.java
deleted file mode 100644
index 9f006c293ef..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/utils/TestDateFormater.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.utils;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-import junit.framework.TestCase;
-
-public class TestDateFormater extends TestCase {
-
- protected void setUp() throws Exception {
- super.setUp();
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- }
- /*
- * Test method for 'org.apache.lucene.gdata.utils.DateFormater.formatDate(Date, String)'
- */
- public void testFormatDate() throws ParseException {
- // this reg. --> bit weak but does the job
- java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("[A-Z][a-z]{1,2}, [0-9]{1,2} [A-Z][a-z]{2} [0-9]{4} [0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2} [A-Z]{2,4}");
- Date date = new Date();
- String formatedDate = DateFormater.formatDate(date,DateFormater.HTTP_HEADER_DATE_FORMAT);
- assertTrue(formatedDate + " does not match expected pattern",
- pattern.matcher(formatedDate).matches());
- DateFormater.parseDate("Sun, 25 Jun 2006 13:51:23 +0000",DateFormater.HTTP_HEADER_DATE_FORMAT,DateFormater.HTTP_HEADER_DATE_FORMAT_TIME_OFFSET);
- DateFormater.parseDate("Sun, 25 Jun 2006 13:51:23 CEST",DateFormater.HTTP_HEADER_DATE_FORMAT,DateFormater.HTTP_HEADER_DATE_FORMAT_TIME_OFFSET);
- //TODO extend this
- }
-
- public void testFormatDateStack(){
- DateFormater formater = new DateFormater();
- SimpleDateFormat f1 = formater.getFormater();
- SimpleDateFormat f2 = formater.getFormater();
- assertNotSame(f1,f2);
- formater.returnFomater(f1);
- assertSame(f1,formater.getFormater());
- formater.returnFomater(f2);
- assertSame(f2,formater.getFormater());
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/utils/TestReflectionUtils.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/utils/TestReflectionUtils.java
deleted file mode 100755
index 127b3b0c010..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/utils/TestReflectionUtils.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.utils;
-
-import org.apache.lucene.gdata.search.analysis.PlainTextStrategy;
-import org.apache.lucene.gdata.search.config.IndexSchemaField;
-import org.apache.lucene.gdata.utils.ReflectionUtils.ReflectionException;
-import org.apache.lucene.search.RangeQuery;
-
-import junit.framework.TestCase;
-
-public class TestReflectionUtils extends TestCase {
-
- /*
- * Test method for 'org.apache.lucene.gdata.utils.ReflectionUtils.implementsType(Class, Class)'
- */
- public void testImplementsType() {
-
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.utils.ReflectionUtils.extendsType(Class, Class)'
- */
- public void testExtendsType() {
- assertTrue(ReflectionUtils.isTypeOf(Integer.class,Number.class));
- assertFalse(ReflectionUtils.isTypeOf(null,CharSequence.class));
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.utils.ReflectionUtils.isTypeOf(Class, Class)'
- */
- public void testIsTypeOf() {
- assertTrue(ReflectionUtils.isTypeOf(String.class,CharSequence.class));
- assertTrue(ReflectionUtils.isTypeOf(Integer.class,Number.class));
- assertFalse(ReflectionUtils.isTypeOf(Integer.class,CharSequence.class));
- assertFalse(ReflectionUtils.isTypeOf(null,CharSequence.class));
- assertFalse(ReflectionUtils.isTypeOf(Integer.class,null));
-
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.utils.ReflectionUtils.getDefaultInstance(Class) '
- */
- public void testGetDefaultInstance() {
- assertEquals(new String(),ReflectionUtils.getDefaultInstance(String.class));
- try{
- ReflectionUtils.getDefaultInstance(Integer.class);
- fail("can not create instance");
- }catch (ReflectionException e) {
-
- }
- try{
- ReflectionUtils.getDefaultInstance(null);
- fail("can not create instance");
- }catch (ReflectionException e) {
-
- }
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.utils.ReflectionUtils.canCreateInstance(Class)'
- */
- public void testCanCreateInstance() {
- assertTrue(ReflectionUtils.canCreateInstance(String.class));
- assertFalse(ReflectionUtils.canCreateInstance(Integer.class));
- assertFalse(ReflectionUtils.canCreateInstance(Integer.TYPE));
- assertFalse(ReflectionUtils.canCreateInstance(null));
-
-
-
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.utils.ReflectionUtils.getPrimitiveWrapper(Class)'
- */
- public void testGetPrimitiveWrapper() {
-
- assertEquals(Integer.class,ReflectionUtils.getPrimitiveWrapper(Integer.TYPE));
- assertEquals(Long.class,ReflectionUtils.getPrimitiveWrapper(Long.TYPE));
- assertEquals(Float.class,ReflectionUtils.getPrimitiveWrapper(Float.TYPE));
- assertEquals(Byte.class,ReflectionUtils.getPrimitiveWrapper(Byte.TYPE));
- assertEquals(Double.class,ReflectionUtils.getPrimitiveWrapper(Double.TYPE));
- assertEquals(Short.class,ReflectionUtils.getPrimitiveWrapper(Short.TYPE));
- assertEquals(Boolean.class,ReflectionUtils.getPrimitiveWrapper(Boolean.TYPE));
- try {
- ReflectionUtils.getPrimitiveWrapper(null);
- fail("type is null");
- }catch (ReflectionException e) {
-
- }
- try {
- ReflectionUtils.getPrimitiveWrapper(String.class);
- fail("type is not a primitive");
- }catch (ReflectionException e) {
-
- }
-
- }
-
- public void testHasdesiredconstructor(){
- assertFalse(ReflectionUtils.hasDesiredConstructor(PlainTextStrategy.class, new Class[]{IndexSchemaField.class}));
- assertFalse(ReflectionUtils.hasDesiredConstructor(PlainTextStrategy.class, new Class[]{}));
- assertTrue(ReflectionUtils.hasDesiredConstructor(String.class, new Class[]{String.class}));
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/utils/TestSimpleObjectPool.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/utils/TestSimpleObjectPool.java
deleted file mode 100755
index 0920c488965..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/utils/TestSimpleObjectPool.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissi/**
- *
- */
-
-package org.apache.lucene.gdata.utils;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import junit.framework.TestCase;
-
-public class TestSimpleObjectPool extends TestCase {
- private Pool testPool;
- private int SIZE = 10;
- protected void setUp() throws Exception {
- this.testPool =new SimpleObjectPool(SIZE,new ObjectFactoryStub());
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.utils.SimpleObjectPool.SimpleObjectPool(int, PoolObjectFactory)'
- */
- public void testSimpleObjectPool() {
- SimpleObjectPool pool = new SimpleObjectPool(1,new ObjectFactoryStub());
- assertEquals(pool.getSize(),SimpleObjectPool.MINIMALSIZE);
- pool = new SimpleObjectPool(-100,new ObjectFactoryStub());
- assertEquals(pool.getSize(),SimpleObjectPool.MINIMALSIZE);
- pool = new SimpleObjectPool(new ObjectFactoryStub());
- assertEquals(pool.getSize(),SimpleObjectPool.DEFAULTSIZE);
- pool = new SimpleObjectPool(100,new ObjectFactoryStub());
-
- assertEquals(100,pool.getSize());
- try{
- pool = new SimpleObjectPool(1,null);
- fail("factory must not be null");
- }catch (Exception e) {
- // TODO: handle exception
- }
-
-
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.utils.SimpleObjectPool.aquire()'
- */
- public void testAquire() {
- List l = new ArrayList(SIZE);
- for (int i = 0; i < SIZE; i++) {
- Object o = this.testPool.aquire();
- assertNotNull(o);
- assertFalse(l.contains(o));
- l.add(o);
-
- }
- for (Object object : l) {
- this.testPool.release(object);
- }
- for (int i = 0; i < SIZE; i++) {
- Object o = this.testPool.aquire();
- assertNotNull(o);
- assertTrue(l.contains(o));
-
-
- }
-
- }
-
- /*
- * Test method for 'org.apache.lucene.gdata.utils.SimpleObjectPool.release(Type)'
- */
- public void testRelease() {
- List l = new ArrayList(SIZE);
- for (int i = 0; i < SIZE; i++) {
- Object o = this.testPool.aquire();
- assertNotNull(o);
- assertFalse(l.contains(o));
- l.add(o);
-
- }
-
- for (Object object : l) {
- this.testPool.release(object);
- }
- for (int i = 0; i < 10; i++) {
- this.testPool.release(new Object());
- }
-
- for (int i = 0; i < SIZE; i++) {
- Object o = this.testPool.aquire();
- assertNotNull(o);
- assertTrue(l.contains(o));
-
-
- }
-
- //############################
-
- for (Object object : l) {
- this.testPool.release(object);
- }
-
- for (int i = 0; i < SIZE +SIZE; i++) {
- Object o = this.testPool.aquire();
- assertNotNull(o);
-
- if(i>= SIZE)
- assertFalse(l.contains(o));
- else
- assertTrue(l.contains(o));
- }
- }
-
- public void testDestroy(){
- this.testPool.destroy();
- try{
- this.testPool.aquire();
- fail("pool is already closed");
- }catch (Exception e) {
- // TODO: handle exception
- }
- this.testPool.release(new Object());
- }
-
- static class ObjectFactoryStub implements PoolObjectFactory{
-
- public Object getInstance() {
-
- return new Object();
- }
-
-
-
- public void destroyInstance(Object type) {
- //
- }
-
-
- }
-
-}
diff --git a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/utils/Visitor.java b/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/utils/Visitor.java
deleted file mode 100755
index db4cf8f9a0a..00000000000
--- a/contrib/gdata-server/src/core/src/test/org/apache/lucene/gdata/utils/Visitor.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.utils;
-
-/**
- *
- *
- */
-public interface Visitor {
- public void execute(Object[] objects);
-}
diff --git a/contrib/gdata-server/src/gom/build.xml b/contrib/gdata-server/src/gom/build.xml
deleted file mode 100644
index b1a8fb647d2..00000000000
--- a/contrib/gdata-server/src/gom/build.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
- Lucene gdata server GData Object Model build file
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/AtomMediaType.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/AtomMediaType.java
deleted file mode 100644
index a030cfde9ee..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/AtomMediaType.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.gom;
-
-/**
- * Describes an abstraction of a mime-type used to define the content of a
- * atom:content element. This could be every possible mimetype but has to match
- * this ".+/.+" Pattern.
- *
- * @author Simon Willnauer
- *
- */
-public enum AtomMediaType {
- /**
- * A xml media type (mime-type)
- */
- XML,
- /**
- *A text but no xml media type (mime-type)
- */
- TEXT,
- /**
- * A binary media type (mime-type)
- */
- BINARY
-}
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/ContentType.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/ContentType.java
deleted file mode 100644
index 38101a92692..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/ContentType.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.gom;
-
-/**
- * Atom e.g. feed element can contain text, html and xhtml content as character
- * values
- *
- * @author Simon Willnauer
- *
- */
-public enum ContentType {
- /**
- * GOM content type text
- */
- TEXT,
- /**
- * GOM content type XHTML
- */
- XHTML,
- /**
- * GOM content type HTML
- */
- HTML,
-
- /**
- * GOM atom media type
- * @see AtomMediaType
- */
- ATOM_MEDIA_TYPE
-}
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMAttribute.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMAttribute.java
deleted file mode 100644
index 1a0ed0aef4e..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMAttribute.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.gom;
-
-/**
- * This class is a object representation of a XML Attribute used in the
- * GO-Model.
- *
- * @author Simon Willnauer
- *
- */
-public interface GOMAttribute extends GOMXmlEntity {
-
- /**
- *
- * @return true if and only if this attribute has the default
- * namespace, otherwise false
- */
- public abstract boolean hasDefaultNamespace();
-
-}
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMAuthor.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMAuthor.java
deleted file mode 100644
index 4473a09bb49..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMAuthor.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.gom;
-
-/**
- * GOMAuthor elmement used in feed and entries as a representation of a atom:author element.
- * The "atom:author" element is a Person construct that indicates the author of the entry or feed.
- *
- * @see org.apache.lucene.gdata.gom.GOMPerson
- * @author Simon Willnauer
- *
- */
-public interface GOMAuthor extends GOMPerson {
- /**
- * Atom 1.0 local name for the xml element
- */
- public static final String LOCALNAME = "author";
-
-}
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMCategory.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMCategory.java
deleted file mode 100644
index 8057555bb9e..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMCategory.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.gom;
-
-/**
- *
- * GOMCategory type
- *
- * The "category" element conveys information about a category
- * associated with an entry or feed. This specification assigns no meaning to
- * the content (if any) of this element.
- *
- *
- *
- * @author Simon Willnauer
- *
- */
-public interface GOMCategory extends GOMElement {
- /**
- * Atom local name for the xml element
- */
- public static final String LOCALNAME = "category";
-
- /**
- * Attribute name (attribute term { text })
- */
- public static final String TERM_ATTRIBUTE = "term";
-
- /**
- * Attribute name (attribute label { text })
- */
- public static final String LABLE_ATTRIBUTE = "label";
-
- /**
- * Attribute name (attribute scheme { atomUri })
- */
- public static final String SCHEME_ATTRIBUTE = "scheme";
-
- /**
- * @param aTerm -
- * the attribute term { text }
- */
- public abstract void setTerm(String aTerm);
-
- /**
- * @param aLabel -
- * the attribute lable { text }
- */
- public abstract void setLabel(String aLabel);
-
- /**
- * @param aScheme -
- * the attribute scheme { atomUri }
- */
- public abstract void setScheme(String aScheme);
-
- /**
- * @return the attribute term { text }
- */
- public abstract String getTerm();
-
- /**
- * @return the attribute scheme { atomUri }
- */
- public abstract String getScheme();
-
- /**
- * @return the attribute lable { text }
- */
- public abstract String getLabel();
-
-}
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMContent.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMContent.java
deleted file mode 100644
index 8cbbc8ff901..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMContent.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.gom;
-
-/**
- *
- * GOMContent represents the atom:content element.
- *
- * The "atom:content" element either contains or links to the content of the
- * entry. The content of atom:content is Language-Sensitive.
- *
- *
- *
- * @author Simon Willnauer
- * @see org.apache.lucene.gdata.gom.GOMTextConstruct
- *
- *
- */
-public interface GOMContent extends GOMTextConstruct {
- /**
- * Atom local name for the xml element
- */
- public static final String LOCALNAME = "content";
- /**
- * RSS local name for the xml element
- */
- public static final String LOCAL_NAME_RSS = "description";
- /**
- * The src attribute value
- * @return - the value of the src attribute
- */
- public abstract String getSrc();
- /**
- * The src attribute value
- * @param aSrc - the src attribute value to set
- */
- public abstract void setSrc(String aSrc);
- /**
- * The contents abstract media type
- * @param aMediaType -
- */
- public abstract void setAtomMediaType(AtomMediaType aMediaType);
-
- /**
- * @return - the atom media type of the content element
- * @see AtomMediaType
- */
- public abstract AtomMediaType getAtomMediaType();
-}
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMContributor.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMContributor.java
deleted file mode 100644
index 9eac1605e6d..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMContributor.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * contributor license agreements. See the NOTICE file distributed with
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.gom;
-
-/**
- * The "atom:contributor" element is a Person construct that indicates a person
- * or other entity who contributed to the entry or feed.
- *
- *
- *
- * @author Simon Willnauer
- *
- */
-public interface GOMContributor extends GOMPerson {
- /**
- * Atom 1.0 local name for the xml element
- */
- public static final String LOCALNAME = "contributor";
-}
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMDateConstruct.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMDateConstruct.java
deleted file mode 100644
index 79875bd4e32..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMDateConstruct.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.gom;
-
-import java.util.Date;
-
-/**
- *
- *
- * GOMDateConstruct is a base interface for several concrete DateConstruct
- * implementations like {@link org.apache.lucene.gdata.gom.GOMUpdated} or
- * {@link org.apache.lucene.gdata.gom.GOMPublished}
- *
- *
- * A Date construct is an element whose content MUST conform to the "date-time"
- * production in [RFC3339]. In addition, an uppercase "T" character MUST be used
- * to separate date and time, and an uppercase "Z" character MUST be present in
- * the absence of a numeric time zone offset.
- *
- *
- *
- * Such date values happen to be compatible with the following specifications:
- * [ISO.8601.1988], [W3C.NOTE-datetime-19980827], and
- * [W3C.REC-xmlschema-2-20041028].
- *
- *
- *
- * Date values SHOULD be as accurate as possible. For example, it would be
- * generally inappropriate for a publishing system to apply the same timestamp
- * to several entries that were published during the course of a single day.
- *
- *
- * @author Simon Willnauer
- *
- * @see org.apache.lucene.gdata.gom.GOMUpdated
- * @see org.apache.lucene.gdata.gom.GOMPublished
- */
-public abstract interface GOMDateConstruct extends GOMElement {
- /**
- *
- * @param date -
- * the date to set
- */
- public abstract void setDate(Date date);
-
- /**
- *
- * @return - the date object, if no date has been set this method will
- * return a new Date(0) date object
- */
- public abstract Date getDate();
-}
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMDocument.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMDocument.java
deleted file mode 100644
index e895dc878cb..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMDocument.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.gom;
-
-import javax.xml.stream.XMLStreamException;
-
-import org.apache.lucene.gdata.gom.writer.GOMOutputWriter;
-
-/**
- *
- * GOMDocument acts as a container for GOMElements to render the containing
- * GOMElement as a valid xml document. This class renderes the
- *
- *
- * <?xml version="1.0" encoding="UTF-8"?>
- *
- *
- * header to the outputstream before the containing element will be rendered.
- *
- *
- * @author Simon Willnauer
- *
- * @param
- */
-public interface GOMDocument {
- /**
- * setter for the root element of the xml e.g GOMDocument
- *
- * @param aRootElement -
- * the root element to set
- */
- public abstract void setRootElement(T aRootElement);
-
- /**
- * Getter for the root element of the xml e.g GOMDocument
- *
- * @return - the root elmenent
- */
- public abstract T getRootElement();
-
- /**
- * Sets the xml version
- *
- * @param aVersion -
- * the version string
- */
- public abstract void setVersion(String aVersion);
-
- /**
- * Gets the xml version
- *
- * @return - the xml version string
- */
- public abstract String getVersion();
-
- /**
- * Gets the xml charset encoding
- *
- * @return - the specified char encoding
- */
- public abstract String getCharacterEncoding();
-
- /**
- * Sets the xml charset encoding
- *
- * @param aEncoding -
- * the charset encoding to set
- */
- public abstract void setCharacterEncoding(String aEncoding);
-
- /**
- * Generates a complete xml document starting with the header followed by
- * the output of the specified root element in the ATOM 1.0 formate.
- *
- * @param aStreamWriter -
- * the {@link GOMOutputWriter} implementation to write the output
- * @throws XMLStreamException -
- * if the {@link GOMOutputWriter} throws an exception
- */
- public abstract void writeAtomOutput(final GOMOutputWriter aStreamWriter)
- throws XMLStreamException;
-
- /**
- *
- * Generates a complete xml document starting with the header followed by
- * the output of the specified root element in the RSS 2.0 formate.
- *
- * @param aStreamWriter -
- * the {@link GOMOutputWriter} implementation to write the output
- * @throws XMLStreamException -
- * if the {@link GOMOutputWriter} throws an exception
- */
- public abstract void writeRssOutput(final GOMOutputWriter aStreamWriter)
- throws XMLStreamException;
-
-}
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMElement.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMElement.java
deleted file mode 100644
index 83495abcf21..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMElement.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.gom;
-
-import javax.xml.stream.XMLStreamException;
-
-import org.apache.lucene.gdata.gom.core.AtomParser;
-import org.apache.lucene.gdata.gom.writer.GOMOutputWriter;
-
-/**
- * Abstract interface which should be assignable from all classes representing
- * xml elements within the GData Object Model.
- *
- * @author Simon Willnauer
- *
- */
-public abstract interface GOMElement extends GOMXmlEntity, AtomParser {
- /**
- * xml:lang attribute localpart
- */
- public static final String XML_LANG = "lang";
-
- /**
- * xml:base attribute localpart
- */
- public static final String XML_BASE = "base";
-
- /**
- *
- * @return the xml:base attribute value
- */
- public abstract String getXmlBase();
-
- /**
- *
- * @return the xml:lang attribute value
- */
- public abstract String getXmlLang();
-
- /**
- * Generates the xml element represented by this class in the ATOM 1.0
- * formate.
- *
- * @param aStreamWriter -
- * the {@link GOMOutputWriter} implementation to write the output
- * @throws XMLStreamException -
- * if the {@link GOMOutputWriter} throws an exception
- */
- public abstract void writeAtomOutput(final GOMOutputWriter aStreamWriter)
- throws XMLStreamException;
-
- /**
- * Generates the xml element represented by this class in the RSS 2.0
- * formate.
- *
- * @param aStreamWriter -
- * the {@link GOMOutputWriter} implementation to write the output
- * @throws XMLStreamException -
- * if the {@link GOMOutputWriter} throws an exception
- */
- public abstract void writeRssOutput(final GOMOutputWriter aStreamWriter)
- throws XMLStreamException;
-
- /**
- * Generates the xml element represented by this class in the RSS 2.0
- * formate using the parameter rssName as the element local name
- *
- * @param rssName -
- * the local name to render the element
- * @param aStreamWriter -
- * the {@link GOMOutputWriter} implementation to write the output
- * @throws XMLStreamException -
- * if the {@link GOMOutputWriter} throws an exception
- */
- public abstract void writeRssOutput(final GOMOutputWriter aStreamWriter,
- String rssName) throws XMLStreamException;
-
-}
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMEntry.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMEntry.java
deleted file mode 100644
index 56903cb6a8b..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMEntry.java
+++ /dev/null
@@ -1,255 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.gom;
-
-import java.util.List;
-
-/**
- *
- *
- * The GOMEntry class represents a "atom:entry" element in the GData Object
- * Model.
- *
- *
- * The "atom:entry" element represents an individual entry, acting as a
- * container for metadata and data associated with the entry. This element can
- * appear as a child of the atom:feed element, or it can appear as the document
- * (i.e., top-level) element of a stand-alone Atom Entry Document.
- *
- *
- * @author Simon Willnauer
- *
- */
-public interface GOMEntry extends GOMXmlEntity, GOMElement, GOMExtensible {
- /**
- * Atom 1.0 local name for the xml element
- */
- public static final String LOCALNAME = "entry";
-
- /**
- * RSS 2.0 local name for the xml element
- */
- public static final String LOCALNAME_RSS = "item";
-
- /**
- * @param aAuthor -
- * a author to add
- * @see GOMAuthor
- */
- public abstract void addAuthor(GOMAuthor aAuthor);
-
- /**
- * @param aCategory -
- * a category to add
- * @see GOMCategory
- */
- public abstract void addCategory(GOMCategory aCategory);
-
- /**
- * @param aContributor -
- * a contributor to add
- * @see GOMContributor
- */
- public abstract void addContributor(GOMContributor aContributor);
-
- /**
- * @param aLink -
- * a link to add
- * @see GOMLink
- */
- public abstract void addLink(GOMLink aLink);
-
- /**
- * @return - the entry author
- * @see GOMAuthor
- */
- public abstract List getAuthors();
-
- /**
- *
- * This method returns all categories and will never returnnull
- *
- * @return - a list of categories
- * @see GOMCategory
- */
- public abstract List getCategories();
-
- /**
- *
- * This method returns all contributors and will never returnnull
- *
- * @return - a list of contributors
- * @see GOMContributor
- */
- public abstract List getContributor();
-
- /**
- * @return - the feed id
- * @see GOMId
- */
- public abstract GOMId getId();
-
- /**
- * @param aId -
- * the entry id
- * @see GOMId
- */
- public abstract void setId(GOMId aId);
-
- /**
- * @return - the entry rights
- * @see GOMRights
- */
- public abstract GOMRights getRights();
-
- /**
- * @param aRights -
- * the GOMRights to set
- * @see GOMRights
- */
- public abstract void setRights(GOMRights aRights);
-
- /**
- * @return - the entries title
- * @see GOMTitle
- */
- public abstract GOMTitle getTitle();
-
- /**
- * @param aTitle -
- * the title to set
- * @see GOMTitle
- */
- public abstract void setTitle(GOMTitle aTitle);
-
- /**
- * @return - the last updated element
- * @see GOMUpdated
- */
- public abstract GOMUpdated getUpdated();
-
- /**
- * @param aUpdated -
- * the updated element to set
- * @see GOMUpdated
- */
- public abstract void setUpdated(GOMUpdated aUpdated);
-
- /**
- *
- * This method returns all links and will never returnnull
- *
- * @return - a list of links
- * @see GOMLink
- */
- public abstract List getLinks();
-
- /**
- * @param aSummary -
- * a summary to set
- * @see GOMSummary
- */
- public abstract void setSummary(GOMSummary aSummary);
-
- /**
- * @return - the summary
- * @see GOMSummary
- */
- public abstract GOMSummary getSummary();
-
- /**
- * @param aSource -
- * the source to set
- * @see GOMSource
- */
- public abstract void setSource(GOMSource aSource);
-
- /**
- * @return - the entry source
- * @see GOMSource
- */
- public abstract GOMSource getSource();
-
- /**
- * @param aPublished -
- * the published element to set
- * @see GOMPublished
- */
- public abstract void setPublished(GOMPublished aPublished);
-
- /**
- * @return - the published element
- * @see GOMPublished
- */
- public abstract GOMPublished getPublished();
-
- /**
- * @return - the content element
- * @see GOMContent
- */
- public abstract GOMContent getContent();
-
- /**
- * @param content -
- * the content to set
- * @see GOMContent
- */
- public abstract void setContent(GOMContent content);
-
- /**
- * @param aNamespace -
- * a Namespace to add
- * @see GOMNamespace
- */
- public abstract void addNamespace(GOMNamespace aNamespace);
-
- /**
- * @return - list of all namespaces - will never be null
- * @see GOMNamespace
- */
- public abstract List getNamespaces();
-
- /**
- * @return - the default namespace
- * @see GOMNamespace
- */
- public abstract GOMNamespace getDefaultNamespace();
-
-}
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMExtensible.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMExtensible.java
deleted file mode 100644
index 1bd4c38011f..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMExtensible.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.gom;
-
-import java.util.List;
-
-import org.apache.lucene.gdata.gom.core.extension.GOMExtensionFactory;
-
-/**
- *
- * The Gdata Object Model describes an abstract object model for the gdata
- * protocol. GData is supposed to be very flexible and extensible. Users should
- * be able to extend {@link org.apache.lucene.gdata.gom.GOMFeed} and
- * {@link org.apache.lucene.gdata.gom.GOMEntry} elements to create extensions
- * and custom classes for their own model.
- *
- *
- *
- * This interface describes the extensible GOM entities.
- *
- *
- * @author Simon Willnauer
- * @see org.apache.lucene.gdata.gom.GOMFeed
- * @see org.apache.lucene.gdata.gom.GOMEntry
- *
- */
-public interface GOMExtensible {
- //TODO add setter!
- //TODO add how to
- /**
- * @return - a list of all extensions specified to the extended element
- */
- public List getExtensions();
-
- /**
- *
- * @param factory - the extension factory to set
- */
- public void setExtensionFactory(GOMExtensionFactory factory);
-
-}
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMExtension.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMExtension.java
deleted file mode 100644
index dbfc50a0c42..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMExtension.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.gom;
-
-/**
- * The GData Object Model is like the Google Data Api highly extensible and
- * offers a lot of base classes to extend as a {@link GOMExtension}. All
- * extensions returned by
- * {@link org.apache.lucene.gdata.gom.core.extension.GOMExtensionFactory#canHandleExtensionElement(QName)}
- * must implement this interface.
- * GOM extensions can either be created via the
- * {@link org.apache.lucene.gdata.gom.core.extension.GOMExtensionFactory} or by
- * subclassing either {@link org.apache.lucene.gdata.gom.GOMFeed} or
- * {@link org.apache.lucene.gdata.gom.GOMEntry}.
- *
- * @author Simon Willnauer
- * @see org.apache.lucene.gdata.gom.GOMExtensible
- * @see org.apache.lucene.gdata.gom.core.extension.GOMExtensionFactory
- */
-public interface GOMExtension extends GOMXmlEntity, GOMElement {
-
-}
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMFeed.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMFeed.java
deleted file mode 100644
index 20733c83d9e..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMFeed.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.gom;
-
-import java.util.List;
-
-/**
- * Class representing the "atom:feed" element. The "atom:feed" element is the
- * document (i.e., top-level) element of an Atom Feed Document, acting as a
- * container for metadata and data associated with the feed. Its element
- * children consist of metadata elements followed by zero or more atom:entry
- * child elements.
- *
- *
- *
- *
- * @author Simon Willnauer
- * @see org.apache.lucene.gdata.gom.GOMExtensible
- * @see org.apache.lucene.gdata.gom.GOMExtension
- * @see org.apache.lucene.gdata.gom.GOMDocument
- */
-public interface GOMFeed extends GOMSource, GOMExtensible {
- /**
- * Atom local name for the xml element
- */
- public static final String LOCALNAME = "feed";
-
- /**
- * RSS local name for the xml element
- */
- public static final String LOCALNAME_RSS = "rss";
-
- /**
- * RSS channel localname as Rss starts with
- *
- *
- * <rss><channel>
- *
- */
- public static final String RSS_CHANNEL_ELEMENT_NAME = "channel";
-
- /**
- * this class can contain namespaces which will be rendered into the start
- * element.
- *
- *
- * <feed xmlns:myNs="someNamespace"></feed>
- *
- *
- * @param aNamespace -
- * a namespace to add
- */
- public void addNamespace(GOMNamespace aNamespace);
-
- /**
- * @return - all declared namespaces, excluding the default namespace, this
- * method will never return null.
- * @see GOMFeed#getDefaultNamespace()
- */
- public List getNamespaces();
-
- /**
- *
- * @return - a list of added entries, this method will never return
- * null.
- */
- public List getEntries();
-
- /**
- * @return - the OpenSearch namespace element itemsPerPage text
- * value.
- */
- public int getItemsPerPage();
-
- /**
- * @return - the OpenSearch namespace element startIndex text value.
- */
- public int getStartIndex();
-
- /**
- * @param aIndex -
- * the OpenSearch namespace element startIndex text value
- * as an integer.
- */
- public void setStartIndex(int aIndex);
-
- /**
- * @param aInt -
- * the OpenSearch namespace element itemsPerPage text
- * value as an integer.
- */
- public void setItemsPerPage(int aInt);
-
- /**
- *
- * @return the default namespace - this will always be
- * {@link GOMNamespace#ATOM_NAMESPACE}
- */
- public GOMNamespace getDefaultNamespace();
-
-}
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMGenerator.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMGenerator.java
deleted file mode 100644
index a8ee0c09a4c..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMGenerator.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.gom;
-
-/**
- * Class representing the "atom:generator" element. The "atom:generator"
- * element's content identifies the agent used to generate a feed, for debugging
- * and other purposes.
- *
- *
- * atomGenerator = element atom:generator {
- * atomCommonAttributes,
- * attribute uri { atomUri }?,
- * attribute version { text }?,
- * text
- * }
- *
- *
- *
- * @author Simon Willnauer
- *
- */
-public interface GOMGenerator extends GOMElement {
- /**
- * Atom local name for the xml element
- */
- public static final String LOCALNAME = "generator";
-
- /**
- * Sets the the atom:generator uri attribute value
- *
- * @param uri -
- * the generator uri attribute value to set
- */
- public void setUri(String uri);
-
- /**
- * Sets the the atom:generator version attribute value
- *
- * @param version -
- * the version value to set
- */
- public void setGeneratorVersion(String version);
-
- /**
- *
- * @return - the atom:generator version attribute value
- */
- public String getGeneratorVersion();
-
- /**
- *
- * @return - the atom:generator uri attribute value
- */
- public String getUri();
-}
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMIcon.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMIcon.java
deleted file mode 100644
index 35c58b4d57d..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMIcon.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.gom;
-
-/**
- *
- * Simple atom:icon element class. The "atom:icon" element's content is an IRI
- * reference [RFC3987] that identifies an image that provides iconic visual
- * identification for a feed.
- *
- *
- *
- * @author Simon Willnauer
- *
- */
-public interface GOMIcon extends GOMElement {
- /**
- * Atom local name for the xml element
- */
- String LOCALNAME = "icon";
-
-}
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMId.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMId.java
deleted file mode 100644
index 840613f5f49..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMId.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.gom;
-
-/**
- *
- * The "atom:id" element conveys a permanent, universally unique identifier for
- * an entry or feed.
- *
- *
- *
- * @author Simon Willnauer
- *
- */
-public interface GOMId extends GOMElement {
- /**
- * Atom local name for the xml element
- */
- public static final String LOCALNAME = "id";
-
- /**
- * RSS local name for the xml element
- */
- public static final String LOCALNAME_RSS = "uid";
-
-}
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMLink.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMLink.java
deleted file mode 100644
index 5c590054609..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMLink.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.gom;
-
-/**
- * The "atom:link" element defines a reference from an entry or feed to a Web
- * resource. This specification assigns no meaning to the content (if any) of
- * this element.
- *
- *
- *
- * @author Simon Willnauer
- *
- */
-public interface GOMLink extends GOMElement {
- /**
- * Atom local name for the xml element
- */
- public static final String LOCALNAME = "link";
-
- /**
- * @return - the href attribute value of the element link
- */
- public String getHref();
-
- /**
- * @param aHref -
- * the href attribute value of the element link to set.
- */
- public void setHref(String aHref);
-
- /**
- * @return the hreflang attribute value of the element link
- */
- public String getHrefLang();
-
- /**
- * @param aHrefLang -
- * the hreflang attribute value of the element link to set.
- */
- public void setHrefLang(String aHrefLang);
-
- /**
- * @return - the length attribute value of the element link.
- */
- public Integer getLength();
-
- /**
- * @param aLength -
- * the length attribute value of the element link to set.
- */
- public void setLength(Integer aLength);
-
- /**
- * @return - the rel attribute value of the element link.
- */
- public String getRel();
-
- /**
- * @param aRel -
- * the rel attribute value of the element link to set
- */
- public void setRel(String aRel);
-
- /**
- * @return - the title attribute value of the element link.
- */
- public String getTitle();
-
- /**
- * @param aTitle -
- * the title attribute value of the element link to set
- */
- public void setTitle(String aTitle);
-
- /**
- * @return - the type attribute value of the element link.
- */
- public String getType();
-
- /**
- * @param aType -
- * the type attribute value of the element link.
- */
- public void setType(String aType);
-
-}
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMLogo.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMLogo.java
deleted file mode 100644
index 440b9afcc6c..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMLogo.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.gom;
-
-import org.apache.lucene.gdata.gom.GOMElement;
-
-// TODO add descrition
-/**
- * Simple atom:logo element. The "atom:logo" element's content is an IRI
- * reference [RFC3987] that identifies an image that provides visual
- * identification for a feed.
- *
- *
- *
- * @author Simon Willnauer
- *
- */
-public interface GOMLogo extends GOMElement {
- /**
- * Atom local name for the xml element
- */
- public static final String LOCALNAME = "logo";
-
-}
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMNamespace.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMNamespace.java
deleted file mode 100644
index 6cfa41d5a6b..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMNamespace.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.gom;
-
-/**
- * A simple domain object to represent a xml namespace.
- *
- * @author Simon Willnauer
- *
- */
-public final class GOMNamespace {
-
- /**
- * XML namespace uri
- */
- public static final String XML_NS_URI = "http://www.w3.org/XML/1998/namespace";
-
- /**
- * XML namespace prefix
- */
- public static final String XML_NS_PREFIX = "xml";
-
- /**
- * Amazon "opensearch" namespace prefix
- */
- public static final String OPENSEARCH_NS_PREFIX = "openSearch";
-
- /**
- * Amazon "opensearch" namespace uri
- */
- public static final String OPENSEARCH_NS_URI = "http://a9.com/-/spec/opensearchrss/1.0/";
-
- /**
- * ATOM namespace uri
- */
- public static final String ATOM_NS_URI = "http://www.w3.org/2005/Atom";
-
- /**
- * ATOM namespace prefix
- */
- public static final String ATOM_NS_PREFIX = "atom";
-
- /**
- * ATOM namespace
- */
- public static final GOMNamespace ATOM_NAMESPACE = new GOMNamespace(
- ATOM_NS_URI, ATOM_NS_PREFIX);
-
- /**
- * Amazon "opensearch" namespace
- */
- public static final GOMNamespace OPENSEARCH_NAMESPACE = new GOMNamespace(
- OPENSEARCH_NS_URI, OPENSEARCH_NS_PREFIX);
-
- private final String namespaceUri;
-
- private final String namespacePrefix;
-
- /**
- * Class constructor for GOMNamespace
- *
- * @param aNamespaceUri -
- * the namespace uri (must not be null)
- * @param aNamespacePrefix -
- * the namespace prefix (if null an empty string will be
- * assigned)
- *
- */
- public GOMNamespace(final String aNamespaceUri,
- final String aNamespacePrefix) {
- if (aNamespaceUri == null)
- throw new IllegalArgumentException("uri must not be null");
- this.namespacePrefix = aNamespacePrefix == null ? "" : aNamespacePrefix;
- this.namespaceUri = aNamespaceUri;
- }
-
- /**
- * @return Returns the namespacePrefix.
- */
- public String getNamespacePrefix() {
- return this.namespacePrefix;
- }
-
- /**
- * @return Returns the namespaceUri.
- */
- public String getNamespaceUri() {
- return this.namespaceUri;
- }
-
- /**
- * @see java.lang.Object#equals(java.lang.Object)
- */
- @Override
- public boolean equals(Object arg0) {
- if (arg0 == null)
- return false;
- if (arg0 == this)
- return true;
- if (arg0 instanceof GOMNamespace) {
- GOMNamespace other = (GOMNamespace) arg0;
- return this.namespacePrefix.equals(other.getNamespacePrefix())
- && this.namespaceUri.equals(other.getNamespaceUri());
- }
- return false;
- }
-
- /**
- * @see java.lang.Object#hashCode()
- */
- @Override
- public int hashCode() {
- /*
- * The multiplier 37 was chosen because it is an odd prime. If it was
- * even and the multiplication overflowed, information would be lost
- * because multiplication by two is equivalent to shifting The value 17
- * is arbitrary. see
- * http://java.sun.com/developer/Books/effectivejava/Chapter3.pdf
- */
- int hash = 17;
- hash = 37 * hash + this.namespacePrefix.hashCode();
- hash = 37 * hash + this.namespaceUri.hashCode();
- return hash;
- }
-
- /**
- * @see java.lang.Object#toString()
- */
- @Override
- public String toString() {
- StringBuilder builder = new StringBuilder(this.getClass().getName());
- builder.append(" uri: ").append(this.namespaceUri);
- builder.append(" prefix: ").append(this.namespacePrefix);
- return builder.toString();
- }
-
-}
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMPerson.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMPerson.java
deleted file mode 100644
index 6fedc07f072..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMPerson.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.gom;
-
-
-/**
- *
- * GOMPerson type used for feed and entry authors and contributors. It may also
- * be used by custom elements.
- *
- *
- *
- * @author Simon Willnauer
- * @see org.apache.lucene.gdata.gom.GOMAuthor
- */
-public interface GOMPerson extends GOMElement {
- /**
- * Atom local name for the xml element
- */
- public static final String LOCALNAME = "person";
-
- /**
- * @param aName - the person name value
- */
- public abstract void setName(String aName);
-
- /**
- * @param aEmail - the person email value
- */
- public abstract void setEmail(String aEmail);
-
- /**
- * @param uri - the person uri value
- */
- public abstract void setUri(String uri);
-
- /**
- * @return - the person name value
- */
- public abstract String getName();
-
- /**
- * @return - the person email value
- */
- public abstract String getEmail();
-
- /**
- * @return - the person uri value
- */
- public abstract String getUri();
- // TODO needs extension possibility
-}
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMPublished.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMPublished.java
deleted file mode 100644
index 55036a84e62..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMPublished.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.gom;
-
-/**
- *
- * The "atom:published" element is a Date construct indicating an instant in
- * time associated with an event early in the life cycle of the entry.
- * Typically, atom:published will be associated with the initial creation or
- * first availability of the resource.
- *
- *
- * atomPublished = element atom:published { atomDateConstruct}
- *
- *
- * @author Simon Willnauer
- * @see org.apache.lucene.gdata.gom.GOMDateConstruct
- */
-public interface GOMPublished extends GOMDateConstruct {
- /**
- * Atom local name for the xml element
- */
- public static final String LOCALNAME = "published";
-}
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMRights.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMRights.java
deleted file mode 100644
index ff794c64957..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMRights.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.gom;
-
-import org.apache.lucene.gdata.gom.GOMElement;
-
-/**
- *
- * The "atom:rights" element is a Text construct that conveys information about
- * rights held in and over an entry or feed. The atom:rights element SHOULD NOT
- * be used to convey machine-readable licensing information.
- *
- *
- *
- * @author Simon Willnauer
- *
- */
-public interface GOMRights extends GOMElement {
- /**
- * Atom local name for the xml element
- */
- public static final String LOCALNAME = "rights";
-}
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMSource.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMSource.java
deleted file mode 100644
index 2e1771176da..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMSource.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.gom;
-
-import java.util.List;
-
-/**
- * If an atom:entry is copied from one feed into another feed, then the source
- * atom:feed's metadata (all child elements of atom:feed other than the
- * atom:entry elements) MAY be preserved within the copied entry by adding an
- * atom:source child element, if it is not already present in the entry, and
- * including some or all of the source feed's Metadata elements as the
- * atom:source element's children. Such metadata SHOULD be preserved if the
- * source atom:feed contains any of the child elements atom:author,
- * atom:contributor, atom:rights, or atom:category and those child elements are
- * not present in the source atom:entry.
- *
- *
- *
- * @author Simon Willnauer
- *
- */
-public interface GOMSource extends GOMXmlEntity, GOMElement {
- public static final String LOCALNAME = "source";
-
- /**
- * @param aAuthor
- */
- public void addAuthor(GOMAuthor aAuthor);
-
- /**
- * @param aCategory
- */
- public void addCategory(GOMCategory aCategory);
-
- /**
- * @param aContributor
- */
- public void addContributor(GOMContributor aContributor);
-
- /**
- * @param aLink
- */
- public void addLink(GOMLink aLink);
-
- public List getAuthors();
-
- public List getCategories();
-
- public List getContributor();
-
- public GOMGenerator getGenerator();
-
- public GOMId getId();
-
- public void setGenerator(GOMGenerator aGenerator);
-
- public void setIcon(GOMIcon aIcon);
-
- public void setId(GOMId aId);
-
- public GOMLogo getLogo();
-
- public void setLogo(GOMLogo aLogo);
-
- public GOMRights getRights();
-
- public void setRights(GOMRights aRights);
-
- public GOMSubtitle getSubtitle();
-
- public void setSubtitle(GOMSubtitle aSubtitle);
-
- public GOMTitle getTitle();
-
- public void setTitle(GOMTitle aTitle);
-
- public GOMUpdated getUpdated();
-
- public void setUpdated(GOMUpdated aUpdated);
-
- public GOMIcon getIcon();
-
- public List getLinks();
-
- //TODO needs extension elements
-
-}
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMSubtitle.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMSubtitle.java
deleted file mode 100644
index c5116c5e3ed..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMSubtitle.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.gom;
-
-/**
- *
- * The "atom:subtitle" element is a Text construct that conveys a human-readable
- * description or subtitle for a feed.
- *
- *
- *
- * @author Simon Willnauer
- * @see org.apache.lucene.gdata.gom.GOMTextConstruct
- */
-public interface GOMSubtitle extends GOMTextConstruct {
- /**
- * Atom local name for the xml element
- */
- public static final String LOCALNAME = "subtitle";
-
- /**
- * RSS local name for the xml element
- */
- public static final String RSS_LOCALNAME = "description";
-}
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMSummary.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMSummary.java
deleted file mode 100644
index def976573af..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMSummary.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.gom;
-
-/**
- * @author Simon Willnauer
- *
- */
-public interface GOMSummary extends GOMTextConstruct {
-
- /**
- * Atom local name for the xml element
- */
- public static final String LOCALNAME = "summary";
-}
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMTextConstruct.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMTextConstruct.java
deleted file mode 100644
index be72991a447..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMTextConstruct.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.gom;
-
-/**
- * @author Simon Willnauer
- *
- */
-public interface GOMTextConstruct extends GOMElement {
-
-}
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMTime.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMTime.java
deleted file mode 100644
index e2653beee56..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMTime.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.gom;
-
-import org.apache.lucene.gdata.gom.GOMElement;
-
-/**
- * @author Simon Willnauer
- *
- */
-public interface GOMTime extends GOMElement {
-
-}
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMTitle.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMTitle.java
deleted file mode 100644
index 75f8e14700d..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMTitle.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.gom;
-
-/**
- *
- * The "atom:title" element is a Text construct that conveys a human-readable
- * title for an entry or feed.
- *
- *
- *
- * @author Simon Willnauer
- *
- */
-public interface GOMTitle extends GOMElement {
-
- /**
- * Atom local name for the xml element
- */
- public static final String LOCALNAME = "title";
-
- /**
- * @return - the content type attribute value as a {@link ContentType}
- * @see ContentType
- */
- public abstract ContentType getContentType();
-}
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMUpdated.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMUpdated.java
deleted file mode 100644
index e0bd13a5cd1..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMUpdated.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.gom;
-
-/**
- *
- * The "atom:updated" element is a Date construct indicating the most recent
- * instant in time when an entry or feed was modified in a way the publisher
- * considers significant. Therefore, not all modifications necessarily result in
- * a changed atom:updated value.
- *
- *
- * atomUpdated = element atom:updated { atomDateConstruct}
- *
- *
- * @author Simon Willnauer
- * @see org.apache.lucene.gdata.gom.GOMDateConstruct
- */
-public interface GOMUpdated extends GOMDateConstruct {
- /**
- * Atom local name for the xml element
- */
- public static final String LOCALNAME = "updated";
-}
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMXmlEntity.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMXmlEntity.java
deleted file mode 100644
index b73ed26c498..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/GOMXmlEntity.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lucene.gdata.gom;
-
-import javax.xml.namespace.QName;
-
-/**
- * GOMXmlEntity is a abstract base interface for all Gdata Object Model
- * Interfaces to be implemented by any class which is a part of the GOM. This
- * interface defines a basic interface for xml attributes and elements
- *
- * @author Simon Willnauer
- *
- */
-public abstract interface GOMXmlEntity {
-
- /**
- * @return - the entities QName
- * @see QName
- *
- */
- public abstract QName getQname();
-
- /**
- * @param aString - the namespace uri to set
- */
- public abstract void setNamespaceUri(String aString);
-
- /**
- * @param aString - the namespace prefix to set
- */
- public abstract void setNamespacePrefix(String aString);
-
- /**
- * @param aLocalName - the localname of the entitiy
- */
- public abstract void setLocalName(String aLocalName);
-
- /**
- * @return - the local name of the entitiy
- */
- public abstract String getLocalName();
-
- /**
- * @return - the text value of the entity
- */
- public abstract String getTextValue();
-
- /**
- * @param aTextValue - the text value of the entity
- */
- public abstract void setTextValue(String aTextValue);
-
-}
diff --git a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/core/AbstractGOMElement.java b/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/core/AbstractGOMElement.java
deleted file mode 100644
index a807d466963..00000000000
--- a/contrib/gdata-server/src/gom/src/java/org/apache/lucene/gdata/gom/core/AbstractGOMElement.java
+++ /dev/null
@@ -1,232 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.gdata.gom.core;
-
-import java.util.LinkedList;
-import java.util.List;
-
-import javax.xml.namespace.QName;
-import javax.xml.stream.XMLStreamException;
-
-import org.apache.lucene.gdata.gom.GOMAttribute;
-import org.apache.lucene.gdata.gom.GOMElement;
-import org.apache.lucene.gdata.gom.GOMNamespace;
-import org.apache.lucene.gdata.gom.writer.GOMOutputWriter;
-
-/**
- * @author Simon Willnauer
- */
-public abstract class AbstractGOMElement implements GOMElement {
- /**
- * atomCommonAttribute attribute xml:lang { atomLanguageTag }?
- */
- protected String xmlLang;
-
- /**
- * atomCommonAttribute attribute xml:base { atomUri }?
- */
- protected String xmlBase;
-
- protected QName qname;
-
- protected String textValue;
-
- protected String localName;
-
- protected String nsUri;
-
- protected String nsPrefix;
-
- /**
- * atomCommonAttributes undefinedAttribute*
- */
- protected List extensionAttributes = new LinkedList();
-
- /**
- * {@inheritDoc}
- *
- * @see org.apache.lucene.gdata.gom.GOMXmlEntity#getQname()
- */
- public QName getQname() {
- return this.qname;
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.apache.lucene.gdata.gom.GOMXmlEntity#getTextValue()
- */
- public String getTextValue() {
- return this.textValue;
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.apache.lucene.gdata.gom.GOMXmlEntity#setTextValue(java.lang.String)
- */
- public void setTextValue(String aTextValue) {
- this.textValue = aTextValue;
-
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.apache.lucene.gdata.gom.GOMXmlEntity#getLocalName()
- */
- public String getLocalName() {
- return this.localName;
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.apache.lucene.gdata.gom.GOMXmlEntity#setLocalName(java.lang.String)
- */
- public void setLocalName(String aLocalName) {
- // must override
- }
-
- protected void addAttribute(GOMAttribute aAttribute) {
- if (aAttribute != null)
- this.extensionAttributes.add(aAttribute);
-
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.apache.lucene.gdata.gom.core.AtomParser#getChildParser(javax.xml.namespace.QName)
- */
- public AtomParser getChildParser(QName aName) {
- throw new GDataParseException(String.format(UNEXPECTED_ELEMENT_CHILD,
- this.qname));
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.apache.lucene.gdata.gom.core.AtomParser#processAttribute(javax.xml.namespace.QName,
- * java.lang.String)
- */
- public void processAttribute(QName aQName, String aValue) {
- if (aQName == null)
- throw new GDataParseException("QName must not be null");
- if (aQName.getNamespaceURI().equals(GOMNamespace.XML_NS_URI)) {
- if (aQName.getLocalPart().equals(XML_BASE))
- this.xmlBase = aValue;
- else if (aQName.getLocalPart().equals(XML_LANG))
- this.xmlLang = aValue;
-
- } else {
- GOMAttributeImpl impl = new GOMAttributeImpl(aQName
- .getNamespaceURI(), aQName.getPrefix(), aQName
- .getLocalPart(), aValue);
- this.addAttribute(impl);
- }
-
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.apache.lucene.gdata.gom.core.AtomParser#processElementValue(java.lang.String)
- */
- public void processElementValue(String aValue) {
- throw new GDataParseException(String.format(UNEXPECTED_ELEMENT_VALUE,
- this.qname));
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.apache.lucene.gdata.gom.core.AtomParser#processEndElement()
- */
- public void processEndElement() {
- // no post processing
-
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.apache.lucene.gdata.gom.GOMXmlEntity#setNamespaceUri(java.lang.String)
- */
- public void setNamespaceUri(String aString) {
- this.nsUri = aString;
-
- }
-
- /**
- *
- * {@inheritDoc}
- *
- * @see org.apache.lucene.gdata.gom.GOMXmlEntity#setNamespacePrefix(java.lang.String)
- */
- public void setNamespacePrefix(String aString) {
- this.nsPrefix = aString;
- }
-
- protected List