You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@abdera.apache.org by jm...@apache.org on 2007/09/13 20:49:42 UTC

svn commit: r575400 [1/3] - in /incubator/abdera/java/trunk/extensions/converters: ./ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/abdera/ src/main/java/org/apache/abdera/converter/ src/main/java/o...

Author: jmsnell
Date: Thu Sep 13 11:49:38 2007
New Revision: 575400

URL: http://svn.apache.org/viewvc?rev=575400&view=rev
Log:
Initial (and still incomplete) implementation of the Annotation and convention based Java-to-Atom converter.  Test case is included.  There's still more to do.  This has not yet been added to the build.

Added:
    incubator/abdera/java/trunk/extensions/converters/
    incubator/abdera/java/trunk/extensions/converters/src/
    incubator/abdera/java/trunk/extensions/converters/src/main/
    incubator/abdera/java/trunk/extensions/converters/src/main/java/
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/AbstractConventions.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/BaseConverter.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/ConventionConversionContext.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/Conventions.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/DefaultConventions.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Accept.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Author.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/BaseURI.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Categories.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Category.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Collection.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Content.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/ContentType.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Contributor.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Control.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Convention.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Direction.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Draft.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Edited.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Email.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Entry.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Extension.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Feed.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Generator.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Href.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/HrefLanguage.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/ID.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/IRI.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Icon.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Label.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Language.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Length.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Link.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Logo.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/MediaType.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Name.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Published.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Rel.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Rights.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Scheme.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Service.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Source.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Src.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Subtitle.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Summary.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Term.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/TextType.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Title.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/URI.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Updated.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Value.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Version.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Workspace.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/impl/
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/impl/CategoryConverter.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/impl/ContentConverter.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/impl/DateTimeConverter.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/impl/EntryConverter.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/impl/FeedConverter.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/impl/GeneratorConverter.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/impl/IRIConverter.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/impl/LinkConverter.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/impl/PersonConverter.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/impl/QNameConverter.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/impl/SourceConverter.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/impl/StringConverter.java
    incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/impl/TextConverter.java
    incubator/abdera/java/trunk/extensions/converters/src/test/
    incubator/abdera/java/trunk/extensions/converters/src/test/java/
    incubator/abdera/java/trunk/extensions/converters/src/test/java/org/
    incubator/abdera/java/trunk/extensions/converters/src/test/java/org/apache/
    incubator/abdera/java/trunk/extensions/converters/src/test/java/org/apache/abdera/
    incubator/abdera/java/trunk/extensions/converters/src/test/java/org/apache/abdera/test/
    incubator/abdera/java/trunk/extensions/converters/src/test/java/org/apache/abdera/test/converter/
    incubator/abdera/java/trunk/extensions/converters/src/test/java/org/apache/abdera/test/converter/ConventionsTest.java
    incubator/abdera/java/trunk/extensions/converters/src/test/java/org/apache/abdera/test/converter/ConverterTest.java

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/AbstractConventions.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/AbstractConventions.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/AbstractConventions.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/AbstractConventions.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,124 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter;
+
+import java.io.Serializable;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.AccessibleObject;
+import java.lang.reflect.Member;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import org.apache.abdera.converter.annotation.Convention;
+
+public abstract class AbstractConventions
+    implements Conventions, 
+               Cloneable,
+               Serializable {
+  
+  private final Map<Class<? extends Annotation>,Pattern> conventions = 
+    new HashMap<Class<? extends Annotation>,Pattern>();
+  private final boolean isCaseSensitive;
+  
+  protected AbstractConventions() {
+    this(false);
+  }
+  
+  protected AbstractConventions(boolean isCaseSensitive) {
+    this.isCaseSensitive = isCaseSensitive;
+  }
+
+  public void setConvention(
+    String pattern,
+    Class<? extends Annotation> annotationType) {
+      Pattern regex = 
+        isCaseSensitive ? 
+          Pattern.compile(pattern) : 
+          Pattern.compile(pattern,Pattern.CASE_INSENSITIVE);
+        conventions.put(annotationType, regex);
+  }
+  
+  public void setConvention(
+    Class<? extends Annotation> annotationType) {
+      Convention conv = annotationType.getAnnotation(Convention.class);
+      if (conv == null) 
+        throw new IllegalArgumentException(
+          "No Convention Annotation [" + annotationType + "]");
+      setConvention(conv.value(),annotationType);
+  }
+  
+  public Class<? extends Annotation> matchConvention(
+    AccessibleObject accessor) {
+      return matchConvention(accessor, null);
+  }
+
+  public Class<? extends Annotation> matchConvention(
+    AccessibleObject accessor, 
+    Class<? extends Annotation> expect) {
+      if (accessor == null) return null;
+      String name = ((Member)accessor).getName();
+      for (Map.Entry<Class<? extends Annotation>, Pattern> entry : conventions.entrySet()) {
+        if (entry.getValue().matcher(name).matches() && 
+           (expect == null || expect == entry.getKey()))
+          return entry.getKey();
+      }
+      return null;
+  }
+  
+  public boolean isMatch(
+    AccessibleObject accessor, 
+    Class<? extends Annotation> expect) {
+      return matchConvention(accessor,expect) != null;
+  }
+
+  @Override
+  public int hashCode() {
+    final int PRIME = 31;
+    int result = 1;
+    result = PRIME * result + ((conventions == null) ? 0 : conventions.hashCode());
+    result = PRIME * result + (isCaseSensitive ? 1231 : 1237);
+    return result;
+  }
+
+  @Override
+  public boolean equals(Object obj) {
+    if (this == obj) return true;
+    if (obj == null) return false;
+    if (getClass() != obj.getClass()) return false;
+    final AbstractConventions other = (AbstractConventions) obj;
+    if (conventions == null) {
+      if (other.conventions != null) return false;
+    } else if (!conventions.equals(other.conventions)) return false;
+    if (isCaseSensitive != other.isCaseSensitive) return false;
+    return true;
+  }
+ 
+  public Conventions clone() {
+    try {
+      return (Conventions)super.clone();
+    } catch (CloneNotSupportedException e) {
+      return copy();
+    }
+  }
+  
+  protected Conventions copy() {
+    throw new ConversionException(
+      new CloneNotSupportedException());
+  }
+}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/BaseConverter.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/BaseConverter.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/BaseConverter.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/BaseConverter.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,136 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.AccessibleObject;
+import java.lang.reflect.AnnotatedElement;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Dictionary;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+@SuppressWarnings("unchecked")
+public abstract class BaseConverter<T> 
+  extends Converter<T> {
+  
+  protected abstract T create(ConversionContext context);
+  
+  protected void init(
+    Object source, 
+    ObjectContext objectContext, 
+    ConversionContext context, 
+    T dest) {}
+  
+  protected void finish(
+    Object source, 
+    ObjectContext objectContext, 
+    ConversionContext context, 
+    T dest) {}
+
+  protected void process(
+    Object source, 
+    ObjectContext 
+    objectContext, 
+    ConversionContext context,
+    Conventions conventions,
+    T dest,
+    AccessibleObject accessor) {}
+  
+  @Override 
+  public T convert(
+    Object source, 
+    ObjectContext objectContext,
+    ConversionContext context) {    
+      T dest = create(context);
+      init(
+        source, 
+        objectContext, 
+        context, 
+        dest);
+      Conventions conventions = 
+        ((ConventionConversionContext)context)
+          .getConventions();
+      for (AccessibleObject accessor : objectContext.getAccessors()) {
+        process(source, objectContext, context, conventions, dest, accessor);
+      }      
+      finish(
+        source, 
+        objectContext, 
+        context, 
+        dest);
+      return dest;      
+  }
+    
+  protected Object eval(AccessibleObject accessor, Object parent) {
+    try {
+      if (accessor instanceof Field) 
+        return ((Field)accessor).get(parent);
+      else if (accessor instanceof Method) 
+        return ((Method)accessor).invoke(parent, new Object[0]);
+      else return null;
+    } catch (Throwable t) {
+      throw new ConversionException(t);
+    }
+  }
+  
+  protected boolean hasAnnotation(
+    AnnotatedElement item, 
+    Class<? extends Annotation> annotation) {
+      return item.isAnnotationPresent(annotation);
+  }
+  
+  protected Object[] toArray(Object value) {
+    if (value == null) return new Object[0];
+    if (value.getClass().isArray()) {
+      return (Object[])value;
+    } else if (value instanceof Collection) { 
+      return ((Collection)value).toArray();
+    } else if (value instanceof Map) {
+      return ((Map)value).values().toArray();
+    } else if (value instanceof Dictionary) {
+      List<Object> list = new ArrayList<Object>();
+      Enumeration e = ((Dictionary)value).elements();
+      while(e.hasMoreElements()) list.add(e.nextElement());
+      return list.toArray();
+    } else if (value instanceof Iterator) { 
+      List<Object> list = new ArrayList<Object>();
+      Iterator i = (Iterator) value;
+      while(i.hasNext()) list.add(i.next());
+      return list.toArray();
+    } else if (value instanceof Enumeration) {
+      List<Object> list = new ArrayList<Object>();
+      Enumeration e = (Enumeration) value;
+      while(e.hasMoreElements()) list.add(e.nextElement());
+      return list.toArray();
+    } else if (value instanceof Iterable) {
+      List<Object> list = new ArrayList<Object>();
+      Iterable v = (Iterable) value;
+      Iterator i = v.iterator();
+      while(i.hasNext()) list.add(i.next());
+      return list.toArray();
+    } else {
+      return new Object[] {value};
+    }
+  }
+}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/ConventionConversionContext.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/ConventionConversionContext.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/ConventionConversionContext.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/ConventionConversionContext.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,91 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.AccessibleObject;
+
+import org.apache.abdera.Abdera;
+import org.apache.abdera.converter.annotation.Feed;
+
+public class ConventionConversionContext 
+  extends DefaultConversionContext {
+
+  private static final long serialVersionUID = 7504071837124132972L;
+  
+  protected Conventions conventions;
+  
+  public ConventionConversionContext() {
+    this(new Abdera());
+  }
+
+  public ConventionConversionContext(
+    Conventions conventions) {
+      this(null,conventions);
+  }
+  
+  public ConventionConversionContext(
+    Abdera abdera) {
+      super(abdera);
+      this.conventions = new DefaultConventions();
+      initConverters();
+  }
+  
+  public ConventionConversionContext(
+    Abdera abdera, 
+    Conventions conventions) {
+      super(abdera);
+      this.conventions = conventions;
+      initConverters();
+  }
+
+  public Conventions getConventions() {
+    return conventions;
+  }
+  
+  public void setConventions(Conventions conventions) {
+    this.conventions = conventions;
+  }
+  
+  public boolean hasConverter(AccessibleObject accessor) {
+    boolean answer = super.hasConverter(accessor);
+    if (answer) return true;
+    Class<? extends Annotation> annotation = 
+      getConventions().matchConvention(accessor);
+    return annotation != null && hasConverter(annotation);
+  }
+  
+  private void initConverters() {
+    for (Class<? extends Annotation> type : annotations) {
+      org.apache.abdera.converter.annotation.Converter converter = 
+        type.getAnnotation(org.apache.abdera.converter.annotation.Converter.class);
+      if (converter != null) {
+        try {
+          Converter<? extends Object> conv = converter.value().newInstance(); 
+          this.setConverter(type,conv);
+        } catch (Throwable t) {
+          throw new ConversionException(t);
+        }
+      }
+    }
+  }
+  
+  @SuppressWarnings("unchecked") private static final Class[] annotations = 
+  {Feed.class, 
+  };
+}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/Conventions.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/Conventions.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/Conventions.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/Conventions.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,47 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter;
+
+import java.io.Serializable;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.AccessibleObject;
+
+public interface Conventions
+  extends Serializable, 
+          Cloneable {
+  
+  void setConvention(
+    Class<? extends Annotation> annotationType);
+  
+  void setConvention(
+    String pattern, 
+    Class<? extends Annotation> annotationType);
+  
+  Class<? extends Annotation> matchConvention(
+    AccessibleObject accessor);
+  
+  Class<? extends Annotation> matchConvention(
+    AccessibleObject accessor, 
+    Class<? extends Annotation> expect);
+  
+  boolean isMatch(
+    AccessibleObject accessor, 
+    Class<? extends Annotation> expect);
+  
+  Conventions clone();
+}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/DefaultConventions.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/DefaultConventions.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/DefaultConventions.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/DefaultConventions.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,122 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter;
+
+import java.lang.annotation.Annotation;
+
+import org.apache.abdera.converter.annotation.Accept;
+import org.apache.abdera.converter.annotation.Author;
+import org.apache.abdera.converter.annotation.BaseURI;
+import org.apache.abdera.converter.annotation.Categories;
+import org.apache.abdera.converter.annotation.Category;
+import org.apache.abdera.converter.annotation.Collection;
+import org.apache.abdera.converter.annotation.Content;
+import org.apache.abdera.converter.annotation.ContentType;
+import org.apache.abdera.converter.annotation.Contributor;
+import org.apache.abdera.converter.annotation.Control;
+import org.apache.abdera.converter.annotation.Direction;
+import org.apache.abdera.converter.annotation.Draft;
+import org.apache.abdera.converter.annotation.Edited;
+import org.apache.abdera.converter.annotation.Email;
+import org.apache.abdera.converter.annotation.Entry;
+import org.apache.abdera.converter.annotation.Extension;
+import org.apache.abdera.converter.annotation.Generator;
+import org.apache.abdera.converter.annotation.Href;
+import org.apache.abdera.converter.annotation.HrefLanguage;
+import org.apache.abdera.converter.annotation.ID;
+import org.apache.abdera.converter.annotation.Icon;
+import org.apache.abdera.converter.annotation.Label;
+import org.apache.abdera.converter.annotation.Language;
+import org.apache.abdera.converter.annotation.Length;
+import org.apache.abdera.converter.annotation.Link;
+import org.apache.abdera.converter.annotation.Logo;
+import org.apache.abdera.converter.annotation.MediaType;
+import org.apache.abdera.converter.annotation.Name;
+import org.apache.abdera.converter.annotation.Published;
+import org.apache.abdera.converter.annotation.Rel;
+import org.apache.abdera.converter.annotation.Rights;
+import org.apache.abdera.converter.annotation.Scheme;
+import org.apache.abdera.converter.annotation.Source;
+import org.apache.abdera.converter.annotation.Src;
+import org.apache.abdera.converter.annotation.Subtitle;
+import org.apache.abdera.converter.annotation.Term;
+import org.apache.abdera.converter.annotation.TextType;
+import org.apache.abdera.converter.annotation.Title;
+import org.apache.abdera.converter.annotation.URI;
+import org.apache.abdera.converter.annotation.Updated;
+import org.apache.abdera.converter.annotation.Value;
+import org.apache.abdera.converter.annotation.Version;
+import org.apache.abdera.converter.annotation.Workspace;
+
+public class DefaultConventions
+    extends AbstractConventions {
+
+  private static final long serialVersionUID = 6797950641657672805L;
+
+  @SuppressWarnings("unchecked") private static final Class[] annotations = 
+   {Accept.class, 
+    Author.class, 
+    BaseURI.class, 
+    Categories.class, 
+    Category.class, 
+    Collection.class, 
+    Content.class, 
+    ContentType.class, 
+    Contributor.class, 
+    Control.class, 
+    Direction.class, 
+    Draft.class, 
+    Edited.class, 
+    Email.class, 
+    Entry.class, 
+    Extension.class, 
+    Generator.class, 
+    Href.class, 
+    HrefLanguage.class, 
+    Icon.class, 
+    ID.class, 
+    Label.class, 
+    Language.class, 
+    Length.class, 
+    Link.class, 
+    Logo.class, 
+    MediaType.class, 
+    Name.class, 
+    Published.class, 
+    Rel.class, 
+    Rights.class, 
+    Scheme.class, 
+    Source.class, 
+    Src.class, 
+    Subtitle.class, 
+    Term.class, 
+    TextType.class, 
+    Title.class, 
+    Updated.class, 
+    URI.class, 
+    Value.class, 
+    Version.class, 
+    Workspace.class
+   };
+  
+  public DefaultConventions() {
+    super(false);
+    for (Class<Annotation> type : annotations) setConvention(type);
+  }
+  
+}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Accept.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Accept.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Accept.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Accept.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,30 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter.annotation;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target({METHOD,FIELD})
+@Convention(".*accept")
+public @interface Accept {}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Author.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Author.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Author.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Author.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,31 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter.annotation;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.TYPE;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target({TYPE,METHOD,FIELD})
+@Convention(".*author")
+public @interface Author {}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/BaseURI.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/BaseURI.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/BaseURI.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/BaseURI.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,30 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter.annotation;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target({METHOD,FIELD})
+@Convention(".*baseuri")
+public @interface BaseURI {}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Categories.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Categories.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Categories.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Categories.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,31 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter.annotation;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target({TYPE,METHOD,FIELD})
+@Convention(".*categories")
+public @interface Categories {}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Category.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Category.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Category.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Category.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,34 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter.annotation;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.TYPE;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target({TYPE,METHOD,FIELD})
+@Convention(".*category|.*categories")
+public @interface Category {
+  String scheme() default "##default";
+  String label() default "##default";
+}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Collection.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Collection.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Collection.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Collection.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,31 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter.annotation;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target({TYPE,METHOD,FIELD})
+@Convention(".*collection")
+public @interface Collection {}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Content.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Content.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Content.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Content.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,31 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter.annotation;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.TYPE;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target({TYPE,METHOD,FIELD})
+@Convention(".*content")
+public @interface Content {}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/ContentType.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/ContentType.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/ContentType.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/ContentType.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,35 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter.annotation;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import org.apache.abdera.model.Content;
+
+@Retention(RUNTIME)
+@Target({TYPE,METHOD,FIELD})
+@Convention(".*contenttype")
+public @interface ContentType {
+  Content.Type value() default Content.Type.TEXT;
+}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Contributor.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Contributor.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Contributor.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Contributor.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,30 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter.annotation;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target({METHOD,FIELD})
+@Convention(".*contributor")
+public @interface Contributor {}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Control.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Control.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Control.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Control.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,30 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter.annotation;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target({METHOD,FIELD})
+@Convention(".*control")
+public @interface Control {}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Convention.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Convention.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Convention.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Convention.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,30 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter.annotation;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target({ANNOTATION_TYPE})
+public @interface Convention {
+  String value();
+}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Direction.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Direction.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Direction.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Direction.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,35 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter.annotation;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.TYPE;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import org.apache.abdera.ext.bidi.BidiHelper;
+
+@Retention(RUNTIME)
+@Target({TYPE,METHOD,FIELD})
+@Convention(".*direction|.*dir")
+public @interface Direction {
+  BidiHelper.Direction value();
+}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Draft.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Draft.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Draft.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Draft.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,30 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter.annotation;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target({METHOD,FIELD})
+@Convention(".*draft")
+public @interface Draft {}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Edited.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Edited.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Edited.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Edited.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,30 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter.annotation;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target({METHOD,FIELD})
+@Convention(".*edited")
+public @interface Edited {}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Email.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Email.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Email.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Email.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,30 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter.annotation;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target({METHOD,FIELD})
+@Convention(".*email")
+public @interface Email {}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Entry.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Entry.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Entry.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Entry.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,31 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter.annotation;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.TYPE;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target({TYPE,METHOD,FIELD})
+@Convention(".*entry|.*entries")
+public @interface Entry {}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Extension.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Extension.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Extension.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Extension.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,36 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter.annotation;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.TYPE;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target({TYPE,METHOD,FIELD})
+@Convention(".*extension")
+public @interface Extension {
+  boolean simple() default false;
+  String name()   default "##default";
+  String ns()     default "##default";
+  String prefix() default "##default";
+}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Feed.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Feed.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Feed.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Feed.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,32 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter.annotation;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.TYPE;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import org.apache.abdera.converter.impl.FeedConverter;
+
+@Retention(RUNTIME)
+@Target({TYPE})
+@Convention(".*feed")
+@Converter(FeedConverter.class)
+public @interface Feed {}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Generator.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Generator.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Generator.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Generator.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,34 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter.annotation;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.TYPE;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target({TYPE,METHOD,FIELD})
+@Convention(".*generator")
+public @interface Generator {
+  String version() default "##default";
+  String uri() default "##default";
+}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Href.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Href.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Href.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Href.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,30 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter.annotation;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target({METHOD,FIELD})
+@Convention(".*href")
+public @interface Href {}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/HrefLanguage.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/HrefLanguage.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/HrefLanguage.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/HrefLanguage.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,32 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter.annotation;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target({METHOD,FIELD})
+@Convention(".*hreflang|.*hreflanguage")
+public @interface HrefLanguage {
+  String value() default "##default";
+}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/ID.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/ID.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/ID.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/ID.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,30 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter.annotation;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target({METHOD,FIELD})
+@Convention(".*id")
+public @interface ID {}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/IRI.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/IRI.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/IRI.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/IRI.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,28 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter.annotation;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.TYPE;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target({TYPE})
+public @interface IRI {}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Icon.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Icon.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Icon.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Icon.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,30 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter.annotation;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target({METHOD,FIELD})
+@Convention(".*icon")
+public @interface Icon {}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Label.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Label.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Label.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Label.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,30 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter.annotation;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target({METHOD,FIELD})
+@Convention(".*label")
+public @interface Label {}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Language.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Language.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Language.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Language.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,33 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter.annotation;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.TYPE;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target({TYPE,METHOD,FIELD})
+@Convention(".*lang|.*language")
+public @interface Language {
+  String value() default "##default";
+}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Length.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Length.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Length.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Length.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,30 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter.annotation;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target({METHOD,FIELD})
+@Convention(".*hreflength")
+public @interface Length {}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Link.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Link.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Link.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Link.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,36 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter.annotation;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.TYPE;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target({TYPE,METHOD,FIELD})
+@Convention(".*link")
+public @interface Link {
+  String rel() default "##default";
+  String type() default "##default";
+  String hreflang() default "##default";
+  String title() default "##default";
+}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Logo.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Logo.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Logo.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/Logo.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,30 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter.annotation;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target({METHOD,FIELD})
+@Convention(".*logo")
+public @interface Logo {}

Added: incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/MediaType.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/MediaType.java?rev=575400&view=auto
==============================================================================
--- incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/MediaType.java (added)
+++ incubator/abdera/java/trunk/extensions/converters/src/main/java/org/apache/abdera/converter/annotation/MediaType.java Thu Sep 13 11:49:38 2007
@@ -0,0 +1,32 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  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.  For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.abdera.converter.annotation;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target({METHOD,FIELD})
+@Convention(".*mediatype")
+public @interface MediaType {
+  String value() default "##default";
+}