Return-Path: X-Original-To: apmail-felix-commits-archive@www.apache.org Delivered-To: apmail-felix-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id CF331C123 for ; Thu, 19 Jul 2012 13:11:50 +0000 (UTC) Received: (qmail 7721 invoked by uid 500); 19 Jul 2012 13:11:50 -0000 Delivered-To: apmail-felix-commits-archive@felix.apache.org Received: (qmail 7548 invoked by uid 500); 19 Jul 2012 13:11:46 -0000 Mailing-List: contact commits-help@felix.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@felix.apache.org Delivered-To: mailing list commits@felix.apache.org Received: (qmail 7507 invoked by uid 99); 19 Jul 2012 13:11:45 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 19 Jul 2012 13:11:45 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 19 Jul 2012 13:11:42 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 11C872388A91 for ; Thu, 19 Jul 2012 13:11:23 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1363322 - in /felix/trunk/bundleplugin/src/main/java/aQute: bnd/build/ bnd/build/model/ bnd/build/model/conversions/ bnd/component/ bnd/differ/ bnd/filerepo/ bnd/header/ bnd/make/component/ bnd/maven/ bnd/maven/support/ bnd/osgi/ bnd/osgi/... Date: Thu, 19 Jul 2012 13:11:21 -0000 To: commits@felix.apache.org From: mcculls@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120719131123.11C872388A91@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: mcculls Date: Thu Jul 19 13:11:20 2012 New Revision: 1363322 URL: http://svn.apache.org/viewvc?rev=1363322&view=rev Log: Sync with latest bnd code Added: felix/trunk/bundleplugin/src/main/java/aQute/bnd/version/ felix/trunk/bundleplugin/src/main/java/aQute/bnd/version/Version.java (with props) felix/trunk/bundleplugin/src/main/java/aQute/bnd/version/VersionRange.java (with props) felix/trunk/bundleplugin/src/main/java/aQute/bnd/version/packageinfo Removed: felix/trunk/bundleplugin/src/main/java/aQute/bnd/build/model/LowerVersionMatchType.java felix/trunk/bundleplugin/src/main/java/aQute/bnd/build/model/UpperVersionMatchType.java felix/trunk/bundleplugin/src/main/java/aQute/bnd/build/model/VersionPolicy.java felix/trunk/bundleplugin/src/main/java/aQute/bnd/build/model/conversions/packageinfo felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/TagResource.java felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/Version.java felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/VersionRange.java felix/trunk/bundleplugin/src/main/java/aQute/bnd/properties/PropertiesReader.java felix/trunk/bundleplugin/src/main/java/aQute/libg/reporter/Messages.java Modified: felix/trunk/bundleplugin/src/main/java/aQute/bnd/build/Project.java felix/trunk/bundleplugin/src/main/java/aQute/bnd/build/ProjectMessages.java felix/trunk/bundleplugin/src/main/java/aQute/bnd/build/WorkspaceRepository.java felix/trunk/bundleplugin/src/main/java/aQute/bnd/build/model/BndEditModel.java felix/trunk/bundleplugin/src/main/java/aQute/bnd/component/AnnotationReader.java felix/trunk/bundleplugin/src/main/java/aQute/bnd/component/ComponentDef.java felix/trunk/bundleplugin/src/main/java/aQute/bnd/component/ReferenceDef.java felix/trunk/bundleplugin/src/main/java/aQute/bnd/differ/Baseline.java felix/trunk/bundleplugin/src/main/java/aQute/bnd/differ/JavaElement.java felix/trunk/bundleplugin/src/main/java/aQute/bnd/differ/RepositoryElement.java felix/trunk/bundleplugin/src/main/java/aQute/bnd/filerepo/FileRepo.java felix/trunk/bundleplugin/src/main/java/aQute/bnd/header/Attrs.java felix/trunk/bundleplugin/src/main/java/aQute/bnd/make/component/ComponentAnnotationReader.java felix/trunk/bundleplugin/src/main/java/aQute/bnd/make/component/ServiceComponent.java felix/trunk/bundleplugin/src/main/java/aQute/bnd/maven/MavenRepository.java felix/trunk/bundleplugin/src/main/java/aQute/bnd/maven/PomFromManifest.java felix/trunk/bundleplugin/src/main/java/aQute/bnd/maven/support/MavenRemoteRepository.java felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/Analyzer.java felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/Builder.java felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/Domain.java felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/Jar.java felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/Macro.java felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/resource/Filters.java felix/trunk/bundleplugin/src/main/java/aQute/bnd/properties/packageinfo felix/trunk/bundleplugin/src/main/java/aQute/bnd/repo/eclipse/EclipseRepo.java felix/trunk/bundleplugin/src/main/java/aQute/bnd/service/RepositoryPlugin.java felix/trunk/bundleplugin/src/main/java/aQute/lib/deployer/FileInstallRepo.java felix/trunk/bundleplugin/src/main/java/aQute/lib/deployer/FileRepo.java Modified: felix/trunk/bundleplugin/src/main/java/aQute/bnd/build/Project.java URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/aQute/bnd/build/Project.java?rev=1363322&r1=1363321&r2=1363322&view=diff ============================================================================== --- felix/trunk/bundleplugin/src/main/java/aQute/bnd/build/Project.java (original) +++ felix/trunk/bundleplugin/src/main/java/aQute/bnd/build/Project.java Thu Jul 19 13:11:20 2012 @@ -16,6 +16,7 @@ import aQute.bnd.osgi.eclipse.*; import aQute.bnd.service.*; import aQute.bnd.service.RepositoryPlugin.Strategy; import aQute.bnd.service.action.*; +import aQute.bnd.version.*; import aQute.lib.io.*; import aQute.libg.generics.*; import aQute.libg.reporter.*; Modified: felix/trunk/bundleplugin/src/main/java/aQute/bnd/build/ProjectMessages.java URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/aQute/bnd/build/ProjectMessages.java?rev=1363322&r1=1363321&r2=1363322&view=diff ============================================================================== --- felix/trunk/bundleplugin/src/main/java/aQute/bnd/build/ProjectMessages.java (original) +++ felix/trunk/bundleplugin/src/main/java/aQute/bnd/build/ProjectMessages.java Thu Jul 19 13:11:20 2012 @@ -6,6 +6,7 @@ import java.util.*; import aQute.bnd.osgi.*; import aQute.bnd.service.*; import aQute.bnd.service.RepositoryPlugin.Strategy; +import aQute.bnd.version.*; import aQute.service.reporter.*; public interface ProjectMessages extends Messages { Modified: felix/trunk/bundleplugin/src/main/java/aQute/bnd/build/WorkspaceRepository.java URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/aQute/bnd/build/WorkspaceRepository.java?rev=1363322&r1=1363321&r2=1363322&view=diff ============================================================================== --- felix/trunk/bundleplugin/src/main/java/aQute/bnd/build/WorkspaceRepository.java (original) +++ felix/trunk/bundleplugin/src/main/java/aQute/bnd/build/WorkspaceRepository.java Thu Jul 19 13:11:20 2012 @@ -6,6 +6,7 @@ import java.util.regex.*; import aQute.bnd.osgi.*; import aQute.bnd.service.*; +import aQute.bnd.version.*; public class WorkspaceRepository implements RepositoryPlugin { private final Workspace workspace; Modified: felix/trunk/bundleplugin/src/main/java/aQute/bnd/build/model/BndEditModel.java URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/aQute/bnd/build/model/BndEditModel.java?rev=1363322&r1=1363321&r2=1363322&view=diff ============================================================================== --- felix/trunk/bundleplugin/src/main/java/aQute/bnd/build/model/BndEditModel.java (original) +++ felix/trunk/bundleplugin/src/main/java/aQute/bnd/build/model/BndEditModel.java Thu Jul 19 13:11:20 2012 @@ -12,6 +12,7 @@ import aQute.bnd.build.model.conversions import aQute.bnd.header.*; import aQute.bnd.osgi.*; import aQute.bnd.properties.*; +import aQute.bnd.version.*; import aQute.libg.tuple.*; /** @@ -26,9 +27,9 @@ public class BndEditModel { public static final String LINE_SEPARATOR = " \\\n\t"; public static final String LIST_SEPARATOR = ",\\\n\t"; - protected static final String ISO_8859_1 = "ISO-8859-1"; //$NON-NLS-1$ + private static final String ISO_8859_1 = "ISO-8859-1"; //$NON-NLS-1$ - protected static String[] KNOWN_PROPERTIES = new String[] { + private static String[] KNOWN_PROPERTIES = new String[] { Constants.BUNDLE_SYMBOLICNAME, Constants.BUNDLE_VERSION, Constants.BUNDLE_ACTIVATOR, Constants.EXPORT_PACKAGE, Constants.IMPORT_PACKAGE, aQute.bnd.osgi.Constants.PRIVATE_PACKAGE, aQute.bnd.osgi.Constants.SOURCES, @@ -46,8 +47,8 @@ public class BndEditModel { + Constants.BUNDLE_VERSION + "}"; - protected final Map> converters = new HashMap>(); - protected final Map> formatters = new HashMap>(); + private final Map> converters = new HashMap>(); + private final Map> formatters = new HashMap>(); // private final DataModelHelper obrModelHelper = new DataModelHelperImpl(); private final PropertyChangeSupport propChangeSupport = new PropertyChangeSupport( @@ -60,7 +61,7 @@ public class BndEditModel { private final Map changesToSave = new HashMap(); // CONVERTERS - protected Converter,String> buildPathConverter = new ClauseListConverter( + private Converter,String> buildPathConverter = new ClauseListConverter( new Converter>() { public VersionedClause convert( Pair input) @@ -70,7 +71,7 @@ public class BndEditModel { input.getSecond()); } }); - protected Converter,String> buildPackagesConverter = new ClauseListConverter( + private Converter,String> buildPackagesConverter = new ClauseListConverter( new Converter>() { public VersionedClause convert( Pair input) @@ -80,10 +81,10 @@ public class BndEditModel { input.getSecond()); } }); - protected Converter,String> clauseListConverter = new ClauseListConverter( + private Converter,String> clauseListConverter = new ClauseListConverter( new VersionedClauseConverter()); - protected Converter stringConverter = new NoopConverter(); - protected Converter includedSourcesConverter = new Converter() { + private Converter stringConverter = new NoopConverter(); + private Converter includedSourcesConverter = new Converter() { public Boolean convert( String string) throws IllegalArgumentException { @@ -91,18 +92,10 @@ public class BndEditModel { .valueOf(string); } }; - protected Converter versionPolicyConverter = new Converter() { - public VersionPolicy convert( - String string) - throws IllegalArgumentException { - return VersionPolicy - .parse(string); - } - }; - protected Converter,String> listConverter = SimpleListConverter + private Converter,String> listConverter = SimpleListConverter .create(); - protected Converter,String> headerClauseListConverter = new HeaderClauseListConverter(); - protected ClauseListConverter exportPackageConverter = new ClauseListConverter( + private Converter,String> headerClauseListConverter = new HeaderClauseListConverter(); + private ClauseListConverter exportPackageConverter = new ClauseListConverter( new Converter>() { public ExportedPackage convert( Pair input) { @@ -111,7 +104,7 @@ public class BndEditModel { input.getSecond()); } }); - protected Converter,String> serviceComponentConverter = new ClauseListConverter( + private Converter,String> serviceComponentConverter = new ClauseListConverter( new Converter>() { public ServiceComponent convert( Pair input) @@ -121,7 +114,7 @@ public class BndEditModel { input.getSecond()); } }); - protected Converter,String> importPatternConverter = new ClauseListConverter( + private Converter,String> importPatternConverter = new ClauseListConverter( new Converter>() { public ImportPattern convert( Pair input) @@ -132,38 +125,38 @@ public class BndEditModel { } }); - protected Converter,String> propertiesConverter = new PropertiesConverter(); + private Converter,String> propertiesConverter = new PropertiesConverter(); - protected Converter,String> requirementListConverter = new RequirementListConverter(); - protected Converter eeConverter = new EEConverter(); + private Converter,String> requirementListConverter = new RequirementListConverter(); + private Converter eeConverter = new EEConverter(); // Converter resolveModeConverter = // EnumConverter.create(ResolveMode.class, ResolveMode.manual); // FORMATTERS - protected Converter defaultFormatter = new DefaultFormatter(); - protected Converter newlineEscapeFormatter = new NewlineEscapedStringFormatter(); - protected Converter defaultFalseBoolFormatter = new DefaultBooleanFormatter( + private Converter defaultFormatter = new DefaultFormatter(); + private Converter newlineEscapeFormatter = new NewlineEscapedStringFormatter(); + private Converter defaultFalseBoolFormatter = new DefaultBooleanFormatter( false); - protected Converter> stringListFormatter = new CollectionFormatter( + private Converter> stringListFormatter = new CollectionFormatter( LIST_SEPARATOR, (String) null); - protected Converter> headerClauseListFormatter = new CollectionFormatter( + private Converter> headerClauseListFormatter = new CollectionFormatter( LIST_SEPARATOR, new HeaderClauseFormatter(), null); - protected Converter> propertiesFormatter = new MapFormatter( + private Converter> propertiesFormatter = new MapFormatter( LIST_SEPARATOR, new PropertiesEntryFormatter(), null); - protected Converter> requirementListFormatter = new CollectionFormatter( + private Converter> requirementListFormatter = new CollectionFormatter( LIST_SEPARATOR, new RequirementFormatter(), null); - protected Converter eeFormatter = new EEFormatter(); - Converter> runReposFormatter = new CollectionFormatter( + private Converter eeFormatter = new EEFormatter(); + private Converter> runReposFormatter = new CollectionFormatter( LIST_SEPARATOR, aQute.bnd.osgi.Constants.EMPTY_HEADER); @@ -267,7 +260,7 @@ public class BndEditModel { } } - protected static IRegion findEntry(IDocument document, String name) throws Exception { + private static IRegion findEntry(IDocument document, String name) throws Exception { PropertiesLineReader reader = new PropertiesLineReader(document); LineType type = reader.next(); while (type != LineType.eof) { @@ -281,7 +274,7 @@ public class BndEditModel { return null; } - protected static void updateDocument(IDocument document, String name, String value) { + private static void updateDocument(IDocument document, String name, String value) { String newEntry; if (value != null) { StringBuilder buffer = new StringBuilder(); @@ -642,7 +635,7 @@ public class BndEditModel { } - protected R doGetObject(String name, Converter< ? extends R, ? super String> converter) { + private R doGetObject(String name, Converter< ? extends R, ? super String> converter) { R result; if (objectProperties.containsKey(name)) { R temp = (R) objectProperties.get(name); @@ -659,7 +652,7 @@ public class BndEditModel { return result; } - protected void doSetObject(String name, T oldValue, T newValue, Converter formatter) { + private void doSetObject(String name, T oldValue, T newValue, Converter formatter) { objectProperties.put(name, newValue); changesToSave.put(name, formatter.convert(newValue)); propChangeSupport.firePropertyChange(name, oldValue, newValue); Modified: felix/trunk/bundleplugin/src/main/java/aQute/bnd/component/AnnotationReader.java URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/aQute/bnd/component/AnnotationReader.java?rev=1363322&r1=1363321&r2=1363322&view=diff ============================================================================== --- felix/trunk/bundleplugin/src/main/java/aQute/bnd/component/AnnotationReader.java (original) +++ felix/trunk/bundleplugin/src/main/java/aQute/bnd/component/AnnotationReader.java Thu Jul 19 13:11:20 2012 @@ -9,6 +9,7 @@ import org.osgi.service.component.annota import aQute.bnd.osgi.*; import aQute.bnd.osgi.Clazz.MethodDef; import aQute.bnd.osgi.Descriptors.TypeRef; +import aQute.bnd.version.*; import aQute.lib.collections.*; /** @@ -26,7 +27,7 @@ import aQute.lib.collections.*; public class AnnotationReader extends ClassDataCollector { final static TypeRef[] EMPTY = new TypeRef[0]; final static Pattern PROPERTY_PATTERN = Pattern - .compile("\\s*([^=]+(\\s*:\\s*(Boolean|Byte|Char|Short|Integer|Long|Float|Double|String))?)\\s*=(.*)"); + .compile("\\s*([^=\\s:]+)\\s*(?::\\s*(Boolean|Byte|Char|Short|Integer|Long|Float|Double|String)\\s*)?=(.*)"); public static final Version V1_1 = new Version("1.1.0"); // "1.1.0" public static final Version V1_2 = new Version("1.2.0"); // "1.1.0" @@ -308,7 +309,11 @@ public class AnnotationReader extends Cl if (m.matches()) { String key = m.group(1); - String value = m.group(4); + String type = m.group(2); + if ( type != null) + key += ":" + type; + + String value = m.group(3); component.property.add(key, value); } else throw new IllegalArgumentException("Malformed property '" + p + "' on component: " + className); Modified: felix/trunk/bundleplugin/src/main/java/aQute/bnd/component/ComponentDef.java URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/aQute/bnd/component/ComponentDef.java?rev=1363322&r1=1363321&r2=1363322&view=diff ============================================================================== --- felix/trunk/bundleplugin/src/main/java/aQute/bnd/component/ComponentDef.java (original) +++ felix/trunk/bundleplugin/src/main/java/aQute/bnd/component/ComponentDef.java Thu Jul 19 13:11:20 2012 @@ -7,6 +7,7 @@ import org.osgi.service.component.annota import aQute.bnd.osgi.*; import aQute.bnd.osgi.Descriptors.TypeRef; +import aQute.bnd.version.*; import aQute.lib.collections.*; import aQute.lib.tag.*; @@ -183,6 +184,9 @@ class ComponentDef { return v; try { + if ( type.equals("Char")) + type = "Character"; + Class< ? > c = Class.forName("java.lang." + type); if (c == String.class) return v; Modified: felix/trunk/bundleplugin/src/main/java/aQute/bnd/component/ReferenceDef.java URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/aQute/bnd/component/ReferenceDef.java?rev=1363322&r1=1363321&r2=1363322&view=diff ============================================================================== --- felix/trunk/bundleplugin/src/main/java/aQute/bnd/component/ReferenceDef.java (original) +++ felix/trunk/bundleplugin/src/main/java/aQute/bnd/component/ReferenceDef.java Thu Jul 19 13:11:20 2012 @@ -3,6 +3,7 @@ package aQute.bnd.component; import org.osgi.service.component.annotations.*; import aQute.bnd.osgi.*; +import aQute.bnd.version.*; import aQute.lib.tag.*; /** Modified: felix/trunk/bundleplugin/src/main/java/aQute/bnd/differ/Baseline.java URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/aQute/bnd/differ/Baseline.java?rev=1363322&r1=1363321&r2=1363322&view=diff ============================================================================== --- felix/trunk/bundleplugin/src/main/java/aQute/bnd/differ/Baseline.java (original) +++ felix/trunk/bundleplugin/src/main/java/aQute/bnd/differ/Baseline.java Thu Jul 19 13:11:20 2012 @@ -8,6 +8,7 @@ import aQute.bnd.header.*; import aQute.bnd.osgi.*; import aQute.bnd.service.diff.*; import aQute.bnd.service.diff.Diff.Ignore; +import aQute.bnd.version.*; import aQute.libg.generics.*; import aQute.service.reporter.*; Modified: felix/trunk/bundleplugin/src/main/java/aQute/bnd/differ/JavaElement.java URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/aQute/bnd/differ/JavaElement.java?rev=1363322&r1=1363321&r2=1363322&view=diff ============================================================================== --- felix/trunk/bundleplugin/src/main/java/aQute/bnd/differ/JavaElement.java (original) +++ felix/trunk/bundleplugin/src/main/java/aQute/bnd/differ/JavaElement.java Thu Jul 19 13:11:20 2012 @@ -17,9 +17,9 @@ import aQute.bnd.osgi.Clazz.JAVA; import aQute.bnd.osgi.Clazz.MethodDef; import aQute.bnd.osgi.Descriptors.PackageRef; import aQute.bnd.osgi.Descriptors.TypeRef; -import aQute.bnd.osgi.Version; import aQute.bnd.service.diff.*; import aQute.bnd.service.diff.Type; +import aQute.bnd.version.Version; import aQute.lib.collections.*; import aQute.libg.generics.*; Modified: felix/trunk/bundleplugin/src/main/java/aQute/bnd/differ/RepositoryElement.java URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/aQute/bnd/differ/RepositoryElement.java?rev=1363322&r1=1363321&r2=1363322&view=diff ============================================================================== --- felix/trunk/bundleplugin/src/main/java/aQute/bnd/differ/RepositoryElement.java (original) +++ felix/trunk/bundleplugin/src/main/java/aQute/bnd/differ/RepositoryElement.java Thu Jul 19 13:11:20 2012 @@ -5,6 +5,7 @@ import java.util.*; import aQute.bnd.osgi.*; import aQute.bnd.service.*; import aQute.bnd.service.diff.*; +import aQute.bnd.version.*; public class RepositoryElement { Modified: felix/trunk/bundleplugin/src/main/java/aQute/bnd/filerepo/FileRepo.java URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/aQute/bnd/filerepo/FileRepo.java?rev=1363322&r1=1363321&r2=1363322&view=diff ============================================================================== --- felix/trunk/bundleplugin/src/main/java/aQute/bnd/filerepo/FileRepo.java (original) +++ felix/trunk/bundleplugin/src/main/java/aQute/bnd/filerepo/FileRepo.java Thu Jul 19 13:11:20 2012 @@ -5,6 +5,7 @@ import java.util.*; import java.util.regex.*; import aQute.bnd.osgi.*; +import aQute.bnd.version.*; public class FileRepo { File root; Modified: felix/trunk/bundleplugin/src/main/java/aQute/bnd/header/Attrs.java URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/aQute/bnd/header/Attrs.java?rev=1363322&r1=1363321&r2=1363322&view=diff ============================================================================== --- felix/trunk/bundleplugin/src/main/java/aQute/bnd/header/Attrs.java (original) +++ felix/trunk/bundleplugin/src/main/java/aQute/bnd/header/Attrs.java Thu Jul 19 13:11:20 2012 @@ -4,6 +4,7 @@ import java.util.*; import java.util.regex.*; import aQute.bnd.osgi.*; +import aQute.bnd.version.*; import aQute.lib.collections.*; public class Attrs implements Map { Modified: felix/trunk/bundleplugin/src/main/java/aQute/bnd/make/component/ComponentAnnotationReader.java URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/aQute/bnd/make/component/ComponentAnnotationReader.java?rev=1363322&r1=1363321&r2=1363322&view=diff ============================================================================== --- felix/trunk/bundleplugin/src/main/java/aQute/bnd/make/component/ComponentAnnotationReader.java (original) +++ felix/trunk/bundleplugin/src/main/java/aQute/bnd/make/component/ComponentAnnotationReader.java Thu Jul 19 13:11:20 2012 @@ -256,7 +256,7 @@ public class ComponentAnnotationReader e return Modifier.isPublic(method.getAccess()) || Modifier.isProtected(method.getAccess()); } - static Pattern PROPERTY_PATTERN = Pattern.compile("\\s*([^=\\s])+\\s*=(.+)"); + static Pattern PROPERTY_PATTERN = Pattern.compile("\\s*([^=\\s]+)\\s*=(.+)"); private void doProperties(aQute.bnd.osgi.Annotation annotation) { Object[] properties = annotation.get(Component.PROPERTIES); Modified: felix/trunk/bundleplugin/src/main/java/aQute/bnd/make/component/ServiceComponent.java URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/aQute/bnd/make/component/ServiceComponent.java?rev=1363322&r1=1363321&r2=1363322&view=diff ============================================================================== --- felix/trunk/bundleplugin/src/main/java/aQute/bnd/make/component/ServiceComponent.java (original) +++ felix/trunk/bundleplugin/src/main/java/aQute/bnd/make/component/ServiceComponent.java Thu Jul 19 13:11:20 2012 @@ -12,6 +12,7 @@ import aQute.bnd.osgi.*; import aQute.bnd.osgi.Clazz.QUERY; import aQute.bnd.osgi.Descriptors.TypeRef; import aQute.bnd.service.*; +import aQute.bnd.version.*; /** * This class is an analyzer plugin. It looks at the properties and tries to Modified: felix/trunk/bundleplugin/src/main/java/aQute/bnd/maven/MavenRepository.java URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/aQute/bnd/maven/MavenRepository.java?rev=1363322&r1=1363321&r2=1363322&view=diff ============================================================================== --- felix/trunk/bundleplugin/src/main/java/aQute/bnd/maven/MavenRepository.java (original) +++ felix/trunk/bundleplugin/src/main/java/aQute/bnd/maven/MavenRepository.java Thu Jul 19 13:11:20 2012 @@ -6,6 +6,7 @@ import java.util.regex.*; import aQute.bnd.osgi.*; import aQute.bnd.service.*; +import aQute.bnd.version.*; import aQute.service.reporter.*; public class MavenRepository implements RepositoryPlugin, Plugin, BsnToMavenPath { Modified: felix/trunk/bundleplugin/src/main/java/aQute/bnd/maven/PomFromManifest.java URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/aQute/bnd/maven/PomFromManifest.java?rev=1363322&r1=1363321&r2=1363322&view=diff ============================================================================== --- felix/trunk/bundleplugin/src/main/java/aQute/bnd/maven/PomFromManifest.java (original) +++ felix/trunk/bundleplugin/src/main/java/aQute/bnd/maven/PomFromManifest.java Thu Jul 19 13:11:20 2012 @@ -8,6 +8,7 @@ import java.util.regex.*; import aQute.bnd.header.*; import aQute.bnd.osgi.*; +import aQute.bnd.version.*; import aQute.lib.io.*; import aQute.lib.tag.*; Modified: felix/trunk/bundleplugin/src/main/java/aQute/bnd/maven/support/MavenRemoteRepository.java URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/aQute/bnd/maven/support/MavenRemoteRepository.java?rev=1363322&r1=1363321&r2=1363322&view=diff ============================================================================== --- felix/trunk/bundleplugin/src/main/java/aQute/bnd/maven/support/MavenRemoteRepository.java (original) +++ felix/trunk/bundleplugin/src/main/java/aQute/bnd/maven/support/MavenRemoteRepository.java Thu Jul 19 13:11:20 2012 @@ -6,6 +6,7 @@ import java.util.*; import aQute.bnd.osgi.*; import aQute.bnd.service.*; +import aQute.bnd.version.*; import aQute.lib.io.*; import aQute.service.reporter.*; Modified: felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/Analyzer.java URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/Analyzer.java?rev=1363322&r1=1363321&r2=1363322&view=diff ============================================================================== --- felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/Analyzer.java (original) +++ felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/Analyzer.java Thu Jul 19 13:11:20 2012 @@ -35,6 +35,7 @@ import aQute.bnd.osgi.Descriptors.Descri import aQute.bnd.osgi.Descriptors.PackageRef; import aQute.bnd.osgi.Descriptors.TypeRef; import aQute.bnd.service.*; +import aQute.bnd.version.Version; import aQute.lib.base64.*; import aQute.lib.collections.*; import aQute.lib.filter.*; Modified: felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/Builder.java URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/Builder.java?rev=1363322&r1=1363321&r2=1363322&view=diff ============================================================================== --- felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/Builder.java (original) +++ felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/Builder.java Thu Jul 19 13:11:20 2012 @@ -117,6 +117,8 @@ public class Builder extends Analyzer { dot.updateModified(lastModified(), "Last Modified Processor"); dot.setName(getBsn()); + doDigests(dot); + sign(dot); doSaveManifest(dot); @@ -138,7 +140,7 @@ public class Builder extends Analyzer { return; trace("digests %s", ps); String[] digests = ps.keySet().toArray(new String[ps.size()]); - dot.calcChecksums(digests); + dot.setDigestAlgorithms(digests); } /** Modified: felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/Domain.java URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/Domain.java?rev=1363322&r1=1363321&r2=1363322&view=diff ============================================================================== --- felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/Domain.java (original) +++ felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/Domain.java Thu Jul 19 13:11:20 2012 @@ -7,6 +7,7 @@ import java.util.Map.Entry; import java.util.jar.*; import aQute.bnd.header.*; +import aQute.bnd.version.*; import aQute.lib.converter.*; import aQute.service.reporter.*; Modified: felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/Jar.java URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/Jar.java?rev=1363322&r1=1363321&r2=1363322&view=diff ============================================================================== --- felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/Jar.java (original) +++ felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/Jar.java Thu Jul 19 13:11:20 2012 @@ -34,6 +34,7 @@ public class Jar implements Closeable { boolean nomanifest; Compression compression = Compression.DEFLATE; boolean closed; + String[] algorithms; public Jar(String name) { this.name = name; @@ -241,6 +242,40 @@ public class Jar implements Closeable { public void write(OutputStream out) throws Exception { check(); + + if (!doNotTouchManifest && !nomanifest && algorithms != null) { + + // ok, we have a request to create digests + // of the resources. Since we have to output + // the manifest first, we have a slight problem. + // We can also not make multiple passes over the resource + // because some resources are not idempotent and/or can + // take significant time. So we just copy the jar + // to a temporary file, read it in again, calculate + // the checksums and save. + + String[] algs = algorithms; + algorithms = null; + try { + File f = File.createTempFile(getName(), ".jar"); + System.out.println("Created tmp file " + f); + write(f); + Jar tmp = new Jar(f); + try { + tmp.calcChecksums(algorithms); + tmp.write(out); + } + finally { + f.delete(); + tmp.close(); + } + } + finally { + algorithms = algs; + } + return; + } + ZipOutputStream jout = nomanifest || doNotTouchManifest ? new ZipOutputStream(out) : new JarOutputStream(out); switch (compression) { @@ -278,6 +313,7 @@ public class Jar implements Closeable { return; JarEntry ze = new JarEntry("META-INF/MANIFEST.MF"); + jout.putNextEntry(ze); writeManifest(jout); jout.closeEntry(); @@ -810,4 +846,8 @@ public class Jar implements Closeable { din.close(); } } + + public void setDigestAlgorithms(String[] algorithms) { + this.algorithms = algorithms; + } } Modified: felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/Macro.java URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/Macro.java?rev=1363322&r1=1363321&r2=1363322&view=diff ============================================================================== --- felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/Macro.java (original) +++ felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/Macro.java Thu Jul 19 13:11:20 2012 @@ -7,6 +7,7 @@ import java.text.*; import java.util.*; import java.util.regex.*; +import aQute.bnd.version.*; import aQute.lib.collections.*; import aQute.lib.io.*; @@ -230,7 +231,7 @@ public class Macro { if (e.getCause() instanceof IllegalArgumentException) { domain.error("%s, for cmd: %s, arguments; %s", e.getMessage(), method, Arrays.toString(args)); } else { - domain.warning("Exception in replace: " + e.getCause()); + domain.warning("Exception in replace: %s", e.getCause()); e.getCause().printStackTrace(); } } Modified: felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/resource/Filters.java URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/resource/Filters.java?rev=1363322&r1=1363321&r2=1363322&view=diff ============================================================================== --- felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/resource/Filters.java (original) +++ felix/trunk/bundleplugin/src/main/java/aQute/bnd/osgi/resource/Filters.java Thu Jul 19 13:11:20 2012 @@ -3,6 +3,7 @@ package aQute.bnd.osgi.resource; import org.osgi.framework.namespace.*; import aQute.bnd.osgi.*; +import aQute.bnd.version.*; import aQute.libg.filters.*; public class Filters { Modified: felix/trunk/bundleplugin/src/main/java/aQute/bnd/properties/packageinfo URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/aQute/bnd/properties/packageinfo?rev=1363322&r1=1363321&r2=1363322&view=diff ============================================================================== --- felix/trunk/bundleplugin/src/main/java/aQute/bnd/properties/packageinfo (original) +++ felix/trunk/bundleplugin/src/main/java/aQute/bnd/properties/packageinfo Thu Jul 19 13:11:20 2012 @@ -1 +1 @@ -version 1.0 \ No newline at end of file +version 2.0 \ No newline at end of file Modified: felix/trunk/bundleplugin/src/main/java/aQute/bnd/repo/eclipse/EclipseRepo.java URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/aQute/bnd/repo/eclipse/EclipseRepo.java?rev=1363322&r1=1363321&r2=1363322&view=diff ============================================================================== --- felix/trunk/bundleplugin/src/main/java/aQute/bnd/repo/eclipse/EclipseRepo.java (original) +++ felix/trunk/bundleplugin/src/main/java/aQute/bnd/repo/eclipse/EclipseRepo.java Thu Jul 19 13:11:20 2012 @@ -8,6 +8,7 @@ import java.util.jar.*; import aQute.bnd.header.*; import aQute.bnd.osgi.*; import aQute.bnd.service.*; +import aQute.bnd.version.*; import aQute.lib.io.*; import aQute.libg.generics.*; import aQute.service.reporter.*; Modified: felix/trunk/bundleplugin/src/main/java/aQute/bnd/service/RepositoryPlugin.java URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/aQute/bnd/service/RepositoryPlugin.java?rev=1363322&r1=1363321&r2=1363322&view=diff ============================================================================== --- felix/trunk/bundleplugin/src/main/java/aQute/bnd/service/RepositoryPlugin.java (original) +++ felix/trunk/bundleplugin/src/main/java/aQute/bnd/service/RepositoryPlugin.java Thu Jul 19 13:11:20 2012 @@ -4,6 +4,7 @@ import java.io.*; import java.util.*; import aQute.bnd.osgi.*; +import aQute.bnd.version.*; public interface RepositoryPlugin { public enum Strategy { Added: felix/trunk/bundleplugin/src/main/java/aQute/bnd/version/Version.java URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/aQute/bnd/version/Version.java?rev=1363322&view=auto ============================================================================== --- felix/trunk/bundleplugin/src/main/java/aQute/bnd/version/Version.java (added) +++ felix/trunk/bundleplugin/src/main/java/aQute/bnd/version/Version.java Thu Jul 19 13:11:20 2012 @@ -0,0 +1,164 @@ +package aQute.bnd.version; + +import java.util.regex.*; + +public class Version implements Comparable { + final int major; + final int minor; + final int micro; + final String qualifier; + public final static String VERSION_STRING = "(\\d+)(\\.(\\d+)(\\.(\\d+)(\\.([-_\\da-zA-Z]+))?)?)?"; + public final static Pattern VERSION = Pattern.compile(VERSION_STRING); + public final static Version LOWEST = new Version(); + public final static Version HIGHEST = new Version(Integer.MAX_VALUE, Integer.MAX_VALUE, Integer.MAX_VALUE, + "\uFFFF"); + + public static final Version emptyVersion = LOWEST; + public static final Version ONE = new Version(1, 0, 0); + + public Version() { + this(0); + } + + public Version(int major, int minor, int micro, String qualifier) { + this.major = major; + this.minor = minor; + this.micro = micro; + this.qualifier = qualifier; + } + + public Version(int major, int minor, int micro) { + this(major, minor, micro, null); + } + + public Version(int major, int minor) { + this(major, minor, 0, null); + } + + public Version(int major) { + this(major, 0, 0, null); + } + + public Version(String version) { + version = version.trim(); + Matcher m = VERSION.matcher(version); + if (!m.matches()) + throw new IllegalArgumentException("Invalid syntax for version: " + version); + + major = Integer.parseInt(m.group(1)); + if (m.group(3) != null) + minor = Integer.parseInt(m.group(3)); + else + minor = 0; + + if (m.group(5) != null) + micro = Integer.parseInt(m.group(5)); + else + micro = 0; + + qualifier = m.group(7); + } + + public int getMajor() { + return major; + } + + public int getMinor() { + return minor; + } + + public int getMicro() { + return micro; + } + + public String getQualifier() { + return qualifier; + } + + public int compareTo(Version other) { + if (other == this) + return 0; + + Version o = other; + if (major != o.major) + return major - o.major; + + if (minor != o.minor) + return minor - o.minor; + + if (micro != o.micro) + return micro - o.micro; + + int c = 0; + if (qualifier != null) + c = 1; + if (o.qualifier != null) + c += 2; + + switch (c) { + case 0 : + return 0; + case 1 : + return 1; + case 2 : + return -1; + } + return qualifier.compareTo(o.qualifier); + } + + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(major); + sb.append("."); + sb.append(minor); + sb.append("."); + sb.append(micro); + if (qualifier != null) { + sb.append("."); + sb.append(qualifier); + } + return sb.toString(); + } + + public boolean equals(Object ot) { + if (!(ot instanceof Version)) + return false; + + return compareTo((Version) ot) == 0; + } + + public int hashCode() { + return major * 97 ^ minor * 13 ^ micro + (qualifier == null ? 97 : qualifier.hashCode()); + } + + public int get(int i) { + switch (i) { + case 0 : + return major; + case 1 : + return minor; + case 2 : + return micro; + default : + throw new IllegalArgumentException("Version can only get 0 (major), 1 (minor), or 2 (micro)"); + } + } + + public static Version parseVersion(String version) { + if (version == null) { + return LOWEST; + } + + version = version.trim(); + if (version.length() == 0) { + return LOWEST; + } + + return new Version(version); + + } + + public Version getWithoutQualifier() { + return new Version(major, minor, micro); + } +} Propchange: felix/trunk/bundleplugin/src/main/java/aQute/bnd/version/Version.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: felix/trunk/bundleplugin/src/main/java/aQute/bnd/version/Version.java ------------------------------------------------------------------------------ svn:executable = * Propchange: felix/trunk/bundleplugin/src/main/java/aQute/bnd/version/Version.java ------------------------------------------------------------------------------ svn:keywords = Author Date Id Revision Added: felix/trunk/bundleplugin/src/main/java/aQute/bnd/version/VersionRange.java URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/aQute/bnd/version/VersionRange.java?rev=1363322&view=auto ============================================================================== --- felix/trunk/bundleplugin/src/main/java/aQute/bnd/version/VersionRange.java (added) +++ felix/trunk/bundleplugin/src/main/java/aQute/bnd/version/VersionRange.java Thu Jul 19 13:11:20 2012 @@ -0,0 +1,93 @@ +package aQute.bnd.version; + +import java.util.*; +import java.util.regex.*; + +public class VersionRange { + Version high; + Version low; + char start = '['; + char end = ']'; + + static Pattern RANGE = Pattern.compile("(\\(|\\[)\\s*(" + Version.VERSION_STRING + ")\\s*,\\s*(" + + Version.VERSION_STRING + ")\\s*(\\)|\\])"); + + public VersionRange(String string) { + string = string.trim(); + Matcher m = RANGE.matcher(string); + if (m.matches()) { + start = m.group(1).charAt(0); + String v1 = m.group(2); + String v2 = m.group(10); + low = new Version(v1); + high = new Version(v2); + end = m.group(18).charAt(0); + if (low.compareTo(high) > 0) + throw new IllegalArgumentException("Low Range is higher than High Range: " + low + "-" + high); + + } else + high = low = new Version(string); + } + + public boolean isRange() { + return high != low; + } + + public boolean includeLow() { + return start == '['; + } + + public boolean includeHigh() { + return end == ']'; + } + + public String toString() { + if (high == low) + return high.toString(); + + StringBuilder sb = new StringBuilder(); + sb.append(start); + sb.append(low); + sb.append(','); + sb.append(high); + sb.append(end); + return sb.toString(); + } + + public Version getLow() { + return low; + } + + public Version getHigh() { + return high; + } + + public boolean includes(Version v) { + if (!isRange()) { + return low.compareTo(v) <= 0; + } + if (includeLow()) { + if (v.compareTo(low) < 0) + return false; + } else if (v.compareTo(low) <= 0) + return false; + + if (includeHigh()) { + if (v.compareTo(high) > 0) + return false; + } else if (v.compareTo(high) >= 0) + return false; + + return true; + } + + public Iterable filter(final Iterable versions) { + List list = new ArrayList(); + for (Version v : versions) { + if (includes(v)) + list.add(v); + } + return list; + } + +} \ No newline at end of file Propchange: felix/trunk/bundleplugin/src/main/java/aQute/bnd/version/VersionRange.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: felix/trunk/bundleplugin/src/main/java/aQute/bnd/version/VersionRange.java ------------------------------------------------------------------------------ svn:executable = * Propchange: felix/trunk/bundleplugin/src/main/java/aQute/bnd/version/VersionRange.java ------------------------------------------------------------------------------ svn:keywords = Author Date Id Revision Added: felix/trunk/bundleplugin/src/main/java/aQute/bnd/version/packageinfo URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/aQute/bnd/version/packageinfo?rev=1363322&view=auto ============================================================================== --- felix/trunk/bundleplugin/src/main/java/aQute/bnd/version/packageinfo (added) +++ felix/trunk/bundleplugin/src/main/java/aQute/bnd/version/packageinfo Thu Jul 19 13:11:20 2012 @@ -0,0 +1 @@ +version 1.0 Modified: felix/trunk/bundleplugin/src/main/java/aQute/lib/deployer/FileInstallRepo.java URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/aQute/lib/deployer/FileInstallRepo.java?rev=1363322&r1=1363321&r2=1363322&view=diff ============================================================================== --- felix/trunk/bundleplugin/src/main/java/aQute/lib/deployer/FileInstallRepo.java (original) +++ felix/trunk/bundleplugin/src/main/java/aQute/lib/deployer/FileInstallRepo.java Thu Jul 19 13:11:20 2012 @@ -7,6 +7,7 @@ import java.util.regex.*; import aQute.bnd.header.*; import aQute.bnd.osgi.*; +import aQute.bnd.version.*; import aQute.service.reporter.*; public class FileInstallRepo extends FileRepo { Modified: felix/trunk/bundleplugin/src/main/java/aQute/lib/deployer/FileRepo.java URL: http://svn.apache.org/viewvc/felix/trunk/bundleplugin/src/main/java/aQute/lib/deployer/FileRepo.java?rev=1363322&r1=1363321&r2=1363322&view=diff ============================================================================== --- felix/trunk/bundleplugin/src/main/java/aQute/lib/deployer/FileRepo.java (original) +++ felix/trunk/bundleplugin/src/main/java/aQute/lib/deployer/FileRepo.java Thu Jul 19 13:11:20 2012 @@ -8,6 +8,7 @@ import java.util.regex.*; import aQute.bnd.header.*; import aQute.bnd.osgi.*; import aQute.bnd.service.*; +import aQute.bnd.version.*; import aQute.lib.io.*; import aQute.service.reporter.*;