[SCM] eclipse - Powerful IDE written in java - Debian package. branch, upstream-3.6, updated. 401a435836465d14d9cd4e82b77b4f2b4133a4d6

Benjamin Drung bdrung-guest at alioth.debian.org
Thu Jun 10 23:36:47 UTC 2010


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "eclipse - Powerful IDE written in java - Debian package.".

The branch, upstream-3.6 has been updated
       via  401a435836465d14d9cd4e82b77b4f2b4133a4d6 (commit)
      from  eb7c55fabc01daddf8bde4915d0b4ab072da1d79 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
-----------------------------------------------------------------------

Summary of changes:
 .../eclipse/core/runtime/IPluginDescriptor.class   |  Bin 1587 -> 0 bytes
 .../scripts/GenerateBuildScript$1.class            |  Bin 743 -> 0 bytes
 .../scripts/GenerateBuildScript$2.class            |  Bin 719 -> 0 bytes
 .../scripts/GenerateBuildScript.class              |  Bin 6280 -> 0 bytes
 .../icons/full/elcl16/var_cntnt_prvdr.gif          |  Bin 209 -> 209 bytes
 .../icons/full/etool16/new_sbook.gif               |  Bin 589 -> 589 bytes
 .../org.eclipse.jdt.ui/jar-in-jar-loader.zip       |  Bin 7269 -> 0 bytes
 .../org/osgi/service/cm/Configuration.class        |  Bin 532 -> 0 bytes
 .../org/osgi/service/cm/ConfigurationAdmin.class   |  Bin 743 -> 0 bytes
 .../org/osgi/service/cm/ConfigurationEvent.class   |  Bin 1241 -> 0 bytes
 .../osgi/service/cm/ConfigurationException.class   |  Bin 1469 -> 0 bytes
 .../osgi/service/cm/ConfigurationListener.class    |  Bin 218 -> 0 bytes
 .../osgi/service/cm/ConfigurationPermission.class  |  Bin 1620 -> 0 bytes
 .../cm/ConfigurationPermissionCollection$1.class   |  Bin 1064 -> 0 bytes
 .../cm/ConfigurationPermissionCollection.class     |  Bin 1647 -> 0 bytes
 .../org/osgi/service/cm/ConfigurationPlugin.class  |  Bin 366 -> 0 bytes
 .../org/osgi/service/cm/ManagedService.class       |  Bin 246 -> 0 bytes
 .../osgi/service/cm/ManagedServiceFactory.class    |  Bin 361 -> 0 bytes
 .../service/component/ComponentConstants.class     |  Bin 861 -> 0 bytes
 .../osgi/service/component/ComponentContext.class  |  Bin 763 -> 0 bytes
 .../service/component/ComponentException.class     |  Bin 1007 -> 0 bytes
 .../osgi/service/component/ComponentFactory.class  |  Bin 235 -> 0 bytes
 .../osgi/service/component/ComponentInstance.class |  Bin 211 -> 0 bytes
 .../org/osgi/service/device/Constants.class        |  Bin 303 -> 0 bytes
 .../org/osgi/service/device/Device.class           |  Bin 201 -> 0 bytes
 .../org/osgi/service/device/Driver.class           |  Bin 311 -> 0 bytes
 .../org/osgi/service/device/DriverLocator.class    |  Bin 312 -> 0 bytes
 .../org/osgi/service/device/DriverSelector.class   |  Bin 280 -> 0 bytes
 .../org/osgi/service/device/Match.class            |  Bin 207 -> 0 bytes
 .../event/Event$UnmodifiableDictionary.class       |  Bin 1537 -> 0 bytes
 .../org/osgi/service/event/Event.class             |  Bin 3957 -> 0 bytes
 .../org/osgi/service/event/EventAdmin.class        |  Bin 200 -> 0 bytes
 .../org/osgi/service/event/EventConstants.class    |  Bin 1034 -> 0 bytes
 .../org/osgi/service/event/EventHandler.class      |  Bin 186 -> 0 bytes
 .../org/osgi/service/event/TopicPermission.class   |  Bin 4627 -> 0 bytes
 .../service/event/TopicPermissionCollection.class  |  Bin 2831 -> 0 bytes
 .../org/osgi/service/http/HttpContext.class        |  Bin 689 -> 0 bytes
 .../org/osgi/service/http/HttpService.class        |  Bin 597 -> 0 bytes
 .../org/osgi/service/http/NamespaceException.class |  Bin 958 -> 0 bytes
 .../org/osgi/service/io/ConnectionFactory.class    |  Bin 349 -> 0 bytes
 .../org/osgi/service/io/ConnectorService.class     |  Bin 857 -> 0 bytes
 .../org/osgi/service/log/LogEntry.class            |  Bin 384 -> 0 bytes
 .../org/osgi/service/log/LogListener.class         |  Bin 209 -> 0 bytes
 .../org/osgi/service/log/LogReaderService.class    |  Bin 272 -> 0 bytes
 .../org/osgi/service/log/LogService.class          |  Bin 529 -> 0 bytes
 .../service/metatype/AttributeDefinition.class     |  Bin 820 -> 0 bytes
 .../service/metatype/MetaTypeInformation.class     |  Bin 314 -> 0 bytes
 .../osgi/service/metatype/MetaTypeProvider.class   |  Bin 309 -> 0 bytes
 .../osgi/service/metatype/MetaTypeService.class    |  Bin 355 -> 0 bytes
 .../service/metatype/ObjectClassDefinition.class   |  Bin 523 -> 0 bytes
 .../service/provisioning/ProvisioningService.class |  Bin 1292 -> 0 bytes
 .../org/osgi/service/upnp/UPnPAction.class         |  Bin 490 -> 0 bytes
 .../org/osgi/service/upnp/UPnPDevice.class         |  Bin 1605 -> 0 bytes
 .../org/osgi/service/upnp/UPnPEventListener.class  |  Bin 311 -> 0 bytes
 .../org/osgi/service/upnp/UPnPException.class      |  Bin 812 -> 0 bytes
 .../org/osgi/service/upnp/UPnPIcon.class           |  Bin 345 -> 0 bytes
 .../osgi/service/upnp/UPnPLocalStateVariable.class |  Bin 243 -> 0 bytes
 .../org/osgi/service/upnp/UPnPService.class        |  Bin 632 -> 0 bytes
 .../org/osgi/service/upnp/UPnPStateVariable.class  |  Bin 1456 -> 0 bytes
 .../org/osgi/service/useradmin/Authorization.class |  Bin 260 -> 0 bytes
 .../org/osgi/service/useradmin/Group.class         |  Bin 356 -> 0 bytes
 .../org/osgi/service/useradmin/Role.class          |  Bin 405 -> 0 bytes
 .../org/osgi/service/useradmin/User.class          |  Bin 273 -> 0 bytes
 .../org/osgi/service/useradmin/UserAdmin.class     |  Bin 668 -> 0 bytes
 .../osgi/service/useradmin/UserAdminEvent.class    |  Bin 1048 -> 0 bytes
 .../osgi/service/useradmin/UserAdminListener.class |  Bin 213 -> 0 bytes
 .../service/useradmin/UserAdminPermission.class    |  Bin 5628 -> 0 bytes
 .../useradmin/UserAdminPermissionCollection.class  |  Bin 2851 -> 0 bytes
 .../org/osgi/service/wireadmin/BasicEnvelope.class |  Bin 882 -> 0 bytes
 .../org/osgi/service/wireadmin/Consumer.class      |  Bin 268 -> 0 bytes
 .../org/osgi/service/wireadmin/Envelope.class      |  Bin 236 -> 0 bytes
 .../org/osgi/service/wireadmin/Producer.class      |  Bin 266 -> 0 bytes
 .../org/osgi/service/wireadmin/Wire.class          |  Bin 445 -> 0 bytes
 .../org/osgi/service/wireadmin/WireAdmin.class     |  Bin 531 -> 0 bytes
 .../osgi/service/wireadmin/WireAdminEvent.class    |  Bin 1460 -> 0 bytes
 .../osgi/service/wireadmin/WireAdminListener.class |  Bin 216 -> 0 bytes
 .../org/osgi/service/wireadmin/WireConstants.class |  Bin 1522 -> 0 bytes
 .../osgi/service/wireadmin/WirePermission.class    |  Bin 4504 -> 0 bytes
 .../wireadmin/WirePermissionCollection.class       |  Bin 2818 -> 0 bytes
 eclipse/plugins/org.eclipse.osgi.services/src.zip  |  Bin 132671 -> 0 bytes
 .../src/org/osgi/service/cm/Configuration.java     |  225 +++++++
 .../org/osgi/service/cm/ConfigurationAdmin.java    |  254 ++++++++
 .../org/osgi/service/cm/ConfigurationEvent.java    |  170 ++++++
 .../osgi/service/cm/ConfigurationException.java    |  104 ++++
 .../org/osgi/service/cm/ConfigurationListener.java |   48 ++
 .../osgi/service/cm/ConfigurationPermission.java   |  220 +++++++
 .../org/osgi/service/cm/ConfigurationPlugin.java   |  129 ++++
 .../src/org/osgi/service/cm/ManagedService.java    |  138 +++++
 .../org/osgi/service/cm/ManagedServiceFactory.java |  160 +++++
 .../src/org/osgi/service/cm/package.html           |   11 +
 .../src/org/osgi/service/cm/packageinfo            |    1 +
 .../osgi/service/component/ComponentConstants.java |  118 ++++
 .../osgi/service/component/ComponentContext.java   |  191 ++++++
 .../osgi/service/component/ComponentException.java |   79 +++
 .../osgi/service/component/ComponentFactory.java   |   47 ++
 .../osgi/service/component/ComponentInstance.java  |   46 ++
 .../src/org/osgi/service/component/package.html    |   11 +
 .../src/org/osgi/service/component/packageinfo     |    1 +
 .../src/org/osgi/service/device/Constants.java     |   73 +++
 .../src/org/osgi/service/device/Device.java        |   62 ++
 .../src/org/osgi/service/device/Driver.java        |  107 ++++
 .../src/org/osgi/service/device/DriverLocator.java |   65 ++
 .../org/osgi/service/device/DriverSelector.java    |   54 ++
 .../src/org/osgi/service/device/Match.java         |   43 ++
 .../src/org/osgi/service/device/package.html       |   10 +
 .../src/org/osgi/service/device/packageinfo        |    1 +
 .../src/org/osgi/service/event/Event.java          |  263 ++++++++
 .../src/org/osgi/service/event/EventAdmin.java     |   52 ++
 .../src/org/osgi/service/event/EventConstants.java |  187 ++++++
 .../src/org/osgi/service/event/EventHandler.java   |   69 +++
 .../org/osgi/service/event/TopicPermission.java    |  529 ++++++++++++++++
 .../src/org/osgi/service/event/package.html        |   10 +
 .../src/org/osgi/service/event/packageinfo         |    1 +
 .../src/org/osgi/service/http/HttpContext.java     |  166 +++++
 .../src/org/osgi/service/http/HttpService.java     |  177 ++++++
 .../org/osgi/service/http/NamespaceException.java  |   88 +++
 .../src/org/osgi/service/http/package.html         |   10 +
 .../src/org/osgi/service/http/packageinfo          |    1 +
 .../src/org/osgi/service/io/ConnectionFactory.java |   60 ++
 .../src/org/osgi/service/io/ConnectorService.java  |  165 +++++
 .../src/org/osgi/service/io/package.html           |   10 +
 .../src/org/osgi/service/io/packageinfo            |    1 +
 .../src/org/osgi/service/log/LogEntry.java         |  108 ++++
 .../src/org/osgi/service/log/LogListener.java      |   50 ++
 .../src/org/osgi/service/log/LogReaderService.java |   97 +++
 .../src/org/osgi/service/log/LogService.java       |  155 +++++
 .../src/org/osgi/service/log/package.html          |   11 +
 .../src/org/osgi/service/log/packageinfo           |    1 +
 .../osgi/service/metatype/AttributeDefinition.java |  277 +++++++++
 .../osgi/service/metatype/MetaTypeInformation.java |   50 ++
 .../osgi/service/metatype/MetaTypeProvider.java    |   55 ++
 .../org/osgi/service/metatype/MetaTypeService.java |   51 ++
 .../service/metatype/ObjectClassDefinition.java    |  119 ++++
 .../src/org/osgi/service/metatype/package.html     |   11 +
 .../src/org/osgi/service/metatype/packageinfo      |    1 +
 .../service/provisioning/ProvisioningService.java  |  211 +++++++
 .../src/org/osgi/service/provisioning/package.html |   10 +
 .../src/org/osgi/service/provisioning/packageinfo  |    1 +
 .../src/org/osgi/service/upnp/UPnPAction.java      |  120 ++++
 .../src/org/osgi/service/upnp/UPnPDevice.java      |  280 +++++++++
 .../org/osgi/service/upnp/UPnPEventListener.java   |   85 +++
 .../src/org/osgi/service/upnp/UPnPException.java   |   81 +++
 .../src/org/osgi/service/upnp/UPnPIcon.java        |   99 +++
 .../osgi/service/upnp/UPnPLocalStateVariable.java  |   44 ++
 .../src/org/osgi/service/upnp/UPnPService.java     |  173 ++++++
 .../org/osgi/service/upnp/UPnPStateVariable.java   |  342 +++++++++++
 .../src/org/osgi/service/upnp/package.html         |   10 +
 .../src/org/osgi/service/upnp/packageinfo          |    1 +
 .../org/osgi/service/useradmin/Authorization.java  |  102 +++
 .../src/org/osgi/service/useradmin/Group.java      |  158 +++++
 .../src/org/osgi/service/useradmin/Role.java       |  117 ++++
 .../src/org/osgi/service/useradmin/User.java       |   94 +++
 .../src/org/osgi/service/useradmin/UserAdmin.java  |  157 +++++
 .../org/osgi/service/useradmin/UserAdminEvent.java |  111 ++++
 .../osgi/service/useradmin/UserAdminListener.java  |   43 ++
 .../service/useradmin/UserAdminPermission.java     |  643 ++++++++++++++++++++
 .../src/org/osgi/service/useradmin/package.html    |   10 +
 .../src/org/osgi/service/useradmin/packageinfo     |    1 +
 .../org/osgi/service/wireadmin/BasicEnvelope.java  |   64 ++
 .../src/org/osgi/service/wireadmin/Consumer.java   |  101 +++
 .../src/org/osgi/service/wireadmin/Envelope.java   |   79 +++
 .../src/org/osgi/service/wireadmin/Producer.java   |  123 ++++
 .../src/org/osgi/service/wireadmin/Wire.java       |  268 ++++++++
 .../src/org/osgi/service/wireadmin/WireAdmin.java  |  168 +++++
 .../org/osgi/service/wireadmin/WireAdminEvent.java |  266 ++++++++
 .../osgi/service/wireadmin/WireAdminListener.java  |   72 +++
 .../org/osgi/service/wireadmin/WireConstants.java  |  225 +++++++
 .../org/osgi/service/wireadmin/WirePermission.java |  485 +++++++++++++++
 .../src/org/osgi/service/wireadmin/package.html    |   11 +
 .../src/org/osgi/service/wireadmin/packageinfo     |    1 +
 .../org/osgi/util/measurement/Measurement.class    |  Bin 4682 -> 0 bytes
 .../org/osgi/util/measurement/State.class          |  Bin 1607 -> 0 bytes
 .../org/osgi/util/measurement/Unit.class           |  Bin 6135 -> 0 bytes
 .../org/osgi/util/position/Position.class          |  Bin 2798 -> 0 bytes
 .../org/osgi/util/xml/XMLParserActivator.class     |  Bin 7598 -> 0 bytes
 eclipse/plugins/org.eclipse.osgi.util/src.zip      |  Bin 19436 -> 0 bytes
 .../src/org/osgi/util/measurement/Measurement.java |  484 +++++++++++++++
 .../src/org/osgi/util/measurement/State.java       |  144 +++++
 .../src/org/osgi/util/measurement/Unit.java        |  521 ++++++++++++++++
 .../src/org/osgi/util/measurement/package.html     |   10 +
 .../src/org/osgi/util/measurement/packageinfo      |    1 +
 .../src/org/osgi/util/position/Position.java       |  240 ++++++++
 .../src/org/osgi/util/position/package.html        |   10 +
 .../src/org/osgi/util/position/packageinfo         |    1 +
 .../src/org/osgi/util/xml/XMLParserActivator.java  |  513 ++++++++++++++++
 .../src/org/osgi/util/xml/package.html             |   10 +
 .../src/org/osgi/util/xml/packageinfo              |    1 +
 .../internal/api_stubs/CDC-1.0_Foundation-1.0.zip  |  Bin 157730 -> 0 bytes
 .../internal/api_stubs/CDC-1.1_Foundation-1.1.zip  |  Bin 164348 -> 0 bytes
 .../pde/api/tools/internal/api_stubs/J2SE-1.2.zip  |  Bin 705383 -> 0 bytes
 .../pde/api/tools/internal/api_stubs/J2SE-1.3.zip  |  Bin 832625 -> 0 bytes
 .../pde/api/tools/internal/api_stubs/J2SE-1.4.zip  |  Bin 1196857 -> 0 bytes
 .../pde/api/tools/internal/api_stubs/J2SE-1.5.zip  |  Bin 1428265 -> 0 bytes
 .../api/tools/internal/api_stubs/JavaSE-1.6.zip    |  Bin 1624411 -> 0 bytes
 .../pde/api/tools/internal/api_stubs/JRE-1.1.zip   |  Bin 181334 -> 0 bytes
 .../tools/internal/api_stubs/OSGi_Minimum-1.0.zip  |  Bin 89137 -> 0 bytes
 .../tools/internal/api_stubs/OSGi_Minimum-1.1.zip  |  Bin 93163 -> 0 bytes
 .../tools/internal/api_stubs/OSGi_Minimum-1.2.zip  |  Bin 156904 -> 0 bytes
 .../icons/full/ovr16/warning_ovr.gif               |  Bin 173 -> 173 bytes
 .../icons/wizban/defcon_wiz.png                    |  Bin 6820 -> 6820 bytes
 .../icons/obj16/frgmt_obj.gif                      |  Bin 313 -> 313 bytes
 .../icons/obj16/plugins_obj.gif                    |  Bin 214 -> 214 bytes
 .../icons/etool16/new_cheatsheet_wiz.gif           |  Bin 587 -> 587 bytes
 .../icons/obj16/cheatsheet_composite_obj.gif       |  Bin 366 -> 366 bytes
 .../icons/obj16/cheatsheet_conclusion_obj.gif      |  Bin 351 -> 351 bytes
 .../icons/obj16/cheatsheet_intro_obj.gif           |  Bin 354 -> 354 bytes
 .../icons/obj16/cheatsheet_item_obj.gif            |  Bin 337 -> 337 bytes
 .../icons/obj16/cheatsheet_obj.gif                 |  Bin 361 -> 361 bytes
 .../icons/obj16/cheatsheet_simple_obj.gif          |  Bin 218 -> 218 bytes
 .../icons/obj16/cheatsheet_subitem_obj.gif         |  Bin 581 -> 581 bytes
 .../icons/obj16/cheatsheet_taskgroup_obj.gif       |  Bin 363 -> 363 bytes
 .../icons/obj16/cheatsheet_unsupported_obj.gif     |  Bin 348 -> 348 bytes
 .../icons/obj16/toc_anchor_obj.gif                 |  Bin 197 -> 197 bytes
 .../icons/obj16/toc_leaftopic_obj.gif              |  Bin 354 -> 354 bytes
 .../icons/obj16/toc_link_obj.gif                   |  Bin 585 -> 585 bytes
 .../org.eclipse.pde.ua.ui/icons/obj16/toc_obj.gif  |  Bin 583 -> 583 bytes
 .../icons/obj16/toc_topic_obj.gif                  |  Bin 562 -> 562 bytes
 .../guide/images/readmeviewcommand.png             |  Bin 2956 -> 2956 bytes
 .../plugins/org.eclipse.platform/3_1SplashPsd.zip  |  Bin 341790 -> 0 bytes
 .../org.eclipse.platform/3_6SplashHeliosPsd.zip    |  Bin 6243715 -> 0 bytes
 .../plugins/org.eclipse.platform/launchersrc.zip   |  Bin 175802 -> 0 bytes
 .../org.eclipse.swt/components/external.xpt        |  Bin 183 -> 0 bytes
 .../icons/full/elcl16/configs.gif                  |  Bin 368 -> 368 bytes
 .../icons/full/elcl16/usearch_obj.gif              |  Bin 586 -> 586 bytes
 224 files changed, 11834 insertions(+), 0 deletions(-)

diff --git a/eclipse/features/org.eclipse.equinox.compendium.sdk/epl-v10.html b/eclipse/features/org.eclipse.equinox.compendium.sdk/epl-v10.html
old mode 100755
new mode 100644
diff --git a/eclipse/features/org.eclipse.equinox.compendium.sdk/feature.properties b/eclipse/features/org.eclipse.equinox.compendium.sdk/feature.properties
old mode 100755
new mode 100644
diff --git a/eclipse/features/org.eclipse.equinox.compendium.sdk/license.html b/eclipse/features/org.eclipse.equinox.compendium.sdk/license.html
old mode 100755
new mode 100644
diff --git a/eclipse/features/org.eclipse.equinox.core.sdk/epl-v10.html b/eclipse/features/org.eclipse.equinox.core.sdk/epl-v10.html
old mode 100755
new mode 100644
diff --git a/eclipse/features/org.eclipse.equinox.core.sdk/feature.properties b/eclipse/features/org.eclipse.equinox.core.sdk/feature.properties
old mode 100755
new mode 100644
diff --git a/eclipse/features/org.eclipse.equinox.core.sdk/license.html b/eclipse/features/org.eclipse.equinox.core.sdk/license.html
old mode 100755
new mode 100644
diff --git a/eclipse/features/org.eclipse.equinox.executable/library/carbon/build.sh b/eclipse/features/org.eclipse.equinox.executable/library/carbon/build.sh
old mode 100644
new mode 100755
diff --git a/eclipse/features/org.eclipse.equinox.executable/library/carbon/make_carbon.mak b/eclipse/features/org.eclipse.equinox.executable/library/carbon/make_carbon.mak
old mode 100755
new mode 100644
diff --git a/eclipse/features/org.eclipse.equinox.executable/library/carbon/make_cocoa.mak b/eclipse/features/org.eclipse.equinox.executable/library/carbon/make_cocoa.mak
old mode 100755
new mode 100644
diff --git a/eclipse/features/org.eclipse.equinox.executable/library/gtk/build.sh b/eclipse/features/org.eclipse.equinox.executable/library/gtk/build.sh
old mode 100644
new mode 100755
diff --git a/eclipse/features/org.eclipse.equinox.executable/library/motif/build.sh b/eclipse/features/org.eclipse.equinox.executable/library/motif/build.sh
old mode 100644
new mode 100755
diff --git a/eclipse/features/org.eclipse.equinox.executable/library/photon/build.sh b/eclipse/features/org.eclipse.equinox.executable/library/photon/build.sh
old mode 100644
new mode 100755
diff --git a/eclipse/features/org.eclipse.equinox.executable/library/win32/build.sh b/eclipse/features/org.eclipse.equinox.executable/library/win32/build.sh
old mode 100644
new mode 100755
diff --git a/eclipse/features/org.eclipse.equinox.p2.discovery.feature/epl-v10.html b/eclipse/features/org.eclipse.equinox.p2.discovery.feature/epl-v10.html
old mode 100755
new mode 100644
diff --git a/eclipse/features/org.eclipse.equinox.p2.discovery.feature/feature.properties b/eclipse/features/org.eclipse.equinox.p2.discovery.feature/feature.properties
old mode 100755
new mode 100644
diff --git a/eclipse/features/org.eclipse.equinox.p2.discovery.feature/license.html b/eclipse/features/org.eclipse.equinox.p2.discovery.feature/license.html
old mode 100755
new mode 100644
diff --git a/eclipse/features/org.eclipse.equinox.p2.sdk/epl-v10.html b/eclipse/features/org.eclipse.equinox.p2.sdk/epl-v10.html
old mode 100755
new mode 100644
diff --git a/eclipse/features/org.eclipse.equinox.p2.sdk/feature.properties b/eclipse/features/org.eclipse.equinox.p2.sdk/feature.properties
old mode 100755
new mode 100644
diff --git a/eclipse/features/org.eclipse.equinox.p2.sdk/license.html b/eclipse/features/org.eclipse.equinox.p2.sdk/license.html
old mode 100755
new mode 100644
diff --git a/eclipse/features/org.eclipse.equinox.serverside.sdk/epl-v10.html b/eclipse/features/org.eclipse.equinox.serverside.sdk/epl-v10.html
old mode 100755
new mode 100644
diff --git a/eclipse/features/org.eclipse.equinox.serverside.sdk/feature.properties b/eclipse/features/org.eclipse.equinox.serverside.sdk/feature.properties
old mode 100755
new mode 100644
diff --git a/eclipse/features/org.eclipse.equinox.serverside.sdk/license.html b/eclipse/features/org.eclipse.equinox.serverside.sdk/license.html
old mode 100755
new mode 100644
diff --git a/eclipse/features/org.eclipse.equinox.weaving.sdk/epl-v10.html b/eclipse/features/org.eclipse.equinox.weaving.sdk/epl-v10.html
old mode 100755
new mode 100644
diff --git a/eclipse/features/org.eclipse.equinox.weaving.sdk/feature.properties b/eclipse/features/org.eclipse.equinox.weaving.sdk/feature.properties
old mode 100755
new mode 100644
diff --git a/eclipse/features/org.eclipse.equinox.weaving.sdk/license.html b/eclipse/features/org.eclipse.equinox.weaving.sdk/license.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/internal/databinding/observable/masterdetail/DetailObservableList.java b/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/internal/databinding/observable/masterdetail/DetailObservableList.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/internal/databinding/observable/masterdetail/DetailObservableSet.java b/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/internal/databinding/observable/masterdetail/DetailObservableSet.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/internal/databinding/observable/masterdetail/DetailObservableValue.java b/eclipse/plugins/org.eclipse.core.databinding.observable/src/org/eclipse/core/internal/databinding/observable/masterdetail/DetailObservableValue.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/conversion/DateConversionSupport.java b/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/conversion/DateConversionSupport.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/conversion/DateToStringConverter.java b/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/conversion/DateToStringConverter.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/conversion/StringToBooleanConverter.java b/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/conversion/StringToBooleanConverter.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/conversion/StringToByteConverter.java b/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/conversion/StringToByteConverter.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/conversion/StringToShortConverter.java b/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/conversion/StringToShortConverter.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/validation/ObjectToPrimitiveValidator.java b/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/validation/ObjectToPrimitiveValidator.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/validation/ReadOnlyValidator.java b/eclipse/plugins/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/validation/ReadOnlyValidator.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.core.filesystem/natives/unix/hpux/PA_RISC.mak b/eclipse/plugins/org.eclipse.core.filesystem/natives/unix/hpux/PA_RISC.mak
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.core.filesystem/natives/unix/hpux/ia64_32.mak b/eclipse/plugins/org.eclipse.core.filesystem/natives/unix/hpux/ia64_32.mak
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.core.filesystem/natives/unix/qnx/Makefile b/eclipse/plugins/org.eclipse.core.filesystem/natives/unix/qnx/Makefile
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.core.runtime.compatibility.registry/classes/org/eclipse/core/runtime/IPluginDescriptor.class b/eclipse/plugins/org.eclipse.core.runtime.compatibility.registry/classes/org/eclipse/core/runtime/IPluginDescriptor.class
deleted file mode 100644
index 817a1b8..0000000
Binary files a/eclipse/plugins/org.eclipse.core.runtime.compatibility.registry/classes/org/eclipse/core/runtime/IPluginDescriptor.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.debug.core/r3_5_buildnotes_platform-debug.html b/eclipse/plugins/org.eclipse.debug.core/r3_5_buildnotes_platform-debug.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/SWTFactory.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/SWTFactory.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchViewMessages.java b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchViewMessages.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchViewMessages.properties b/eclipse/plugins/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchViewMessages.properties
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.app/.classpath b/eclipse/plugins/org.eclipse.equinox.app/.classpath
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.app/.project b/eclipse/plugins/org.eclipse.equinox.app/.project
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.app/.settings/org.eclipse.core.resources.prefs b/eclipse/plugins/org.eclipse.equinox.app/.settings/org.eclipse.core.resources.prefs
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.app/.settings/org.eclipse.jdt.core.prefs b/eclipse/plugins/org.eclipse.equinox.app/.settings/org.eclipse.jdt.core.prefs
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.app/.settings/org.eclipse.jdt.ui.prefs b/eclipse/plugins/org.eclipse.equinox.app/.settings/org.eclipse.jdt.ui.prefs
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.app/.settings/org.eclipse.pde.core.prefs b/eclipse/plugins/org.eclipse.equinox.app/.settings/org.eclipse.pde.core.prefs
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.app/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.equinox.app/META-INF/MANIFEST.MF
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.app/about.html b/eclipse/plugins/org.eclipse.equinox.app/about.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.app/build.properties b/eclipse/plugins/org.eclipse.equinox.app/build.properties
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.app/plugin.properties b/eclipse/plugins/org.eclipse.equinox.app/plugin.properties
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.app/plugin.xml b/eclipse/plugins/org.eclipse.equinox.app/plugin.xml
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.app/schema/applications.exsd b/eclipse/plugins/org.eclipse.equinox.app/schema/applications.exsd
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.app/src/org/eclipse/equinox/app/IApplication.java b/eclipse/plugins/org.eclipse.equinox.app/src/org/eclipse/equinox/app/IApplication.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/Activator.java b/eclipse/plugins/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/Activator.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/AppCommands.java b/eclipse/plugins/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/AppCommands.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/EclipseAppDescriptor.java b/eclipse/plugins/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/EclipseAppDescriptor.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/EclipseAppHandle.java b/eclipse/plugins/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/EclipseAppHandle.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/EclipseScheduledApplication.java b/eclipse/plugins/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/EclipseScheduledApplication.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/ErrorApplication.java b/eclipse/plugins/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/ErrorApplication.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/Messages.java b/eclipse/plugins/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/Messages.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/messages.properties b/eclipse/plugins/org.eclipse.equinox.app/src/org/eclipse/equinox/internal/app/messages.properties
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.app/src/org/osgi/service/application/ApplicationAdminPermission.java b/eclipse/plugins/org.eclipse.equinox.app/src/org/osgi/service/application/ApplicationAdminPermission.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.app/src/org/osgi/service/application/ApplicationDescriptor.java b/eclipse/plugins/org.eclipse.equinox.app/src/org/osgi/service/application/ApplicationDescriptor.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.app/src/org/osgi/service/application/ApplicationException.java b/eclipse/plugins/org.eclipse.equinox.app/src/org/osgi/service/application/ApplicationException.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.app/src/org/osgi/service/application/ApplicationHandle.java b/eclipse/plugins/org.eclipse.equinox.app/src/org/osgi/service/application/ApplicationHandle.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.app/src/org/osgi/service/application/ScheduledApplication.java b/eclipse/plugins/org.eclipse.equinox.app/src/org/osgi/service/application/ScheduledApplication.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.ds/src/org/apache/felix/scr/package.html b/eclipse/plugins/org.eclipse.equinox.ds/src/org/apache/felix/scr/package.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.launcher.motif.linux.x86/.project b/eclipse/plugins/org.eclipse.equinox.launcher.motif.linux.x86/.project
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.launcher.motif.linux.x86/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.equinox.launcher.motif.linux.x86/META-INF/MANIFEST.MF
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.launcher.motif.linux.x86/about.html b/eclipse/plugins/org.eclipse.equinox.launcher.motif.linux.x86/about.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.launcher.motif.linux.x86/build.properties b/eclipse/plugins/org.eclipse.equinox.launcher.motif.linux.x86/build.properties
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.launcher.motif.linux.x86/customBuildCallbacks.xml b/eclipse/plugins/org.eclipse.equinox.launcher.motif.linux.x86/customBuildCallbacks.xml
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.linux.x86/.project b/eclipse/plugins/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.linux.x86/.project
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.linux.x86/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.linux.x86/META-INF/MANIFEST.MF
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.linux.x86/about.html b/eclipse/plugins/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.linux.x86/about.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.linux.x86/build.properties b/eclipse/plugins/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.linux.x86/build.properties
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.linux.x86/customBuildCallbacks.xml b/eclipse/plugins/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.linux.x86/customBuildCallbacks.xml
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.equinox.transforms.xslt/about.html b/eclipse/plugins/org.eclipse.equinox.transforms.xslt/about.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.jdt.apt.core/scripts/make_set_date_suffix_cmd.sh b/eclipse/plugins/org.eclipse.jdt.apt.core/scripts/make_set_date_suffix_cmd.sh
old mode 100644
new mode 100755
diff --git a/eclipse/plugins/org.eclipse.jdt.core/scripts/GenerateBuildScript$1.class b/eclipse/plugins/org.eclipse.jdt.core/scripts/GenerateBuildScript$1.class
deleted file mode 100644
index 2104d6d..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.core/scripts/GenerateBuildScript$1.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.core/scripts/GenerateBuildScript$2.class b/eclipse/plugins/org.eclipse.jdt.core/scripts/GenerateBuildScript$2.class
deleted file mode 100644
index e52da5e..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.core/scripts/GenerateBuildScript$2.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.core/scripts/GenerateBuildScript.class b/eclipse/plugins/org.eclipse.jdt.core/scripts/GenerateBuildScript.class
deleted file mode 100644
index d355baf..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.core/scripts/GenerateBuildScript.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.core/scripts/export-ejavac_linux.xml b/eclipse/plugins/org.eclipse.jdt.core/scripts/export-ejavac_linux.xml
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.jdt.debug.ui/icons/full/elcl16/var_cntnt_prvdr.gif b/eclipse/plugins/org.eclipse.jdt.debug.ui/icons/full/elcl16/var_cntnt_prvdr.gif
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.jdt.debug.ui/icons/full/etool16/new_sbook.gif b/eclipse/plugins/org.eclipse.jdt.debug.ui/icons/full/etool16/new_sbook.gif
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/launcher/DebugTypeSelectionDialog.java b/eclipse/plugins/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/launcher/DebugTypeSelectionDialog.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.jdt.debug/r3_5_buildnotes_jdt-debug.html b/eclipse/plugins/org.eclipse.jdt.debug/r3_5_buildnotes_jdt-debug.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.jdt.junit4.runtime/scripts/exportplugin.xml b/eclipse/plugins/org.eclipse.jdt.junit4.runtime/scripts/exportplugin.xml
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/jar-in-jar-loader.zip b/eclipse/plugins/org.eclipse.jdt.ui/jar-in-jar-loader.zip
deleted file mode 100644
index 6ee1217..0000000
Binary files a/eclipse/plugins/org.eclipse.jdt.ui/jar-in-jar-loader.zip and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/BasicCompilationUnitEditorActionContributor.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/BasicCompilationUnitEditorActionContributor.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/javadoc/HTMLTagCompletionProposalComputer.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/javadoc/HTMLTagCompletionProposalComputer.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/javadoc/JavadocCompletionProcessor.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/javadoc/JavadocCompletionProcessor.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/text/folding/DefaultJavaFoldingStructureProvider.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/text/folding/DefaultJavaFoldingStructureProvider.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/text/java/CompletionProposalCollector.java b/eclipse/plugins/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/text/java/CompletionProposalCollector.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/wizard/package.html b/eclipse/plugins/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/wizard/package.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/revisions/package.html b/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/revisions/package.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/source/package.html b/eclipse/plugins/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/source/package.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/Configuration.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/Configuration.class
deleted file mode 100644
index 4dcf2e1..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/Configuration.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationAdmin.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationAdmin.class
deleted file mode 100644
index 77da123..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationAdmin.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationEvent.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationEvent.class
deleted file mode 100644
index e7ac7c0..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationEvent.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationException.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationException.class
deleted file mode 100644
index b59ea82..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationException.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationListener.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationListener.class
deleted file mode 100644
index 13b5e93..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationListener.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationPermission.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationPermission.class
deleted file mode 100644
index d88c04a..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationPermission.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationPermissionCollection$1.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationPermissionCollection$1.class
deleted file mode 100644
index ae1c8cd..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationPermissionCollection$1.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationPermissionCollection.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationPermissionCollection.class
deleted file mode 100644
index a6f831d..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationPermissionCollection.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationPlugin.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationPlugin.class
deleted file mode 100644
index d1c7824..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationPlugin.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/ManagedService.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/ManagedService.class
deleted file mode 100644
index 60094c6..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/ManagedService.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/ManagedServiceFactory.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/ManagedServiceFactory.class
deleted file mode 100644
index 60c4afc..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/cm/ManagedServiceFactory.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/component/ComponentConstants.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/component/ComponentConstants.class
deleted file mode 100644
index 61732d1..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/component/ComponentConstants.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/component/ComponentContext.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/component/ComponentContext.class
deleted file mode 100644
index 31a8381..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/component/ComponentContext.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/component/ComponentException.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/component/ComponentException.class
deleted file mode 100644
index 7e229e2..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/component/ComponentException.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/component/ComponentFactory.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/component/ComponentFactory.class
deleted file mode 100644
index 6a27a81..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/component/ComponentFactory.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/component/ComponentInstance.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/component/ComponentInstance.class
deleted file mode 100644
index 7c615df..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/component/ComponentInstance.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/device/Constants.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/device/Constants.class
deleted file mode 100644
index 3aa7d2a..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/device/Constants.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/device/Device.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/device/Device.class
deleted file mode 100644
index c74de60..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/device/Device.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/device/Driver.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/device/Driver.class
deleted file mode 100644
index f19b903..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/device/Driver.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/device/DriverLocator.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/device/DriverLocator.class
deleted file mode 100644
index 211bda8..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/device/DriverLocator.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/device/DriverSelector.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/device/DriverSelector.class
deleted file mode 100644
index d0eb4d5..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/device/DriverSelector.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/device/Match.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/device/Match.class
deleted file mode 100644
index aa75085..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/device/Match.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/event/Event$UnmodifiableDictionary.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/event/Event$UnmodifiableDictionary.class
deleted file mode 100644
index f243594..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/event/Event$UnmodifiableDictionary.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/event/Event.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/event/Event.class
deleted file mode 100644
index 5856c5c..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/event/Event.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/event/EventAdmin.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/event/EventAdmin.class
deleted file mode 100644
index ba765dd..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/event/EventAdmin.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/event/EventConstants.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/event/EventConstants.class
deleted file mode 100644
index e84161c..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/event/EventConstants.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/event/EventHandler.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/event/EventHandler.class
deleted file mode 100644
index 6747ad2..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/event/EventHandler.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/event/TopicPermission.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/event/TopicPermission.class
deleted file mode 100644
index b1534be..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/event/TopicPermission.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/event/TopicPermissionCollection.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/event/TopicPermissionCollection.class
deleted file mode 100644
index 15a19b9..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/event/TopicPermissionCollection.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/http/HttpContext.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/http/HttpContext.class
deleted file mode 100644
index 758cf73..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/http/HttpContext.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/http/HttpService.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/http/HttpService.class
deleted file mode 100644
index 09e7e86..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/http/HttpService.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/http/NamespaceException.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/http/NamespaceException.class
deleted file mode 100644
index afa9683..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/http/NamespaceException.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/io/ConnectionFactory.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/io/ConnectionFactory.class
deleted file mode 100644
index fd11291..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/io/ConnectionFactory.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/io/ConnectorService.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/io/ConnectorService.class
deleted file mode 100644
index 795596e..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/io/ConnectorService.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/log/LogEntry.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/log/LogEntry.class
deleted file mode 100644
index 70daca1..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/log/LogEntry.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/log/LogListener.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/log/LogListener.class
deleted file mode 100644
index da9a415..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/log/LogListener.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/log/LogReaderService.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/log/LogReaderService.class
deleted file mode 100644
index 75177cc..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/log/LogReaderService.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/log/LogService.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/log/LogService.class
deleted file mode 100644
index 7b853c5..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/log/LogService.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/metatype/AttributeDefinition.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/metatype/AttributeDefinition.class
deleted file mode 100644
index 1027886..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/metatype/AttributeDefinition.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/metatype/MetaTypeInformation.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/metatype/MetaTypeInformation.class
deleted file mode 100644
index a4f3fdf..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/metatype/MetaTypeInformation.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/metatype/MetaTypeProvider.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/metatype/MetaTypeProvider.class
deleted file mode 100644
index d74b54c..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/metatype/MetaTypeProvider.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/metatype/MetaTypeService.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/metatype/MetaTypeService.class
deleted file mode 100644
index fd62288..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/metatype/MetaTypeService.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/metatype/ObjectClassDefinition.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/metatype/ObjectClassDefinition.class
deleted file mode 100644
index 372f43b..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/metatype/ObjectClassDefinition.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/provisioning/ProvisioningService.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/provisioning/ProvisioningService.class
deleted file mode 100644
index 0855ca2..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/provisioning/ProvisioningService.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPAction.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPAction.class
deleted file mode 100644
index a9e4e2a..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPAction.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPDevice.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPDevice.class
deleted file mode 100644
index b7445d9..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPDevice.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPEventListener.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPEventListener.class
deleted file mode 100644
index 784d1c3..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPEventListener.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPException.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPException.class
deleted file mode 100644
index c2e2ebe..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPException.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPIcon.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPIcon.class
deleted file mode 100644
index 820e4a4..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPIcon.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPLocalStateVariable.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPLocalStateVariable.class
deleted file mode 100644
index 406ff02..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPLocalStateVariable.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPService.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPService.class
deleted file mode 100644
index 140f87d..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPService.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPStateVariable.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPStateVariable.class
deleted file mode 100644
index 133b723..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPStateVariable.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/useradmin/Authorization.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/useradmin/Authorization.class
deleted file mode 100644
index 07fa739..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/useradmin/Authorization.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/useradmin/Group.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/useradmin/Group.class
deleted file mode 100644
index 77553f7..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/useradmin/Group.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/useradmin/Role.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/useradmin/Role.class
deleted file mode 100644
index 5c74098..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/useradmin/Role.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/useradmin/User.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/useradmin/User.class
deleted file mode 100644
index 2dcd183..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/useradmin/User.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdmin.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdmin.class
deleted file mode 100644
index 4c73226..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdmin.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdminEvent.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdminEvent.class
deleted file mode 100644
index 42e5028..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdminEvent.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdminListener.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdminListener.class
deleted file mode 100644
index 2ace020..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdminListener.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdminPermission.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdminPermission.class
deleted file mode 100644
index 2a3e70b..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdminPermission.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdminPermissionCollection.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdminPermissionCollection.class
deleted file mode 100644
index 71d464c..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdminPermissionCollection.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/BasicEnvelope.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/BasicEnvelope.class
deleted file mode 100644
index 3c0ca38..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/BasicEnvelope.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/Consumer.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/Consumer.class
deleted file mode 100644
index d6065fb..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/Consumer.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/Envelope.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/Envelope.class
deleted file mode 100644
index 2dcdb02..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/Envelope.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/Producer.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/Producer.class
deleted file mode 100644
index d817796..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/Producer.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/Wire.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/Wire.class
deleted file mode 100644
index cd0ef13..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/Wire.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/WireAdmin.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/WireAdmin.class
deleted file mode 100644
index 09752e7..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/WireAdmin.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/WireAdminEvent.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/WireAdminEvent.class
deleted file mode 100644
index c6297f6..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/WireAdminEvent.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/WireAdminListener.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/WireAdminListener.class
deleted file mode 100644
index a8bbb86..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/WireAdminListener.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/WireConstants.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/WireConstants.class
deleted file mode 100644
index 5b05529..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/WireConstants.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/WirePermission.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/WirePermission.class
deleted file mode 100644
index 45e1483..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/WirePermission.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/WirePermissionCollection.class b/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/WirePermissionCollection.class
deleted file mode 100644
index b11a24f..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/org/osgi/service/wireadmin/WirePermissionCollection.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src.zip b/eclipse/plugins/org.eclipse.osgi.services/src.zip
deleted file mode 100644
index fe4cdfa..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.services/src.zip and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/Configuration.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/Configuration.java
new file mode 100644
index 0000000..7c17cf1
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/Configuration.java
@@ -0,0 +1,225 @@
+/*
+ * Copyright (c) OSGi Alliance (2001, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.cm;
+
+import java.io.IOException;
+import java.util.Dictionary;
+
+/**
+ * The configuration information for a <code>ManagedService</code> or
+ * <code>ManagedServiceFactory</code> object.
+ * 
+ * The Configuration Admin service uses this interface to represent the
+ * configuration information for a <code>ManagedService</code> or for a
+ * service instance of a <code>ManagedServiceFactory</code>.
+ * 
+ * <p>
+ * A <code>Configuration</code> object contains a configuration dictionary and
+ * allows the properties to be updated via this object. Bundles wishing to
+ * receive configuration dictionaries do not need to use this class - they
+ * register a <code>ManagedService</code> or
+ * <code>ManagedServiceFactory</code>. Only administrative bundles, and
+ * bundles wishing to update their own configurations need to use this class.
+ * 
+ * <p>
+ * The properties handled in this configuration have case insensitive
+ * <code>String</code> objects as keys. However, case is preserved from the
+ * last set key/value.
+ * <p>
+ * A configuration can be <i>bound </i> to a bundle location (
+ * <code>Bundle.getLocation()</code>). The purpose of binding a
+ * <code>Configuration</code> object to a location is to make it impossible
+ * for another bundle to forge a PID that would match this configuration. When a
+ * configuration is bound to a specific location, and a bundle with a different
+ * location registers a corresponding <code>ManagedService</code> object or
+ * <code>ManagedServiceFactory</code> object, then the configuration is not
+ * passed to the updated method of that object.
+ * 
+ * <p>
+ * If a configuration's location is <code>null</code>, it is not yet bound to
+ * a location. It will become bound to the location of the first bundle that
+ * registers a <code>ManagedService</code> or
+ * <code>ManagedServiceFactory</code> object with the corresponding PID.
+ * <p>
+ * The same <code>Configuration</code> object is used for configuring both a
+ * Managed Service Factory and a Managed Service. When it is important to
+ * differentiate between these two the term "factory configuration" is used.
+ * 
+ * @version $Revision: 5673 $
+ */
+public interface Configuration {
+	/**
+	 * Get the PID for this <code>Configuration</code> object.
+	 * 
+	 * @return the PID for this <code>Configuration</code> object.
+	 * @throws IllegalStateException if this configuration has been deleted
+	 */
+	public String getPid();
+
+	/**
+	 * Return the properties of this <code>Configuration</code> object.
+	 * 
+	 * The <code>Dictionary</code> object returned is a private copy for the
+	 * caller and may be changed without influencing the stored configuration.
+	 * The keys in the returned dictionary are case insensitive and are always
+	 * of type <code>String</code>.
+	 * 
+	 * <p>
+	 * If called just after the configuration is created and before update has
+	 * been called, this method returns <code>null</code>.
+	 * 
+	 * @return A private copy of the properties for the caller or
+	 *         <code>null</code>. These properties must not contain the
+	 *         "service.bundleLocation" property. The value of this property may
+	 *         be obtained from the <code>getBundleLocation</code> method.
+	 * @throws IllegalStateException if this configuration has been deleted
+	 */
+	public Dictionary getProperties();
+
+	/**
+	 * Update the properties of this <code>Configuration</code> object.
+	 * 
+	 * Stores the properties in persistent storage after adding or overwriting
+	 * the following properties:
+	 * <ul>
+	 * <li>"service.pid" : is set to be the PID of this configuration.</li>
+	 * <li>"service.factoryPid" : if this is a factory configuration it is set
+	 * to the factory PID else it is not set.</li>
+	 * </ul>
+	 * These system properties are all of type <code>String</code>.
+	 * 
+	 * <p>
+	 * If the corresponding Managed Service/Managed Service Factory is
+	 * registered, its updated method must be called asynchronously. Else, this
+	 * callback is delayed until aforementioned registration occurs.
+	 * 
+	 * <p>
+	 * Also initiates an asynchronous call to all
+	 * <code>ConfigurationListener</code>s with a
+	 * <code>ConfigurationEvent.CM_UPDATED</code> event.
+	 * 
+	 * @param properties the new set of properties for this configuration
+	 * @throws IOException if update cannot be made persistent
+	 * @throws IllegalArgumentException if the <code>Dictionary</code> object
+	 *         contains invalid configuration types or contains case variants of
+	 *         the same key name.
+	 * @throws IllegalStateException if this configuration has been deleted
+	 */
+	public void update(Dictionary properties) throws IOException;
+
+	/**
+	 * Delete this <code>Configuration</code> object.
+	 * 
+	 * Removes this configuration object from the persistent store. Notify
+	 * asynchronously the corresponding Managed Service or Managed Service
+	 * Factory. A <code>ManagedService</code> object is notified by a call to
+	 * its <code>updated</code> method with a <code>null</code> properties
+	 * argument. A <code>ManagedServiceFactory</code> object is notified by a
+	 * call to its <code>deleted</code> method.
+	 * 
+	 * <p>
+	 * Also initiates an asynchronous call to all
+	 * <code>ConfigurationListener</code>s with a
+	 * <code>ConfigurationEvent.CM_DELETED</code> event.
+	 * 
+	 * @throws IOException If delete fails
+	 * @throws IllegalStateException if this configuration has been deleted
+	 */
+	public void delete() throws IOException;
+
+	/**
+	 * For a factory configuration return the PID of the corresponding Managed
+	 * Service Factory, else return <code>null</code>.
+	 * 
+	 * @return factory PID or <code>null</code>
+	 * @throws IllegalStateException if this configuration has been deleted
+	 */
+	public String getFactoryPid();
+
+	/**
+	 * Update the <code>Configuration</code> object with the current
+	 * properties.
+	 * 
+	 * Initiate the <code>updated</code> callback to the Managed Service or
+	 * Managed Service Factory with the current properties asynchronously.
+	 * 
+	 * <p>
+	 * This is the only way for a bundle that uses a Configuration Plugin
+	 * service to initiate a callback. For example, when that bundle detects a
+	 * change that requires an update of the Managed Service or Managed Service
+	 * Factory via its <code>ConfigurationPlugin</code> object.
+	 * 
+	 * @see ConfigurationPlugin
+	 * @throws IOException if update cannot access the properties in persistent
+	 *         storage
+	 * @throws IllegalStateException if this configuration has been deleted
+	 */
+	public void update() throws IOException;
+
+	/**
+	 * Bind this <code>Configuration</code> object to the specified bundle
+	 * location.
+	 * 
+	 * If the bundleLocation parameter is <code>null</code> then the
+	 * <code>Configuration</code> object will not be bound to a location. It
+	 * will be set to the bundle's location before the first time a Managed
+	 * Service/Managed Service Factory receives this <code>Configuration</code>
+	 * object via the updated method and before any plugins are called. The
+	 * bundle location will be set persistently.
+	 * 
+	 * @param bundleLocation a bundle location or <code>null</code>
+	 * @throws IllegalStateException If this configuration has been deleted.
+	 * @throws SecurityException If the caller does not have
+	 *         <code>ConfigurationPermission[*,CONFIGURE]</code>.
+	 */
+	public void setBundleLocation(String bundleLocation);
+
+	/**
+	 * Get the bundle location.
+	 * 
+	 * Returns the bundle location to which this configuration is bound, or
+	 * <code>null</code> if it is not yet bound to a bundle location.
+	 * 
+	 * @return location to which this configuration is bound, or
+	 *         <code>null</code>.
+	 * @throws IllegalStateException If this <code>Configuration</code> object
+	 *         has been deleted.
+	 * @throws SecurityException If the caller does not have
+	 *         <code>ConfigurationPermission[*,CONFIGURE]</code>.
+	 */
+	public String getBundleLocation();
+
+	/**
+	 * Equality is defined to have equal PIDs
+	 * 
+	 * Two Configuration objects are equal when their PIDs are equal.
+	 * 
+	 * @param other <code>Configuration</code> object to compare against
+	 * @return <code>true</code> if equal, <code>false</code> if not a
+	 *         <code>Configuration</code> object or one with a different PID.
+	 */
+	public boolean equals(Object other);
+
+	/**
+	 * Hash code is based on PID.
+	 * 
+	 * The hashcode for two Configuration objects must be the same when the
+	 * Configuration PID's are the same.
+	 * 
+	 * @return hash code for this Configuration object
+	 */
+	public int hashCode();
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/ConfigurationAdmin.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/ConfigurationAdmin.java
new file mode 100644
index 0000000..a8d0a78
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/ConfigurationAdmin.java
@@ -0,0 +1,254 @@
+/*
+ * Copyright (c) OSGi Alliance (2001, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.cm;
+
+import java.io.IOException;
+import java.util.Dictionary;
+
+import org.osgi.framework.InvalidSyntaxException;
+
+/**
+ * Service for administering configuration data.
+ * 
+ * <p>
+ * The main purpose of this interface is to store bundle configuration data
+ * persistently. This information is represented in <code>Configuration</code>
+ * objects. The actual configuration data is a <code>Dictionary</code> of
+ * properties inside a <code>Configuration</code> object.
+ * 
+ * <p>
+ * There are two principally different ways to manage configurations. First
+ * there is the concept of a Managed Service, where configuration data is
+ * uniquely associated with an object registered with the service registry.
+ * 
+ * <p>
+ * Next, there is the concept of a factory where the Configuration Admin service
+ * will maintain 0 or more <code>Configuration</code> objects for a Managed
+ * Service Factory that is registered with the Framework.
+ * 
+ * <p>
+ * The first concept is intended for configuration data about "things/services"
+ * whose existence is defined externally, e.g. a specific printer. Factories are
+ * intended for "things/services" that can be created any number of times, e.g.
+ * a configuration for a DHCP server for different networks.
+ * 
+ * <p>
+ * Bundles that require configuration should register a Managed Service or a
+ * Managed Service Factory in the service registry. A registration property
+ * named <code>service.pid</code> (persistent identifier or PID) must be used
+ * to identify this Managed Service or Managed Service Factory to the
+ * Configuration Admin service.
+ * 
+ * <p>
+ * When the ConfigurationAdmin detects the registration of a Managed Service, it
+ * checks its persistent storage for a configuration object whose PID matches
+ * the PID registration property (<code>service.pid</code>) of the Managed
+ * Service. If found, it calls {@link ManagedService#updated} method with the
+ * new properties. The implementation of a Configuration Admin service must run
+ * these call-backs asynchronously to allow proper synchronization.
+ * 
+ * <p>
+ * When the Configuration Admin service detects a Managed Service Factory
+ * registration, it checks its storage for configuration objects whose
+ * <code>factoryPid</code> matches the PID of the Managed Service Factory. For
+ * each such <code>Configuration</code> objects, it calls the
+ * <code>ManagedServiceFactory.updated</code> method asynchronously with the
+ * new properties. The calls to the <code>updated</code> method of a
+ * <code>ManagedServiceFactory</code> must be executed sequentially and not
+ * overlap in time.
+ * 
+ * <p>
+ * In general, bundles having permission to use the Configuration Admin service
+ * can only access and modify their own configuration information. Accessing or
+ * modifying the configuration of another bundle requires
+ * <code>ConfigurationPermission[*,CONFIGURE]</code>.
+ * 
+ * <p>
+ * <code>Configuration</code> objects can be <i>bound </i> to a specified
+ * bundle location. In this case, if a matching Managed Service or Managed
+ * Service Factory is registered by a bundle with a different location, then the
+ * Configuration Admin service must not do the normal callback, and it should
+ * log an error. In the case where a <code>Configuration</code> object is not
+ * bound, its location field is <code>null</code>, the Configuration Admin
+ * service will bind it to the location of the bundle that registers the first
+ * Managed Service or Managed Service Factory that has a corresponding PID
+ * property. When a <code>Configuration</code> object is bound to a bundle
+ * location in this manner, the Configuration Admin service must detect if the
+ * bundle corresponding to the location is uninstalled. If this occurs, the
+ * <code>Configuration</code> object is unbound, that is its location field is
+ * set back to <code>null</code>.
+ * 
+ * <p>
+ * The method descriptions of this class refer to a concept of "the calling
+ * bundle". This is a loose way of referring to the bundle which obtained the
+ * Configuration Admin service from the service registry. Implementations of
+ * <code>ConfigurationAdmin</code> must use a
+ * {@link org.osgi.framework.ServiceFactory} to support this concept.
+ * 
+ * @version $Revision: 5673 $
+ */
+public interface ConfigurationAdmin {
+	/**
+	 * Service property naming the Factory PID in the configuration dictionary.
+	 * The property's value is of type <code>String</code>.
+	 * 
+	 * @since 1.1
+	 */
+	public final static String	SERVICE_FACTORYPID		= "service.factoryPid";
+	/**
+	 * Service property naming the location of the bundle that is associated
+	 * with a a <code>Configuration</code> object. This property can be
+	 * searched for but must not appear in the configuration dictionary for
+	 * security reason. The property's value is of type <code>String</code>.
+	 * 
+	 * @since 1.1
+	 */
+	public final static String	SERVICE_BUNDLELOCATION	= "service.bundleLocation";
+
+	/**
+	 * Create a new factory <code>Configuration</code> object with a new PID.
+	 * 
+	 * The properties of the new <code>Configuration</code> object are
+	 * <code>null</code> until the first time that its
+	 * {@link Configuration#update(Dictionary)} method is called.
+	 * 
+	 * <p>
+	 * It is not required that the <code>factoryPid</code> maps to a
+	 * registered Managed Service Factory.
+	 * <p>
+	 * The <code>Configuration</code> object is bound to the location of the
+	 * calling bundle.
+	 * 
+	 * @param factoryPid PID of factory (not <code>null</code>).
+	 * @return A new <code>Configuration</code> object.
+	 * @throws IOException if access to persistent storage fails.
+	 * @throws SecurityException if caller does not have <code>ConfigurationPermission[*,CONFIGURE]</code> and <code>factoryPid</code> is bound to another bundle.
+	 */
+	public Configuration createFactoryConfiguration(String factoryPid)
+			throws IOException;
+
+	/**
+	 * Create a new factory <code>Configuration</code> object with a new PID.
+	 * 
+	 * The properties of the new <code>Configuration</code> object are
+	 * <code>null</code> until the first time that its
+	 * {@link Configuration#update(Dictionary)} method is called.
+	 * 
+	 * <p>
+	 * It is not required that the <code>factoryPid</code> maps to a
+	 * registered Managed Service Factory.
+	 * 
+	 * <p>
+	 * The <code>Configuration</code> is bound to the location specified. If
+	 * this location is <code>null</code> it will be bound to the location of
+	 * the first bundle that registers a Managed Service Factory with a
+	 * corresponding PID.
+	 * 
+	 * @param factoryPid PID of factory (not <code>null</code>).
+	 * @param location A bundle location string, or <code>null</code>.
+	 * @return a new <code>Configuration</code> object.
+	 * @throws IOException if access to persistent storage fails.
+	 * @throws SecurityException if caller does not have <code>ConfigurationPermission[*,CONFIGURE]</code>.
+	 */
+	public Configuration createFactoryConfiguration(String factoryPid, String location)
+			throws IOException;
+
+	/**
+	 * Get an existing <code>Configuration</code> object from the persistent
+	 * store, or create a new <code>Configuration</code> object.
+	 * 
+	 * <p>
+	 * If a <code>Configuration</code> with this PID already exists in
+	 * Configuration Admin service return it. The location parameter is ignored
+	 * in this case.
+	 * 
+	 * <p>
+	 * Else, return a new <code>Configuration</code> object. This new object
+	 * is bound to the location and the properties are set to <code>null</code>.
+	 * If the location parameter is <code>null</code>, it will be set when a
+	 * Managed Service with the corresponding PID is registered for the first
+	 * time.
+	 * 
+	 * @param pid Persistent identifier.
+	 * @param location The bundle location string, or <code>null</code>.
+	 * @return An existing or new <code>Configuration</code> object.
+	 * @throws IOException if access to persistent storage fails.
+	 * @throws SecurityException if the caller does not have <code>ConfigurationPermission[*,CONFIGURE]</code>.
+	 */
+	public Configuration getConfiguration(String pid, String location)
+			throws IOException;
+
+	/**
+	 * Get an existing or new <code>Configuration</code> object from the
+	 * persistent store.
+	 * 
+	 * If the <code>Configuration</code> object for this PID does not exist,
+	 * create a new <code>Configuration</code> object for that PID, where
+	 * properties are <code>null</code>. Bind its location to the calling
+	 * bundle's location.
+	 * 
+	 * <p>
+	 * Otherwise, if the location of the existing <code>Configuration</code> object
+	 * is <code>null</code>, set it to the calling bundle's location.
+	 * 
+	 * @param pid persistent identifier.
+	 * @return an existing or new <code>Configuration</code> matching the PID.
+	 * @throws IOException if access to persistent storage fails.
+	 * @throws SecurityException if the <code>Configuration</code> object is bound to a location different from that of the calling bundle and it has no <code>ConfigurationPermission[*,CONFIGURE]</code>.
+	 */
+	public Configuration getConfiguration(String pid) throws IOException;
+
+	/**
+	 * List the current <code>Configuration</code> objects which match the
+	 * filter.
+	 * 
+	 * <p>
+	 * Only <code>Configuration</code> objects with non- <code>null</code>
+	 * properties are considered current. That is,
+	 * <code>Configuration.getProperties()</code> is guaranteed not to return
+	 * <code>null</code> for each of the returned <code>Configuration</code>
+	 * objects.
+	 * 
+	 * <p>
+	 * Normally only <code>Configuration</code> objects that are bound to the
+	 * location of the calling bundle are returned, or all if the caller has 
+	 * <code>ConfigurationPermission[*,CONFIGURE]</code>.
+	 * 
+	 * <p>
+	 * The syntax of the filter string is as defined in the {@link org.osgi.framework.Filter}
+	 * class. The filter can test any configuration parameters including the
+	 * following system properties:
+	 * <ul>
+	 * <li><code>service.pid</code>-<code>String</code>- the PID under
+	 * which this is registered</li>
+	 * <li><code>service.factoryPid</code>-<code>String</code>- the
+	 * factory if applicable</li>
+	 * <li><code>service.bundleLocation</code>-<code>String</code>- the
+	 * bundle location</li>
+	 * </ul>
+	 * The filter can also be <code>null</code>, meaning that all
+	 * <code>Configuration</code> objects should be returned.
+	 * 
+	 * @param filter A filter string, or <code>null</code> to
+	 *        retrieve all <code>Configuration</code> objects.
+	 * @return All matching <code>Configuration</code> objects, or
+	 *         <code>null</code> if there aren't any.
+	 * @throws IOException if access to persistent storage fails
+	 * @throws InvalidSyntaxException if the filter string is invalid
+	 */
+	public Configuration[] listConfigurations(String filter) throws IOException,
+			InvalidSyntaxException;
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/ConfigurationEvent.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/ConfigurationEvent.java
new file mode 100644
index 0000000..f17007f
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/ConfigurationEvent.java
@@ -0,0 +1,170 @@
+/*
+ * Copyright (c) OSGi Alliance (2004, 2009). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.cm;
+
+import java.util.Dictionary;
+
+import org.osgi.framework.ServiceReference;
+
+/**
+ * A Configuration Event.
+ * 
+ * <p>
+ * <code>ConfigurationEvent</code> objects are delivered to all registered
+ * <code>ConfigurationListener</code> service objects. ConfigurationEvents
+ * must be asynchronously delivered in chronological order with respect to each
+ * listener.
+ * 
+ * <p>
+ * A type code is used to identify the type of event. The following event types
+ * are defined:
+ * <ul>
+ * <li>{@link #CM_UPDATED}
+ * <li>{@link #CM_DELETED}
+ * </ul>
+ * Additional event types may be defined in the future.
+ * 
+ * <p>
+ * Security Considerations. <code>ConfigurationEvent</code> objects do not
+ * provide <code>Configuration</code> objects, so no sensitive configuration
+ * information is available from the event. If the listener wants to locate the
+ * <code>Configuration</code> object for the specified pid, it must use
+ * <code>ConfigurationAdmin</code>.
+ * 
+ * @see ConfigurationListener
+ * 
+ * @version $Revision: 6180 $
+ * @since 1.2
+ */
+public class ConfigurationEvent {
+	/**
+	 * A <code>Configuration</code> has been updated.
+	 * 
+	 * <p>
+	 * This <code>ConfigurationEvent</code> type that indicates that a
+	 * <code>Configuration</code> object has been updated with new properties.
+	 * 
+	 * An event is fired when a call to {@link Configuration#update(Dictionary)}
+	 * successfully changes a configuration.
+	 * 
+	 * <p>
+	 * The value of <code>CM_UPDATED</code> is 1.
+	 */
+	public static final int			CM_UPDATED	= 1;
+	/**
+	 * A <code>Configuration</code> has been deleted.
+	 * 
+	 * <p>
+	 * This <code>ConfigurationEvent</code> type that indicates that a
+	 * <code>Configuration</code> object has been deleted.
+	 * 
+	 * An event is fired when a call to {@link Configuration#delete()}
+	 * successfully deletes a configuration.
+	 * 
+	 * <p>
+	 * The value of <code>CM_DELETED</code> is 2.
+	 */
+	public static final int			CM_DELETED	= 2;
+	/**
+	 * Type of this event.
+	 * 
+	 * @see #getType
+	 */
+	private final int				type;
+	/**
+	 * The factory pid associated with this event.
+	 */
+	private final String			factoryPid;
+	/**
+	 * The pid associated with this event.
+	 */
+	private final String			pid;
+	/**
+	 * The ConfigurationAdmin service which created this event.
+	 */
+	private final ServiceReference	reference;
+
+	/**
+	 * Constructs a <code>ConfigurationEvent</code> object from the given
+	 * <code>ServiceReference</code> object, event type, and pids.
+	 * 
+	 * @param reference The <code>ServiceReference</code> object of the
+	 *        Configuration Admin service that created this event.
+	 * @param type The event type. See {@link #getType}.
+	 * @param factoryPid The factory pid of the associated configuration if the
+	 *        target of the configuration is a ManagedServiceFactory. Otherwise
+	 *        <code>null</code> if the target of the configuration is a
+	 *        ManagedService.
+	 * @param pid The pid of the associated configuration.
+	 */
+	public ConfigurationEvent(ServiceReference reference, int type,
+			String factoryPid, String pid) {
+		this.reference = reference;
+		this.type = type;
+		this.factoryPid = factoryPid;
+		this.pid = pid;
+		if ((reference == null) || (pid == null)) {
+			throw new NullPointerException("reference and pid must not be null");
+		}
+	}
+
+	/**
+	 * Returns the factory pid of the associated configuration.
+	 * 
+	 * @return Returns the factory pid of the associated configuration if the
+	 *         target of the configuration is a ManagedServiceFactory. Otherwise
+	 *         <code>null</code> if the target of the configuration is a
+	 *         ManagedService.
+	 */
+	public String getFactoryPid() {
+		return factoryPid;
+	}
+
+	/**
+	 * Returns the pid of the associated configuration.
+	 * 
+	 * @return Returns the pid of the associated configuration.
+	 */
+	public String getPid() {
+		return pid;
+	}
+
+	/**
+	 * Return the type of this event.
+	 * <p>
+	 * The type values are:
+	 * <ul>
+	 * <li>{@link #CM_UPDATED}
+	 * <li>{@link #CM_DELETED}
+	 * </ul>
+	 * 
+	 * @return The type of this event.
+	 */
+	public int getType() {
+		return type;
+	}
+
+	/**
+	 * Return the <code>ServiceReference</code> object of the Configuration
+	 * Admin service that created this event.
+	 * 
+	 * @return The <code>ServiceReference</code> object for the Configuration
+	 *         Admin service that created this event.
+	 */
+	public ServiceReference getReference() {
+		return reference;
+	}
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/ConfigurationException.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/ConfigurationException.java
new file mode 100644
index 0000000..300f5c8
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/ConfigurationException.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (c) OSGi Alliance (2001, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.cm;
+
+/**
+ * An <code>Exception</code> class to inform the Configuration Admin service
+ * of problems with configuration data.
+ * 
+ * @version $Revision: 6083 $
+ */
+public class ConfigurationException extends Exception {
+	static final long	serialVersionUID	= -1690090413441769377L;
+
+	private final String		property;
+	private final String		reason;
+
+	/**
+	 * Create a <code>ConfigurationException</code> object.
+	 * 
+	 * @param property name of the property that caused the problem,
+	 *        <code>null</code> if no specific property was the cause
+	 * @param reason reason for failure
+	 */
+	public ConfigurationException(String property, String reason) {
+		super(property + " : " + reason);
+		this.property = property;
+		this.reason = reason;
+	}
+
+	/**
+	 * Create a <code>ConfigurationException</code> object.
+	 * 
+	 * @param property name of the property that caused the problem,
+	 *        <code>null</code> if no specific property was the cause
+	 * @param reason reason for failure
+	 * @param cause The cause of this exception.
+	 * @since 1.2
+	 */
+	public ConfigurationException(String property, String reason,
+			Throwable cause) {
+		super(property + " : " + reason, cause);
+		this.property = property;
+		this.reason = reason;
+	}
+
+	/**
+	 * Return the property name that caused the failure or null.
+	 * 
+	 * @return name of property or null if no specific property caused the
+	 *         problem
+	 */
+	public String getProperty() {
+		return property;
+	}
+
+	/**
+	 * Return the reason for this exception.
+	 * 
+	 * @return reason of the failure
+	 */
+	public String getReason() {
+		return reason;
+	}
+	
+	/**
+	 * Returns the cause of this exception or <code>null</code> if no cause was
+	 * set.
+	 * 
+	 * @return The cause of this exception or <code>null</code> if no cause was
+	 *         set.
+	 * @since 1.2
+	 */
+	public Throwable getCause() {
+		return super.getCause();
+	}
+
+	/**
+	 * Initializes the cause of this exception to the specified value.
+	 * 
+	 * @param cause The cause of this exception.
+	 * @return This exception.
+	 * @throws IllegalArgumentException If the specified cause is this
+	 *         exception.
+	 * @throws IllegalStateException If the cause of this exception has already
+	 *         been set.
+	 * @since 1.2
+	 */
+	public Throwable initCause(Throwable cause) {
+		return super.initCause(cause);
+	}
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/ConfigurationListener.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/ConfigurationListener.java
new file mode 100644
index 0000000..5d7793d
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/ConfigurationListener.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) OSGi Alliance (2004, 2008). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.cm;
+
+/**
+ * Listener for Configuration Events. When a <code>ConfigurationEvent</code>
+ * is fired, it is asynchronously delivered to a
+ * <code>ConfigurationListener</code>.
+ * 
+ * <p>
+ * <code>ConfigurationListener</code> objects are registered with the
+ * Framework service registry and are notified with a
+ * <code>ConfigurationEvent</code> object when an event is fired.
+ * <p>
+ * <code>ConfigurationListener</code> objects can inspect the received
+ * <code>ConfigurationEvent</code> object to determine its type, the pid of
+ * the <code>Configuration</code> object with which it is associated, and the
+ * Configuration Admin service that fired the event.
+ * 
+ * <p>
+ * Security Considerations. Bundles wishing to monitor configuration events will
+ * require <code>ServicePermission[ConfigurationListener,REGISTER]</code> to
+ * register a <code>ConfigurationListener</code> service.
+ * 
+ * @version $Revision: 5673 $
+ * @since 1.2
+ */
+public interface ConfigurationListener {
+	/**
+	 * Receives notification of a Configuration that has changed.
+	 * 
+	 * @param event The <code>ConfigurationEvent</code>.
+	 */
+	public void configurationEvent(ConfigurationEvent event);
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/ConfigurationPermission.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/ConfigurationPermission.java
new file mode 100644
index 0000000..3af9088
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/ConfigurationPermission.java
@@ -0,0 +1,220 @@
+/*
+ * Copyright (c) OSGi Alliance (2004, 2009). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.cm;
+
+import java.security.BasicPermission;
+import java.security.Permission;
+import java.security.PermissionCollection;
+import java.util.Enumeration;
+import java.util.NoSuchElementException;
+
+/**
+ * Indicates a bundle's authority to configure bundles.
+ * 
+ * This permission has only a single action: CONFIGURE.
+ * 
+ * @ThreadSafe
+ * @version $Revision: 6381 $
+ * @since 1.2
+ */
+
+public final class ConfigurationPermission extends BasicPermission {
+	static final long			serialVersionUID	= 5716868734811965383L;
+	/**
+	 * The action string <code>configure</code>.
+	 */
+	public final static String	CONFIGURE			= "configure";
+
+	/**
+	 * Create a new ConfigurationPermission.
+	 * 
+	 * @param name Name must be &quot;*&quot;.
+	 * @param actions <code>configure</code> (canonical order).
+	 */
+
+	public ConfigurationPermission(String name, String actions) {
+		super(name);
+		if (!name.equals("*")) {
+			throw new IllegalArgumentException("name must be *");
+		}
+		actions = actions.trim();
+		if (actions.equalsIgnoreCase(CONFIGURE)||actions.equals("*"))
+			return;
+		
+		throw new IllegalArgumentException("actions must be " + CONFIGURE);
+	}
+
+	/**
+	 * Determines if a <code>ConfigurationPermission</code> object "implies"
+	 * the specified permission.
+	 * 
+	 * @param p The target permission to check.
+	 * @return <code>true</code> if the specified permission is implied by
+	 *         this object; <code>false</code> otherwise.
+	 */
+
+	public boolean implies(Permission p) {
+		return p instanceof ConfigurationPermission;
+	}
+
+	/**
+	 * Determines the equality of two <code>ConfigurationPermission</code>
+	 * objects.
+	 * <p>
+	 * Two <code>ConfigurationPermission</code> objects are equal.
+	 * 
+	 * @param obj The object being compared for equality with this object.
+	 * @return <code>true</code> if <code>obj</code> is equivalent to this
+	 *         <code>ConfigurationPermission</code>; <code>false</code>
+	 *         otherwise.
+	 */
+	public boolean equals(Object obj) {
+		return obj instanceof ConfigurationPermission;
+	}
+
+	/**
+	 * Returns the hash code value for this object.
+	 * 
+	 * @return Hash code value for this object.
+	 */
+
+	public int hashCode() {
+		int h = 31 * 17 + getName().hashCode();
+		h = 31 * h + getActions().hashCode();
+		return h;
+	}
+
+	/**
+	 * Returns the canonical string representation of the
+	 * <code>ConfigurationPermission</code> actions.
+	 * 
+	 * <p>
+	 * Always returns present <code>ConfigurationPermission</code> actions in
+	 * the following order: <code>CONFIGURE</code>
+	 * 
+	 * @return Canonical string representation of the
+	 *         <code>ConfigurationPermission</code> actions.
+	 */
+	public String getActions() {
+		return CONFIGURE;
+	}
+
+	/**
+	 * Returns a new <code>PermissionCollection</code> object suitable for
+	 * storing <code>ConfigurationPermission</code>s.
+	 * 
+	 * @return A new <code>PermissionCollection</code> object.
+	 */
+	public PermissionCollection newPermissionCollection() {
+		return new ConfigurationPermissionCollection();
+	}
+}
+
+/**
+ * Stores a set of <code>ConfigurationPermission</code> permissions.
+ * 
+ * @see java.security.Permission
+ * @see java.security.Permissions
+ * @see java.security.PermissionCollection
+ */
+final class ConfigurationPermissionCollection extends PermissionCollection {
+	static final long	serialVersionUID	= -6917638867081695839L;
+	/**
+	 * True if collection is non-empty.
+	 * 
+	 * @serial
+	 */
+	private volatile boolean	hasElement;
+
+	/**
+	 * Creates an empty <tt>ConfigurationPermissionCollection</tt> object.
+	 * 
+	 */
+	public ConfigurationPermissionCollection() {
+		hasElement = false;
+	}
+
+	/**
+	 * Adds the specified permission to the
+	 * <tt>ConfigurationPermissionCollection</tt>. The key for the hash is
+	 * the interface name of the service.
+	 * 
+	 * @param permission The <tt>Permission</tt> object to add.
+	 * 
+	 * @exception IllegalArgumentException If the permission is not an
+	 *            <tt>ConfigurationPermission</tt>.
+	 * 
+	 * @exception SecurityException If this ConfigurationPermissionCollection
+	 *            object has been marked read-only.
+	 */
+
+	public void add(Permission permission) {
+		if (!(permission instanceof ConfigurationPermission)) {
+			throw new IllegalArgumentException("invalid permission: "
+					+ permission);
+		}
+
+		if (isReadOnly())
+			throw new SecurityException("attempt to add a Permission to a "
+					+ "readonly PermissionCollection");
+
+		hasElement = true;
+	}
+
+	/**
+	 * Determines if the specified set of permissions implies the permissions
+	 * expressed in the parameter <tt>permission</tt>.
+	 * 
+	 * @param p The Permission object to compare.
+	 * 
+	 * @return true if permission is a proper subset of a permission in the set;
+	 *         false otherwise.
+	 */
+
+	public boolean implies(Permission p) {
+		return hasElement && (p instanceof ConfigurationPermission);
+	}
+
+	/**
+	 * Returns an enumeration of an <tt>ConfigurationPermission</tt> object.
+	 * 
+	 * @return Enumeration of an <tt>ConfigurationPermission</tt> object.
+	 */
+
+	public Enumeration elements() {
+		final boolean nonEmpty = hasElement;
+		return new Enumeration() {
+			private boolean	more = nonEmpty;
+
+			public boolean hasMoreElements() {
+				return more;
+			}
+
+			public Object nextElement() {
+				if (more) {
+					more = false;
+
+					return new ConfigurationPermission("*",
+							ConfigurationPermission.CONFIGURE);
+				}
+				else {
+					throw new NoSuchElementException();
+				}
+			}
+		};
+	}
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/ConfigurationPlugin.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/ConfigurationPlugin.java
new file mode 100644
index 0000000..574466e
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/ConfigurationPlugin.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright (c) OSGi Alliance (2001, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.cm;
+
+import java.util.Dictionary;
+
+import org.osgi.framework.ServiceReference;
+
+/**
+ * A service interface for processing configuration dictionary before the
+ * update.
+ * 
+ * <p>
+ * A bundle registers a <code>ConfigurationPlugin</code> object in order to
+ * process configuration updates before they reach the Managed Service or
+ * Managed Service Factory. The Configuration Admin service will detect
+ * registrations of Configuration Plugin services and must call these services
+ * every time before it calls the <code>ManagedService</code> or
+ * <code>ManagedServiceFactory</code>
+ * <code>updated</code> method. The
+ * Configuration Plugin service thus has the opportunity to view and modify the
+ * properties before they are passed to the Managed Service or Managed Service
+ * Factory.
+ * 
+ * <p>
+ * Configuration Plugin (plugin) services have full read/write access to all
+ * configuration information. Therefore, bundles using this facility should be
+ * trusted. Access to this facility should be limited with
+ * <code>ServicePermission[ConfigurationPlugin,REGISTER]</code>.
+ * Implementations of a Configuration Plugin service should assure that they
+ * only act on appropriate configurations.
+ * 
+ * <p>
+ * The <code>Integer</code> <code>service.cmRanking</code> registration
+ * property may be specified. Not specifying this registration property, or
+ * setting it to something other than an <code>Integer</code>, is the same as
+ * setting it to the <code>Integer</code> zero. The
+ * <code>service.cmRanking</code> property determines the order in which
+ * plugins are invoked. Lower ranked plugins are called before higher ranked
+ * ones. In the event of more than one plugin having the same value of
+ * <code>service.cmRanking</code>, then the Configuration Admin service
+ * arbitrarily chooses the order in which they are called.
+ * 
+ * <p>
+ * By convention, plugins with <code>service.cmRanking&lt; 0</code> or
+ * <code>service.cmRanking &gt; 1000</code> should not make modifications to
+ * the properties.
+ * 
+ * <p>
+ * The Configuration Admin service has the right to hide properties from
+ * plugins, or to ignore some or all the changes that they make. This might be
+ * done for security reasons. Any such behavior is entirely implementation
+ * defined.
+ * 
+ * <p>
+ * A plugin may optionally specify a <code>cm.target</code> registration
+ * property whose value is the PID of the Managed Service or Managed Service
+ * Factory whose configuration updates the plugin is intended to intercept. The
+ * plugin will then only be called with configuration updates that are targeted
+ * at the Managed Service or Managed Service Factory with the specified PID.
+ * Omitting the <code>cm.target</code> registration property means that the
+ * plugin is called for all configuration updates.
+ * 
+ * @version $Revision: 5673 $
+ */
+public interface ConfigurationPlugin {
+	/**
+	 * A service property to limit the Managed Service or Managed Service
+	 * Factory configuration dictionaries a Configuration Plugin service
+	 * receives.
+	 * 
+	 * This property contains a <code>String[]</code> of PIDs. A Configuration
+	 * Admin service must call a Configuration Plugin service only when this
+	 * property is not set, or the target service's PID is listed in this
+	 * property.
+	 */
+	public static final String	CM_TARGET	= "cm.target";
+	/**
+	 * A service property to specify the order in which plugins are invoked.
+	 * 
+	 * This property contains an <code>Integer</code> ranking of the plugin.
+	 * Not specifying this registration property, or setting it to something
+	 * other than an <code>Integer</code>, is the same as setting it to the
+	 * <code>Integer</code> zero. This property determines the order in which
+	 * plugins are invoked. Lower ranked plugins are called before higher ranked
+	 * ones.
+	 * 
+	 * @since 1.2
+	 */
+	public static final String	CM_RANKING	= "service.cmRanking";
+
+	/**
+	 * View and possibly modify the a set of configuration properties before
+	 * they are sent to the Managed Service or the Managed Service Factory. The
+	 * Configuration Plugin services are called in increasing order of their
+	 * <code>service.cmRanking</code> property. If this property is undefined
+	 * or is a non- <code>Integer</code> type, 0 is used.
+	 * 
+	 * <p>
+	 * This method should not modify the properties unless the
+	 * <code>service.cmRanking</code> of this plugin is in the range
+	 * <code>0 &lt;= service.cmRanking &lt;= 1000</code>.
+	 * <p>
+	 * If this method throws any <code>Exception</code>, the Configuration
+	 * Admin service must catch it and should log it.
+	 * 
+	 * @param reference reference to the Managed Service or Managed Service
+	 *        Factory
+	 * @param properties The configuration properties. This argument must not
+	 *        contain the "service.bundleLocation" property. The value of this
+	 *        property may be obtained from the
+	 *        <code>Configuration.getBundleLocation</code> method.
+	 */
+	public void modifyConfiguration(ServiceReference reference,
+			Dictionary properties);
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/ManagedService.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/ManagedService.java
new file mode 100644
index 0000000..6812434
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/ManagedService.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright (c) OSGi Alliance (2001, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.cm;
+
+import java.util.Dictionary;
+
+/**
+ * A service that can receive configuration data from a Configuration Admin
+ * service.
+ * 
+ * <p>
+ * A Managed Service is a service that needs configuration data. Such an object
+ * should be registered with the Framework registry with the
+ * <code>service.pid</code> property set to some unique identifier called a
+ * PID.
+ * 
+ * <p>
+ * If the Configuration Admin service has a <code>Configuration</code> object
+ * corresponding to this PID, it will callback the <code>updated()</code>
+ * method of the <code>ManagedService</code> object, passing the properties of
+ * that <code>Configuration</code> object.
+ * 
+ * <p>
+ * If it has no such <code>Configuration</code> object, then it calls back
+ * with a <code>null</code> properties argument. Registering a Managed Service
+ * will always result in a callback to the <code>updated()</code> method
+ * provided the Configuration Admin service is, or becomes active. This callback
+ * must always be done asynchronously.
+ * 
+ * <p>
+ * Else, every time that either of the <code>updated()</code> methods is
+ * called on that <code>Configuration</code> object, the
+ * <code>ManagedService.updated()</code> method with the new properties is
+ * called. If the <code>delete()</code> method is called on that
+ * <code>Configuration</code> object, <code>ManagedService.updated()</code>
+ * is called with a <code>null</code> for the properties parameter. All these
+ * callbacks must be done asynchronously.
+ * 
+ * <p>
+ * The following example shows the code of a serial port that will create a port
+ * depending on configuration information.
+ * 
+ * <pre>
+ *  
+ *   class SerialPort implements ManagedService {
+ *  
+ *     ServiceRegistration registration;
+ *     Hashtable configuration;
+ *     CommPortIdentifier id;
+ *  
+ *     synchronized void open(CommPortIdentifier id,
+ *     BundleContext context) {
+ *       this.id = id;
+ *       registration = context.registerService(
+ *         ManagedService.class.getName(),
+ *         this,
+ *         getDefaults()
+ *       );
+ *     }
+ *  
+ *     Hashtable getDefaults() {
+ *       Hashtable defaults = new Hashtable();
+ *       defaults.put( &quot;port&quot;, id.getName() );
+ *       defaults.put( &quot;product&quot;, &quot;unknown&quot; );
+ *       defaults.put( &quot;baud&quot;, &quot;9600&quot; );
+ *       defaults.put( Constants.SERVICE_PID,
+ *         &quot;com.acme.serialport.&quot; + id.getName() );
+ *       return defaults;
+ *     }
+ *  
+ *     public synchronized void updated(
+ *       Dictionary configuration  ) {
+ *       if ( configuration == 
+ * <code>
+ * null
+ * </code>
+ *   )
+ *         registration.setProperties( getDefaults() );
+ *       else {
+ *         setSpeed( configuration.get(&quot;baud&quot;) );
+ *         registration.setProperties( configuration );
+ *       }
+ *     }
+ *     ...
+ *   }
+ *   
+ * </pre>
+ * 
+ * <p>
+ * As a convention, it is recommended that when a Managed Service is updated, it
+ * should copy all the properties it does not recognize into the service
+ * registration properties. This will allow the Configuration Admin service to
+ * set properties on services which can then be used by other applications.
+ * 
+ * @version $Revision: 5673 $
+ */
+public interface ManagedService {
+	/**
+	 * Update the configuration for a Managed Service.
+	 * 
+	 * <p>
+	 * When the implementation of <code>updated(Dictionary)</code> detects any
+	 * kind of error in the configuration properties, it should create a new
+	 * <code>ConfigurationException</code> which describes the problem. This
+	 * can allow a management system to provide useful information to a human
+	 * administrator.
+	 * 
+	 * <p>
+	 * If this method throws any other <code>Exception</code>, the
+	 * Configuration Admin service must catch it and should log it.
+	 * <p>
+	 * The Configuration Admin service must call this method asynchronously
+	 * which initiated the callback. This implies that implementors of Managed
+	 * Service can be assured that the callback will not take place during
+	 * registration when they execute the registration in a synchronized method.
+	 * 
+	 * @param properties A copy of the Configuration properties, or
+	 *        <code>null</code>. This argument must not contain the
+	 *        "service.bundleLocation" property. The value of this property may
+	 *        be obtained from the <code>Configuration.getBundleLocation</code>
+	 *        method.
+	 * @throws ConfigurationException when the update fails
+	 */
+	public void updated(Dictionary properties) throws ConfigurationException;
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/ManagedServiceFactory.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/ManagedServiceFactory.java
new file mode 100644
index 0000000..8c334c0
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/ManagedServiceFactory.java
@@ -0,0 +1,160 @@
+/*
+ * Copyright (c) OSGi Alliance (2001, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.cm;
+
+import java.util.Dictionary;
+
+/**
+ * Manage multiple service instances.
+ * 
+ * Bundles registering this interface are giving the Configuration Admin service
+ * the ability to create and configure a number of instances of a service that
+ * the implementing bundle can provide. For example, a bundle implementing a
+ * DHCP server could be instantiated multiple times for different interfaces
+ * using a factory.
+ * 
+ * <p>
+ * Each of these <i>service instances </i> is represented, in the persistent
+ * storage of the Configuration Admin service, by a factory
+ * <code>Configuration</code> object that has a PID. When such a
+ * <code>Configuration</code> is updated, the Configuration Admin service
+ * calls the <code>ManagedServiceFactory</code> updated method with the new
+ * properties. When <code>updated</code> is called with a new PID, the Managed
+ * Service Factory should create a new factory instance based on these
+ * configuration properties. When called with a PID that it has seen before, it
+ * should update that existing service instance with the new configuration
+ * information.
+ * 
+ * <p>
+ * In general it is expected that the implementation of this interface will
+ * maintain a data structure that maps PIDs to the factory instances that it has
+ * created. The semantics of a factory instance are defined by the Managed
+ * Service Factory. However, if the factory instance is registered as a service
+ * object with the service registry, its PID should match the PID of the
+ * corresponding <code>Configuration</code> object (but it should <b>not </b>
+ * be registered as a Managed Service!).
+ * 
+ * <p>
+ * An example that demonstrates the use of a factory. It will create serial
+ * ports under command of the Configuration Admin service.
+ * 
+ * <pre>
+ *  
+ *   class SerialPortFactory
+ *     implements ManagedServiceFactory {
+ *     ServiceRegistration registration;
+ *     Hashtable ports;
+ *     void start(BundleContext context) {
+ *       Hashtable properties = new Hashtable();
+ *       properties.put( Constants.SERVICE_PID,
+ *         &quot;com.acme.serialportfactory&quot; );
+ *       registration = context.registerService(
+ *         ManagedServiceFactory.class.getName(),
+ *         this,
+ *         properties
+ *       );
+ *     }
+ *     public void updated( String pid,
+ *       Dictionary properties  ) {
+ *       String portName = (String) properties.get(&quot;port&quot;);
+ *       SerialPortService port =
+ *         (SerialPort) ports.get( pid );
+ *       if ( port == null ) {
+ *         port = new SerialPortService();
+ *         ports.put( pid, port );
+ *         port.open();
+ *       }
+ *       if ( port.getPortName().equals(portName) )
+ *         return;
+ *       port.setPortName( portName );
+ *     }
+ *     public void deleted( String pid ) {
+ *       SerialPortService port =
+ *         (SerialPort) ports.get( pid );
+ *       port.close();
+ *       ports.remove( pid );
+ *     }
+ *     ...
+ *   }
+ *   
+ * </pre>
+ * 
+ * @version $Revision: 5673 $
+ */
+public interface ManagedServiceFactory {
+	/**
+	 * Return a descriptive name of this factory.
+	 * 
+	 * @return the name for the factory, which might be localized
+	 */
+	public String getName();
+
+	/**
+	 * Create a new instance, or update the configuration of an existing
+	 * instance.
+	 * 
+	 * If the PID of the <code>Configuration</code> object is new for the
+	 * Managed Service Factory, then create a new factory instance, using the
+	 * configuration <code>properties</code> provided. Else, update the
+	 * service instance with the provided <code>properties</code>.
+	 * 
+	 * <p>
+	 * If the factory instance is registered with the Framework, then the
+	 * configuration <code>properties</code> should be copied to its registry
+	 * properties. This is not mandatory and security sensitive properties
+	 * should obviously not be copied.
+	 * 
+	 * <p>
+	 * If this method throws any <code>Exception</code>, the Configuration
+	 * Admin service must catch it and should log it.
+	 * 
+	 * <p>
+	 * When the implementation of updated detects any kind of error in the
+	 * configuration properties, it should create a new
+	 * {@link ConfigurationException} which describes the problem.
+	 * 
+	 * <p>
+	 * The Configuration Admin service must call this method asynchronously.
+	 * This implies that implementors of the <code>ManagedServiceFactory</code>
+	 * class can be assured that the callback will not take place during
+	 * registration when they execute the registration in a synchronized method.
+	 * 
+	 * @param pid The PID for this configuration.
+	 * @param properties A copy of the configuration properties. This argument
+	 *        must not contain the service.bundleLocation" property. The value
+	 *        of this property may be obtained from the
+	 *        <code>Configuration.getBundleLocation</code> method.
+	 * @throws ConfigurationException when the configuration properties are
+	 *         invalid.
+	 */
+	public void updated(String pid, Dictionary properties)
+			throws ConfigurationException;
+
+	/**
+	 * Remove a factory instance.
+	 * 
+	 * Remove the factory instance associated with the PID. If the instance was
+	 * registered with the service registry, it should be unregistered.
+	 * <p>
+	 * If this method throws any <code>Exception</code>, the Configuration
+	 * Admin service must catch it and should log it.
+	 * <p>
+	 * The Configuration Admin service must call this method asynchronously.
+	 * 
+	 * @param pid the PID of the service to be removed
+	 */
+	public void deleted(String pid);
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/package.html b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/package.html
new file mode 100644
index 0000000..443d9c1
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/package.html
@@ -0,0 +1,11 @@
+<!-- $Revision: 6204 $ -->
+<BODY>
+<p>Configuration Admin Package Version 1.2.
+<p>Bundles wishing to use this package must list the package
+in the Import-Package header of the bundle's manifest.
+For example:
+<pre>
+Import-Package: org.osgi.service.cm; version=&quot;[1.2,2.0)&quot;
+</pre>
+</BODY>
+
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/packageinfo b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/packageinfo
new file mode 100644
index 0000000..6ebb891
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/cm/packageinfo
@@ -0,0 +1 @@
+version 1.2.1
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/component/ComponentConstants.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/component/ComponentConstants.java
new file mode 100644
index 0000000..2f9d089
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/component/ComponentConstants.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright (c) OSGi Alliance (2004, 2009). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.component;
+
+/**
+ * Defines standard names for Service Component constants.
+ * 
+ * @version $Revision: 6454 $
+ */
+public interface ComponentConstants {
+	/**
+	 * Manifest header specifying the XML documents within a bundle that contain
+	 * the bundle's Service Component descriptions.
+	 * <p>
+	 * The attribute value may be retrieved from the <code>Dictionary</code>
+	 * object returned by the <code>Bundle.getHeaders</code> method.
+	 */
+	public static final String	SERVICE_COMPONENT		= "Service-Component";
+
+	/**
+	 * A component property for a component configuration that contains the name
+	 * of the component as specified in the <code>name</code> attribute of the
+	 * <code>component</code> element. The value of this property must be of
+	 * type <code>String</code>.
+	 */
+	public final static String	COMPONENT_NAME			= "component.name";
+
+	/**
+	 * A component property that contains the generated id for a component
+	 * configuration. The value of this property must be of type
+	 * <code>Long</code>.
+	 * 
+	 * <p>
+	 * The value of this property is assigned by the Service Component Runtime
+	 * when a component configuration is created. The Service Component Runtime
+	 * assigns a unique value that is larger than all previously assigned values
+	 * since the Service Component Runtime was started. These values are NOT
+	 * persistent across restarts of the Service Component Runtime.
+	 */
+	public final static String	COMPONENT_ID			= "component.id";
+
+	/**
+	 * A service registration property for a Component Factory that contains the
+	 * value of the <code>factory</code> attribute. The value of this property
+	 * must be of type <code>String</code>.
+	 */
+	public final static String	COMPONENT_FACTORY		= "component.factory";
+
+	/**
+	 * The suffix for reference target properties. These properties contain the
+	 * filter to select the target services for a reference. The value of this
+	 * property must be of type <code>String</code>.
+	 */
+	public final static String	REFERENCE_TARGET_SUFFIX	= ".target";
+	
+	/**
+	 * The reason the component configuration was deactivated is unspecified.
+	 *  
+	 * @since 1.1
+	 */
+	public static final int DEACTIVATION_REASON_UNSPECIFIED = 0;
+	
+	/**
+	 * The component configuration was deactivated because the component was disabled.
+	 *  
+	 * @since 1.1
+	 */
+	public static final int DEACTIVATION_REASON_DISABLED = 1;
+	
+	/**
+	 * The component configuration was deactivated because a reference became unsatisfied.
+	 *  
+	 * @since 1.1
+	 */
+	public static final int DEACTIVATION_REASON_REFERENCE = 2;
+	
+	/**
+	 * The component configuration was deactivated because its configuration was changed.
+	 *  
+	 * @since 1.1
+	 */
+	public static final int DEACTIVATION_REASON_CONFIGURATION_MODIFIED = 3;
+	
+	/**
+	 * The component configuration was deactivated because its configuration was deleted.
+	 *  
+	 * @since 1.1
+	 */
+	public static final int DEACTIVATION_REASON_CONFIGURATION_DELETED = 4;
+	
+	/**
+	 * The component configuration was deactivated because the component was disposed.
+	 *  
+	 * @since 1.1
+	 */
+	public static final int DEACTIVATION_REASON_DISPOSED = 5;
+
+	/**
+	 * The component configuration was deactivated because the bundle was stopped.
+	 *  
+	 * @since 1.1
+	 */
+	public static final int DEACTIVATION_REASON_BUNDLE_STOPPED = 6;
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/component/ComponentContext.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/component/ComponentContext.java
new file mode 100644
index 0000000..aad348c
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/component/ComponentContext.java
@@ -0,0 +1,191 @@
+/*
+ * Copyright (c) OSGi Alliance (2004, 2009). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.component;
+
+import java.util.Dictionary;
+
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * A Component Context object is used by a component instance to interact with
+ * its execution context including locating services by reference name. Each
+ * component instance has a unique Component Context.
+ * 
+ * <p>
+ * A component instance may have an activate method. If a component instance has
+ * a suitable and accessible activate method, this method will be called when a
+ * component configuration is activated. If the activate method takes a
+ * <code>ComponentContext</code> argument, it will be passed the component
+ * instance's Component Context object. If the activate method takes a
+ * <code>BundleContext</code> argument, it will be passed the component
+ * instance's Bundle Context object. If the activate method takes a
+ * <code>Map</code> argument, it will be passed an unmodifiable Map containing
+ * the component properties.
+ * 
+ * <p>
+ * A component instance may have a deactivate method. If a component instance
+ * has a suitable and accessible deactivate method, this method will be called
+ * when the component configuration is deactivated. If the deactivate method
+ * takes a <code>ComponentContext</code> argument, it will be passed the
+ * component instance's Component Context object. If the deactivate method takes
+ * a <code>BundleContext</code> argument, it will be passed the component
+ * instance's Bundle Context object. If the deactivate method takes a
+ * <code>Map</code> argument, it will be passed an unmodifiable Map containing
+ * the component properties. If the deactivate method takes an <code>int</code>
+ * or <code>Integer</code> argument, it will be passed the reason code for the
+ * component instance's deactivation.
+ * 
+ * @ThreadSafe
+ * @version $Revision: 6462 $
+ */
+public interface ComponentContext {
+	/**
+	 * Returns the component properties for this Component Context.
+	 * 
+	 * @return The properties for this Component Context. The Dictionary is read
+	 *         only and cannot be modified.
+	 */
+	public Dictionary getProperties();
+
+	/**
+	 * Returns the service object for the specified reference name.
+	 * 
+	 * <p>
+	 * If the cardinality of the reference is <code>0..n</code> or
+	 * <code>1..n</code> and multiple services are bound to the reference, the
+	 * service with the highest ranking (as specified in its
+	 * <code>Constants.SERVICE_RANKING</code> property) is returned. If there is
+	 * a tie in ranking, the service with the lowest service ID (as specified in
+	 * its <code>Constants.SERVICE_ID</code> property); that is, the service
+	 * that was registered first is returned.
+	 * 
+	 * @param name The name of a reference as specified in a
+	 *        <code>reference</code> element in this component's description.
+	 * @return A service object for the referenced service or <code>null</code>
+	 *         if the reference cardinality is <code>0..1</code> or
+	 *         <code>0..n</code> and no bound service is available.
+	 * @throws ComponentException If the Service Component Runtime catches an
+	 *         exception while activating the bound service.
+	 */
+	public Object locateService(String name);
+
+	/**
+	 * Returns the service object for the specified reference name and
+	 * <code>ServiceReference</code>.
+	 * 
+	 * @param name The name of a reference as specified in a
+	 *        <code>reference</code> element in this component's description.
+	 * @param reference The <code>ServiceReference</code> to a bound service.
+	 *        This must be a <code>ServiceReference</code> provided to the
+	 *        component via the bind or unbind method for the specified
+	 *        reference name.
+	 * @return A service object for the referenced service or <code>null</code>
+	 *         if the specified <code>ServiceReference</code> is not a bound
+	 *         service for the specified reference name.
+	 * @throws ComponentException If the Service Component Runtime catches an
+	 *         exception while activating the bound service.
+	 */
+	public Object locateService(String name, ServiceReference reference);
+
+	/**
+	 * Returns the service objects for the specified reference name.
+	 * 
+	 * @param name The name of a reference as specified in a
+	 *        <code>reference</code> element in this component's description.
+	 * @return An array of service objects for the referenced service or
+	 *         <code>null</code> if the reference cardinality is
+	 *         <code>0..1</code> or <code>0..n</code> and no bound service is
+	 *         available. If the reference cardinality is <code>0..1</code> or
+	 *         <code>1..1</code> and a bound service is available, the array
+	 *         will have exactly one element.
+	 * @throws ComponentException If the Service Component Runtime catches an
+	 *         exception while activating a bound service.
+	 */
+	public Object[] locateServices(String name);
+
+	/**
+	 * Returns the <code>BundleContext</code> of the bundle which contains this
+	 * component.
+	 * 
+	 * @return The <code>BundleContext</code> of the bundle containing this
+	 *         component.
+	 */
+	public BundleContext getBundleContext();
+
+	/**
+	 * If the component instance is registered as a service using the
+	 * <code>servicefactory=&quot;true&quot;</code> attribute, then this method
+	 * returns the bundle using the service provided by the component instance.
+	 * <p>
+	 * This method will return <code>null</code> if:
+	 * <ul>
+	 * <li>The component instance is not a service, then no bundle can be using
+	 * it as a service.
+	 * <li>The component instance is a service but did not specify the
+	 * <code>servicefactory=&quot;true&quot;</code> attribute, then all bundles
+	 * using the service provided by the component instance will share the same
+	 * component instance.
+	 * <li>The service provided by the component instance is not currently being
+	 * used by any bundle.
+	 * </ul>
+	 * 
+	 * @return The bundle using the component instance as a service or
+	 *         <code>null</code>.
+	 */
+	public Bundle getUsingBundle();
+
+	/**
+	 * Returns the Component Instance object for the component instance
+	 * associated with this Component Context.
+	 * 
+	 * @return The Component Instance object for the component instance.
+	 */
+	public ComponentInstance getComponentInstance();
+
+	/**
+	 * Enables the specified component name. The specified component name must
+	 * be in the same bundle as this component.
+	 * 
+	 * @param name The name of a component or <code>null</code> to indicate all
+	 *        components in the bundle.
+	 */
+	public void enableComponent(String name);
+
+	/**
+	 * Disables the specified component name. The specified component name must
+	 * be in the same bundle as this component.
+	 * 
+	 * @param name The name of a component.
+	 */
+	public void disableComponent(String name);
+
+	/**
+	 * If the component instance is registered as a service using the
+	 * <code>service</code> element, then this method returns the service
+	 * reference of the service provided by this component instance.
+	 * <p>
+	 * This method will return <code>null</code> if the component instance is
+	 * not registered as a service.
+	 * 
+	 * @return The <code>ServiceReference</code> object for the component
+	 *         instance or <code>null</code> if the component instance is not
+	 *         registered as a service.
+	 */
+	public ServiceReference getServiceReference();
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/component/ComponentException.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/component/ComponentException.java
new file mode 100644
index 0000000..0aee948
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/component/ComponentException.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) OSGi Alliance (2004, 2008). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.component;
+
+/**
+ * Unchecked exception which may be thrown by the Service Component Runtime.
+ * 
+ * @version $Revision: 6083 $
+ */
+public class ComponentException extends RuntimeException {
+	static final long	serialVersionUID	= -7438212656298726924L;
+
+	/**
+	 * Construct a new ComponentException with the specified message and cause.
+	 * 
+	 * @param message The message for the exception.
+	 * @param cause The cause of the exception. May be <code>null</code>.
+	 */
+	public ComponentException(String message, Throwable cause) {
+		super(message, cause);
+	}
+
+	/**
+	 * Construct a new ComponentException with the specified message.
+	 * 
+	 * @param message The message for the exception.
+	 */
+	public ComponentException(String message) {
+		super(message);
+	}
+
+	/**
+	 * Construct a new ComponentException with the specified cause.
+	 * 
+	 * @param cause The cause of the exception. May be <code>null</code>.
+	 */
+	public ComponentException(Throwable cause) {
+		super(cause);
+	}
+	
+	/**
+	 * Returns the cause of this exception or <code>null</code> if no cause was
+	 * set.
+	 * 
+	 * @return The cause of this exception or <code>null</code> if no cause was
+	 *         set.
+	 */
+	public Throwable getCause() {
+		return super.getCause();
+	}
+
+	/**
+	 * Initializes the cause of this exception to the specified value.
+	 * 
+	 * @param cause The cause of this exception.
+	 * @return This exception.
+	 * @throws IllegalArgumentException If the specified cause is this
+	 *         exception.
+	 * @throws IllegalStateException If the cause of this exception has already
+	 *         been set.
+	 */
+	public Throwable initCause(Throwable cause) {
+		return super.initCause(cause);
+	}
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/component/ComponentFactory.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/component/ComponentFactory.java
new file mode 100644
index 0000000..1c77177
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/component/ComponentFactory.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) OSGi Alliance (2004, 2008). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.component;
+
+import java.util.Dictionary;
+
+/**
+ * When a component is declared with the <code>factory</code> attribute on its
+ * <code>component</code> element, the Service Component Runtime will register
+ * a Component Factory service to allow new component configurations to be
+ * created and activated rather than automatically creating and activating
+ * component configuration as necessary.
+ * 
+ * @ThreadSafe
+ * @version $Revision: 5654 $
+ */
+public interface ComponentFactory {
+	/**
+	 * Create and activate a new component configuration. Additional properties
+	 * may be provided for the component configuration.
+	 * 
+	 * @param properties Additional properties for the component configuration
+	 *        or <code>null</code> if there are no additional properties.
+	 * @return A <code>ComponentInstance</code> object encapsulating the
+	 *         component instance of the component configuration. The component
+	 *         configuration has been activated and, if the component specifies
+	 *         a <code>service</code> element, the component instance has been
+	 *         registered as a service.
+	 * @throws ComponentException If the Service Component Runtime is unable to
+	 *         activate the component configuration.
+	 */
+	public ComponentInstance newInstance(Dictionary properties);
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/component/ComponentInstance.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/component/ComponentInstance.java
new file mode 100644
index 0000000..f2bd2cb
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/component/ComponentInstance.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) OSGi Alliance (2004, 2008). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.component;
+
+/**
+ * A ComponentInstance encapsulates a component instance of an activated
+ * component configuration. ComponentInstances are created whenever a component
+ * configuration is activated.
+ * 
+ * <p>
+ * ComponentInstances are never reused. A new ComponentInstance object will be
+ * created when the component configuration is activated again.
+ * 
+ * @ThreadSafe
+ * @version $Revision: 5654 $
+ */
+public interface ComponentInstance {
+	/**
+	 * Dispose of the component configuration for this component instance. The
+	 * component configuration will be deactivated. If the component
+	 * configuration has already been deactivated, this method does nothing.
+	 */
+	public void dispose();
+
+	/**
+	 * Returns the component instance of the activated component configuration.
+	 * 
+	 * @return The component instance or <code>null</code> if the component
+	 *         configuration has been deactivated.
+	 */
+	public Object getInstance();
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/component/package.html b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/component/package.html
new file mode 100644
index 0000000..2e7717e
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/component/package.html
@@ -0,0 +1,11 @@
+<!-- $Revision: 6204 $ -->
+<BODY>
+<p>Service Component Package Version 1.1.
+<p>Bundles wishing to use this package must list the package
+in the Import-Package header of the bundle's manifest.
+For example:
+<pre>
+Import-Package: org.osgi.service.component; version=&quot;[1.1,2.0)&quot;
+</pre>
+</BODY>
+
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/component/packageinfo b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/component/packageinfo
new file mode 100644
index 0000000..3987f9c
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/component/packageinfo
@@ -0,0 +1 @@
+version 1.1
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/device/Constants.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/device/Constants.java
new file mode 100644
index 0000000..8787256
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/device/Constants.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) OSGi Alliance (2000, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.device;
+
+/**
+ * This interface defines standard names for property keys associated with
+ * {@link Device} and {@link Driver} services.
+ * 
+ * <p>
+ * The values associated with these keys are of type <code>java.lang.String</code>,
+ * unless otherwise stated.
+ * 
+ * @version $Revision: 5673 $
+ * @since 1.1
+ * @see Device
+ * @see Driver
+ */
+public interface Constants {
+	/**
+	 * Property (named &quot;DRIVER_ID&quot;) identifying a driver.
+	 * 
+	 * <p>
+	 * A <code>DRIVER_ID</code> should start with the reversed domain name of the
+	 * company that implemented the driver (e.g., <code>com.acme</code>), and
+	 * must meet the following requirements:
+	 * 
+	 * <ul>
+	 * <li>It must be independent of the location from where it is obtained.
+	 * <li>It must be independent of the {@link DriverLocator} service that
+	 * downloaded it.
+	 * <li>It must be unique.
+	 * <li>It must be different for different revisions of the same driver.
+	 * </ul>
+	 * 
+	 * <p>
+	 * This property is mandatory, i.e., every <code>Driver</code> service must be
+	 * registered with it.
+	 */
+	public static final String	DRIVER_ID			= "DRIVER_ID";
+	/**
+	 * Property (named &quot;DEVICE_CATEGORY&quot;) containing a human readable
+	 * description of the device categories implemented by a device. This
+	 * property is of type <code>String[]</code>
+	 * 
+	 * <p>
+	 * Services registered with this property will be treated as devices and
+	 * discovered by the device manager
+	 */
+	public static final String	DEVICE_CATEGORY		= "DEVICE_CATEGORY";
+	/**
+	 * Property (named &quot;DEVICE_SERIAL&quot;) specifying a device's serial
+	 * number.
+	 */
+	public static final String	DEVICE_SERIAL		= "DEVICE_SERIAL";
+	/**
+	 * Property (named &quot;DEVICE_DESCRIPTION&quot;) containing a human
+	 * readable string describing the actual hardware device.
+	 */
+	public static final String	DEVICE_DESCRIPTION	= "DEVICE_DESCRIPTION";
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/device/Device.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/device/Device.java
new file mode 100644
index 0000000..2af0330
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/device/Device.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) OSGi Alliance (2000, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.device;
+
+/**
+ * <p>
+ * Interface for identifying device services.
+ * 
+ * <p>
+ * A service must implement this interface or use the
+ * {@link Constants#DEVICE_CATEGORY} registration property to indicate that it
+ * is a device. Any services implementing this interface or registered with the
+ * <code>DEVICE_CATEGORY</code> property will be discovered by the device
+ * manager.
+ * 
+ * <p>
+ * Device services implementing this interface give the device manager the
+ * opportunity to indicate to the device that no drivers were found that could
+ * (further) refine it. In this case, the device manager calls the
+ * {@link #noDriverFound} method on the <code>Device</code> object.
+ * 
+ * <p>
+ * Specialized device implementations will extend this interface by adding
+ * methods appropriate to their device category to it.
+ * 
+ * @version $Revision: 5654 $
+ * @see Driver
+ * @ThreadSafe
+ */
+public interface Device {
+	/**
+	 * Return value from {@link Driver#match} indicating that the driver cannot
+	 * refine the device presented to it by the device manager.
+	 * 
+	 * The value is zero.
+	 */
+	public static final int	MATCH_NONE	= 0;
+
+	/**
+	 * Indicates to this <code>Device</code> object that the device manager has
+	 * failed to attach any drivers to it.
+	 * 
+	 * <p>
+	 * If this <code>Device</code> object can be configured differently, the
+	 * driver that registered this <code>Device</code> object may unregister it
+	 * and register a different Device service instead.
+	 */
+	public void noDriverFound();
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/device/Driver.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/device/Driver.java
new file mode 100644
index 0000000..98e3617
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/device/Driver.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) OSGi Alliance (2000, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.device;
+
+import org.osgi.framework.ServiceReference;
+
+/**
+ * A <code>Driver</code> service object must be registered by each Driver bundle
+ * wishing to attach to Device services provided by other drivers. For each
+ * newly discovered {@link Device} object, the device manager enters a bidding
+ * phase. The <code>Driver</code> object whose {@link #match} method bids the
+ * highest for a particular <code>Device</code> object will be instructed by the
+ * device manager to attach to the <code>Device</code> object.
+ * 
+ * @version $Revision: 5654 $
+ * @see Device
+ * @see DriverLocator
+ * @ThreadSafe
+ */
+public interface Driver {
+	/**
+	 * Checks whether this Driver service can be attached to the Device service.
+	 * 
+	 * The Device service is represented by the given {@link ServiceReference}
+	 * and returns a value indicating how well this driver can support the given
+	 * Device service, or {@link Device#MATCH_NONE} if it cannot support the
+	 * given Device service at all.
+	 * 
+	 * <p>
+	 * The return value must be one of the possible match values defined in the
+	 * device category definition for the given Device service, or
+	 * <code>Device.MATCH_NONE</code> if the category of the Device service is
+	 * not recognized.
+	 * 
+	 * <p>
+	 * In order to make its decision, this Driver service may examine the
+	 * properties associated with the given Device service, or may get the
+	 * referenced service object (representing the actual physical device) to
+	 * talk to it, as long as it ungets the service and returns the physical
+	 * device to a normal state before this method returns.
+	 * 
+	 * <p>
+	 * A Driver service must always return the same match code whenever it is
+	 * presented with the same Device service.
+	 * 
+	 * <p>
+	 * The match function is called by the device manager during the matching
+	 * process.
+	 * 
+	 * @param reference the <code>ServiceReference</code> object of the device
+	 *        to match
+	 * 
+	 * @return value indicating how well this driver can support the given
+	 *         Device service, or <code>Device.MATCH_NONE</code> if it cannot
+	 *         support the Device service at all
+	 * 
+	 * @throws java.lang.Exception if this Driver service cannot examine the
+	 *         Device service
+	 */
+	public int match(ServiceReference reference) throws Exception;
+
+	/**
+	 * Attaches this Driver service to the Device service represented by the
+	 * given <code>ServiceReference</code> object.
+	 * 
+	 * <p>
+	 * A return value of <code>null</code> indicates that this Driver service
+	 * has successfully attached to the given Device service. If this Driver
+	 * service is unable to attach to the given Device service, but knows of a
+	 * more suitable Driver service, it must return the <code>DRIVER_ID</code>
+	 * of that Driver service. This allows for the implementation of referring
+	 * drivers whose only purpose is to refer to other drivers capable of
+	 * handling a given Device service.
+	 * 
+	 * <p>
+	 * After having attached to the Device service, this driver may register the
+	 * underlying device as a new service exposing driver-specific
+	 * functionality.
+	 * 
+	 * <p>
+	 * This method is called by the device manager.
+	 * 
+	 * @param reference the <code>ServiceReference</code> object of the device
+	 *        to attach to
+	 * 
+	 * @return <code>null</code> if this Driver service has successfully
+	 *         attached to the given Device service, or the
+	 *         <code>DRIVER_ID</code> of a more suitable driver
+	 * 
+	 * @throws java.lang.Exception if the driver cannot attach to the given
+	 *         device and does not know of a more suitable driver
+	 */
+	public String attach(ServiceReference reference) throws Exception;
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/device/DriverLocator.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/device/DriverLocator.java
new file mode 100644
index 0000000..2726b99
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/device/DriverLocator.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) OSGi Alliance (2000, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.device;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Dictionary;
+
+/**
+ * A Driver Locator service can find and load device driver bundles given a
+ * property set. Each driver is represented by a unique <code>DRIVER_ID</code>.
+ * <p>
+ * Driver Locator services provide the mechanism for dynamically downloading new
+ * device driver bundles into an OSGi environment. They are supplied by
+ * providers and encapsulate all provider-specific details related to the
+ * location and acquisition of driver bundles.
+ * 
+ * @version $Revision: 5654 $
+ * @see Driver
+ * @ThreadSafe
+ */
+public interface DriverLocator {
+	/**
+	 * Returns an array of <code>DRIVER_ID</code> strings of drivers capable of
+	 * attaching to a device with the given properties.
+	 * 
+	 * <p>
+	 * The property keys in the specified <code>Dictionary</code> objects are
+	 * case-insensitive.
+	 * 
+	 * @param props the properties of the device for which a driver is sought
+	 * @return array of driver <code>DRIVER_ID</code> strings of drivers capable
+	 *         of attaching to a Device service with the given properties, or
+	 *         <code>null</code> if this Driver Locator service does not know of
+	 *         any such drivers
+	 */
+	public String[] findDrivers(Dictionary props);
+
+	/**
+	 * Get an <code>InputStream</code> from which the driver bundle providing a
+	 * driver with the giving <code>DRIVER_ID</code> can be installed.
+	 * 
+	 * @param id the <code>DRIVER_ID</code> of the driver that needs to be
+	 *        installed.
+	 * @return An <code>InputStream</code> object from which the driver bundle
+	 *         can be installed or <code>null</code> if the driver with the
+	 *         given ID cannot be located
+	 * @throws java.io.IOException the input stream for the bundle cannot be
+	 *         created
+	 */
+	public InputStream loadDriver(String id) throws IOException;
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/device/DriverSelector.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/device/DriverSelector.java
new file mode 100644
index 0000000..59fd0b9
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/device/DriverSelector.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) OSGi Alliance (2001, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.device;
+
+import org.osgi.framework.ServiceReference;
+
+/**
+ * When the device manager detects a new Device service, it calls all registered
+ * Driver services to determine if anyone matches the Device service. If at
+ * least one Driver service matches, the device manager must choose one. If
+ * there is a Driver Selector service registered with the Framework, the device
+ * manager will ask it to make the selection. If there is no Driver Selector
+ * service, or if it returns an invalid result, or throws an
+ * <code>Exception</code>, the device manager uses the default selection
+ * strategy.
+ * 
+ * @version $Revision: 5654 $
+ * @since 1.1
+ * @ThreadSafe
+ */
+public interface DriverSelector {
+	/**
+	 * Return value from <code>DriverSelector.select</code>, if no Driver
+	 * service should be attached to the Device service. The value is -1.
+	 */
+	public static final int	SELECT_NONE	= -1;
+
+	/**
+	 * Select one of the matching Driver services. The device manager calls this
+	 * method if there is at least one driver bidding for a device. Only Driver
+	 * services that have responded with nonzero (not {@link Device#MATCH_NONE})
+	 * <code></code> match values will be included in the list.
+	 * 
+	 * @param reference the <code>ServiceReference</code> object of the Device
+	 *        service.
+	 * @param matches the array of all non-zero matches.
+	 * @return index into the array of <code>Match</code> objects, or
+	 *         <code>SELECT_NONE</code> if no Driver service should be attached
+	 */
+	public int select(ServiceReference reference, Match[] matches);
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/device/Match.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/device/Match.java
new file mode 100644
index 0000000..6410659
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/device/Match.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) OSGi Alliance (2001, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.device;
+
+import org.osgi.framework.ServiceReference;
+
+/**
+ * Instances of <code>Match</code> are used in the {@link DriverSelector#select}
+ * method to identify Driver services matching a Device service.
+ * 
+ * @version $Revision: 5654 $
+ * @since 1.1
+ * @see DriverSelector
+ * @ThreadSafe
+ */
+public interface Match {
+	/**
+	 * Return the reference to a Driver service.
+	 * 
+	 * @return <code>ServiceReference</code> object to a Driver service.
+	 */
+	public ServiceReference getDriver();
+
+	/**
+	 * Return the match value of this object.
+	 * 
+	 * @return the match value returned by this Driver service.
+	 */
+	public int getMatchValue();
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/device/package.html b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/device/package.html
new file mode 100644
index 0000000..7647c20
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/device/package.html
@@ -0,0 +1,10 @@
+<!-- $Revision: 6204 $ -->
+<BODY>
+<p>Device Access Package Version 1.1.
+<p>Bundles wishing to use this package must list the package
+in the Import-Package header of the bundle's manifest.
+For example:
+<pre>
+Import-Package: org.osgi.service.device; version=&quot;[1.1,2.0)&quot;
+</pre>
+</BODY>
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/device/packageinfo b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/device/packageinfo
new file mode 100644
index 0000000..3987f9c
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/device/packageinfo
@@ -0,0 +1 @@
+version 1.1
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/event/Event.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/event/Event.java
new file mode 100644
index 0000000..42cdb1b
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/event/Event.java
@@ -0,0 +1,263 @@
+/*
+ * Copyright (c) OSGi Alliance (2005, 2009). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.event;
+
+import java.util.Collections;
+import java.util.Dictionary;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.osgi.framework.Filter;
+
+/**
+ * An event.
+ * 
+ * <code>Event</code> objects are delivered to <code>EventHandler</code>
+ * services which subscribe to the topic of the event.
+ * 
+ * @Immutable
+ * @version $Revision: 7003 $
+ */
+public class Event {
+	/**
+	 * The topic of this event.
+	 */
+	private final String	topic;
+	/**
+	 * The properties carried by this event. Keys are strings and values are
+	 * objects
+	 */
+	private final Map		/* <String,Object> */properties;
+
+	/**
+	 * Constructs an event.
+	 * 
+	 * @param topic The topic of the event.
+	 * @param properties The event's properties (may be <code>null</code>). A
+	 *        property whose key is not of type <code>String</code> will be
+	 *        ignored.
+	 * @throws IllegalArgumentException If topic is not a valid topic name.
+	 * @since 1.2
+	 */
+	public Event(String topic, Map/* <String,Object> */properties) {
+		validateTopicName(topic);
+		this.topic = topic;
+		int size = (properties == null) ? 1 : (properties.size() + 1);
+		Map p = new HashMap(size);
+		if (properties != null) {
+			for (Iterator iter = properties.keySet().iterator(); iter.hasNext();) {
+				Object key = iter.next();
+				if (key instanceof String) {
+					Object value = properties.get(key);
+					p.put(key, value);
+				}
+			}
+		}
+		p.put(EventConstants.EVENT_TOPIC, topic);
+		this.properties = p; // safely publish the map
+	}
+
+	/**
+	 * Constructs an event.
+	 * 
+	 * @param topic The topic of the event.
+	 * @param properties The event's properties (may be <code>null</code>). A
+	 *        property whose key is not of type <code>String</code> will be
+	 *        ignored.
+	 * @throws IllegalArgumentException If topic is not a valid topic name.
+	 */
+	public Event(String topic, Dictionary/* <String,Object> */properties) {
+		validateTopicName(topic);
+		this.topic = topic;
+		int size = (properties == null) ? 1 : (properties.size() + 1);
+		Map p = new HashMap(size);
+		if (properties != null) {
+			for (Enumeration e = properties.keys(); e.hasMoreElements();) {
+				Object key = e.nextElement();
+				if (key instanceof String) {
+					Object value = properties.get(key);
+					p.put(key, value);
+				}
+			}
+		}
+		p.put(EventConstants.EVENT_TOPIC, topic);
+		this.properties = p; // safely publish the map
+	}
+
+	/**
+	 * Retrieves a property.
+	 * 
+	 * @param name the name of the property to retrieve
+	 * @return The value of the property, or <code>null</code> if not found.
+	 */
+	public final Object getProperty(String name) {
+		return properties.get(name);
+	}
+
+	/**
+	 * Returns a list of this event's property names.
+	 * 
+	 * @return A non-empty array with one element per property.
+	 */
+	public final String[] getPropertyNames() {
+		return (String[]) properties.keySet().toArray(
+				new String[properties.size()]);
+	}
+
+	/**
+	 * Returns the topic of this event.
+	 * 
+	 * @return The topic of this event.
+	 */
+	public final String getTopic() {
+		return topic;
+	}
+
+	/**
+	 * Tests this event's properties against the given filter using a case
+	 * sensitive match.
+	 * 
+	 * @param filter The filter to test.
+	 * @return true If this event's properties match the filter, false
+	 *         otherwise.
+	 */
+	public final boolean matches(Filter filter) {
+		return filter.matchCase(new UnmodifiableDictionary(properties));
+	}
+
+	/**
+	 * Compares this <code>Event</code> object to another object.
+	 * 
+	 * <p>
+	 * An event is considered to be <b>equal to</b> another event if the topic
+	 * is equal and the properties are equal.
+	 * 
+	 * @param object The <code>Event</code> object to be compared.
+	 * @return <code>true</code> if <code>object</code> is a <code>Event</code>
+	 *         and is equal to this object; <code>false</code> otherwise.
+	 */
+	public boolean equals(Object object) {
+		if (object == this) { // quick test
+			return true;
+		}
+
+		if (!(object instanceof Event)) {
+			return false;
+		}
+
+		Event event = (Event) object;
+		return topic.equals(event.topic) && properties.equals(event.properties);
+	}
+
+	/**
+	 * Returns a hash code value for the object.
+	 * 
+	 * @return An integer which is a hash code value for this object.
+	 */
+	public int hashCode() {
+		int h = 31 * 17 + topic.hashCode();
+		h = 31 * h + properties.hashCode();
+		return h;
+	}
+
+	/**
+	 * Returns the string representation of this event.
+	 * 
+	 * @return The string representation of this event.
+	 */
+	public String toString() {
+		return getClass().getName() + " [topic=" + topic + "]";  
+	}
+
+	/**
+	 * Called by the constructor to validate the topic name.
+	 * 
+	 * @param topic The topic name to validate.
+	 * @throws IllegalArgumentException If the topic name is invalid.
+	 */
+	private static void validateTopicName(String topic) {
+	    char[] chars = topic.toCharArray();
+	    int length = chars.length;
+	    if (length == 0) {
+			throw new IllegalArgumentException("empty topic");
+		}
+		for (int i = 0; i < length; i++) {
+	        char ch = chars[i];
+	        if (ch == '/') {
+	        	// Can't start or end with a '/' but anywhere else is okay
+				if (i == 0 || (i == length - 1)) {
+	                throw new IllegalArgumentException(
+							"invalid topic: "
+							+ topic); 
+	            }
+	            // Can't have "//" as that implies empty token
+	            if (chars[i-1] == '/') {
+	                throw new IllegalArgumentException(
+							"invalid topic: "
+							+ topic); 
+	            }
+	            continue;
+	        }
+	        if (('A' <= ch) && (ch <= 'Z')) {
+	            continue;
+	        }
+	        if (('a' <= ch) && (ch <= 'z')) {
+	            continue;
+	        }
+	        if (('0' <= ch) && (ch <= '9')) {
+	            continue;
+	        }
+	        if ((ch == '_') || (ch == '-')) {
+	            continue;
+	        }
+	        throw new IllegalArgumentException("invalid topic: " + topic); 
+	    }
+	}
+	
+	/**
+	 * Unmodifiable wrapper for Dictionary.
+	 */
+	private static class UnmodifiableDictionary extends Dictionary {
+		private final Map	wrapped;
+		UnmodifiableDictionary(Map wrapped) {
+			this.wrapped = wrapped;
+		}
+		public Enumeration elements() {
+			return Collections.enumeration(wrapped.values());
+		}
+		public Object get(Object key) {
+			return wrapped.get(key);
+		}
+		public boolean isEmpty() {
+			return wrapped.isEmpty();
+		}
+		public Enumeration keys() {
+			return Collections.enumeration(wrapped.keySet());
+		}
+		public Object put(Object key, Object value) {
+			throw new UnsupportedOperationException();
+		}
+		public Object remove(Object key) {
+			throw new UnsupportedOperationException();
+		}
+		public int size() {
+			return wrapped.size();
+		}
+	}
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/event/EventAdmin.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/event/EventAdmin.java
new file mode 100644
index 0000000..f48a10f
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/event/EventAdmin.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) OSGi Alliance (2005, 2008). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.event;
+
+/**
+ * The Event Admin service. Bundles wishing to publish events must obtain the
+ * Event Admin service and call one of the event delivery methods.
+ * 
+ * @ThreadSafe
+ * @version $Revision: 5673 $
+ */
+public interface EventAdmin {
+	/**
+	 * Initiate asynchronous delivery of an event. This method returns to the
+	 * caller before delivery of the event is completed.
+	 * 
+	 * @param event The event to send to all listeners which subscribe to the
+	 *        topic of the event.
+	 * 
+	 * @throws SecurityException If the caller does not have
+	 *         <code>TopicPermission[topic,PUBLISH]</code> for the topic
+	 *         specified in the event.
+	 */
+	void postEvent(Event event);
+
+	/**
+	 * Initiate synchronous delivery of an event. This method does not return to
+	 * the caller until delivery of the event is completed.
+	 * 
+	 * @param event The event to send to all listeners which subscribe to the
+	 *        topic of the event.
+	 * 
+	 * @throws SecurityException If the caller does not have
+	 *         <code>TopicPermission[topic,PUBLISH]</code> for the topic
+	 *         specified in the event.
+	 */
+	void sendEvent(Event event);
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/event/EventConstants.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/event/EventConstants.java
new file mode 100644
index 0000000..ac6b484
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/event/EventConstants.java
@@ -0,0 +1,187 @@
+/*
+ * Copyright (c) OSGi Alliance (2005, 2008). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.event;
+
+import org.osgi.framework.Bundle;
+import org.osgi.framework.Constants;
+import org.osgi.framework.Filter;
+import org.osgi.framework.ServiceReference;
+import org.osgi.framework.Version;
+
+/**
+ * Defines standard names for <code>EventHandler</code> properties.
+ * 
+ * @version $Revision: 6080 $
+ */
+public interface EventConstants {
+
+	/**
+	 * Service registration property (named <code>event.topics</code>)
+	 * specifying the <code>Event</code> topics of interest to a Event Handler
+	 * service.
+	 * <p>
+	 * Event handlers SHOULD be registered with this property. The value of the
+	 * property is a string or an array of strings that describe the topics in
+	 * which the handler is interested. An asterisk ('*') may be used as a
+	 * trailing wildcard. Event Handlers which do not have a value for this
+	 * property must not receive events. More precisely, the value of each
+	 * string must conform to the following grammar:
+	 * 
+	 * <pre>
+	 *  topic-description := '*' | topic ( '/*' )?
+	 *  topic := token ( '/' token )*
+	 * </pre>
+	 * 
+	 * @see Event
+	 */
+	public static final String	EVENT_TOPIC			= "event.topics";
+
+	/**
+	 * Service Registration property (named <code>event.filter</code>)
+	 * specifying a filter to further select <code>Event</code> s of interest to
+	 * a Event Handler service.
+	 * <p>
+	 * Event handlers MAY be registered with this property. The value of this
+	 * property is a string containing an LDAP-style filter specification. Any
+	 * of the event's properties may be used in the filter expression. Each
+	 * event handler is notified for any event which belongs to the topics in
+	 * which the handler has expressed an interest. If the event handler is also
+	 * registered with this service property, then the properties of the event
+	 * must also match the filter for the event to be delivered to the event
+	 * handler.
+	 * <p>
+	 * If the filter syntax is invalid, then the Event Handler must be ignored
+	 * and a warning should be logged.
+	 * 
+	 * @see Event
+	 * @see Filter
+	 */
+	public static final String	EVENT_FILTER		= "event.filter";
+
+	/**
+	 * The Distinguished Names of the signers of the bundle relevant to the
+	 * event. The type of the value for this event property is
+	 * <code>String</code> if there is a single signer or <code>String[]</code>
+	 * if there are multiple signers.
+	 */
+	public static final String	BUNDLE_SIGNER		= "bundle.signer";
+
+	/**
+	 * The Bundle Symbolic Name of the bundle relevant to the event. The type of
+	 * the value for this event property is <code>String</code>.
+	 */
+	public static final String	BUNDLE_SYMBOLICNAME	= "bundle.symbolicName";
+
+	/**
+	 * The Bundle id of the bundle relevant to the event. The type of the value
+	 * for this event property is <code>Long</code>.
+	 * 
+	 * @since 1.1
+	 */
+	public static final String	BUNDLE_ID			= "bundle.id";
+
+	/**
+	 * The Bundle object of the bundle relevant to the event. The type of the
+	 * value for this event property is {@link Bundle}.
+	 * 
+	 * @since 1.1
+	 */
+	public static final String	BUNDLE				= "bundle";
+
+	/**
+	 * The version of the bundle relevant to the event. The type of the value
+	 * for this event property is {@link Version}.
+	 * 
+	 * @since 1.2
+	 */
+	public static final String	BUNDLE_VERSION		= "bundle.version";
+
+	/**
+	 * The forwarded event object. Used when rebroadcasting an event that was
+	 * sent via some other event mechanism. The type of the value for this event
+	 * property is <code>Object</code>.
+	 */
+	public static final String	EVENT				= "event";
+
+	/**
+	 * An exception or error. The type of the value for this event property is
+	 * <code>Throwable</code>.
+	 */
+	public static final String	EXCEPTION			= "exception";
+
+	/**
+	 * The name of the exception type. Must be equal to the name of the class of
+	 * the exception in the event property {@link #EXCEPTION}. The type of the
+	 * value for this event property is <code>String</code>.
+	 * 
+	 * @since 1.1
+	 */
+	public static final String	EXCEPTION_CLASS		= "exception.class";
+
+	/**
+	 * The exception message. Must be equal to the result of calling
+	 * <code>getMessage()</code> on the exception in the event property
+	 * {@link #EXCEPTION}. The type of the value for this event property is
+	 * <code>String</code>.
+	 */
+	public static final String	EXCEPTION_MESSAGE	= "exception.message";
+
+	/**
+	 * A human-readable message that is usually not localized. The type of the
+	 * value for this event property is <code>String</code>.
+	 */
+	public static final String	MESSAGE				= "message";
+
+	/**
+	 * A service reference. The type of the value for this event property is
+	 * {@link ServiceReference}.
+	 */
+	public static final String	SERVICE				= "service";
+
+	/**
+	 * A service's id. The type of the value for this event property is
+	 * <code>Long</code>.
+	 */
+	public static final String	SERVICE_ID			= Constants.SERVICE_ID;
+
+	/**
+	 * A service's objectClass. The type of the value for this event property is
+	 * <code>String[]</code>.
+	 */
+	public static final String	SERVICE_OBJECTCLASS	= "service.objectClass";
+
+	/**
+	 * A service's persistent identity. The type of the value for this event
+	 * property is <code>String</code>.
+	 */
+	public static final String	SERVICE_PID			= Constants.SERVICE_PID;
+
+	/**
+	 * The time when the event occurred, as reported by
+	 * <code>System.currentTimeMillis()</code>. The type of the value for this
+	 * event property is <code>Long</code>.
+	 */
+	public static final String	TIMESTAMP			= "timestamp";
+
+	/**
+	 * This constant was released with an incorrectly spelled name. It has been
+	 * replaced by {@link #EXCEPTION_CLASS}
+	 * 
+	 * @deprecated As of 1.1, replaced by EXCEPTION_CLASS
+	 */
+	public static final String	EXECPTION_CLASS		= "exception.class";
+}
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/event/EventHandler.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/event/EventHandler.java
new file mode 100644
index 0000000..d25782f
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/event/EventHandler.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) OSGi Alliance (2005, 2008). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.event;
+
+/**
+ * Listener for Events.
+ * 
+ * <p>
+ * <code>EventHandler</code> objects are registered with the Framework service
+ * registry and are notified with an <code>Event</code> object when an event
+ * is sent or posted.
+ * <p>
+ * <code>EventHandler</code> objects can inspect the received
+ * <code>Event</code> object to determine its topic and properties.
+ * 
+ * <p>
+ * <code>EventHandler</code> objects must be registered with a service
+ * property {@link EventConstants#EVENT_TOPIC} whose value is the list of topics
+ * in which the event handler is interested.
+ * <p>
+ * For example:
+ * 
+ * <pre>
+ * String[] topics = new String[] {&quot;com/isv/*&quot;};
+ * Hashtable ht = new Hashtable();
+ * ht.put(EventConstants.EVENT_TOPIC, topics);
+ * context.registerService(EventHandler.class.getName(), this, ht);
+ * </pre>
+ * 
+ * Event Handler services can also be registered with an
+ * {@link EventConstants#EVENT_FILTER} service property to further filter the
+ * events. If the syntax of this filter is invalid, then the Event Handler must
+ * be ignored by the Event Admin service. The Event Admin service should log a
+ * warning.
+ * <p>
+ * Security Considerations. Bundles wishing to monitor <code>Event</code>
+ * objects will require <code>ServicePermission[EventHandler,REGISTER]</code>
+ * to register an <code>EventHandler</code> service. The bundle must also have
+ * <code>TopicPermission[topic,SUBSCRIBE]</code> for the topic specified in
+ * the event in order to receive the event.
+ * 
+ * @see Event
+ * 
+ * @ThreadSafe
+ * @version $Revision: 5673 $
+ */
+public interface EventHandler {
+	/**
+	 * Called by the {@link EventAdmin} service to notify the listener of an
+	 * event.
+	 * 
+	 * @param event The event that occurred.
+	 */
+	void handleEvent(Event event);
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/event/TopicPermission.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/event/TopicPermission.java
new file mode 100644
index 0000000..ae0d190
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/event/TopicPermission.java
@@ -0,0 +1,529 @@
+/*
+ * Copyright (c) OSGi Alliance (2005, 2009). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.event;
+
+import java.io.IOException;
+import java.security.Permission;
+import java.security.PermissionCollection;
+import java.util.Enumeration;
+import java.util.Hashtable;
+
+/**
+ * A bundle's authority to publish or subscribe to event on a topic.
+ * 
+ * <p>
+ * A topic is a slash-separated string that defines a topic.
+ * <p>
+ * For example:
+ * 
+ * <pre>
+ * org / osgi / service / foo / FooEvent / ACTION
+ * </pre>
+ * 
+ * <p>
+ * <code>TopicPermission</code> has two actions: <code>publish</code> and
+ * <code>subscribe</code>.
+ * 
+ * @ThreadSafe
+ * @version $Revision: 6381 $
+ */
+public final class TopicPermission extends Permission {
+	static final long			serialVersionUID	= -5855563886961618300L;
+	/**
+	 * The action string <code>publish</code>.
+	 */
+	public final static String	PUBLISH				= "publish";
+	/**
+	 * The action string <code>subscribe</code>.
+	 */
+	public final static String	SUBSCRIBE			= "subscribe";
+	private final static int	ACTION_PUBLISH		= 0x00000001;
+	private final static int	ACTION_SUBSCRIBE	= 0x00000002;
+	private final static int	ACTION_ALL			= ACTION_PUBLISH
+															| ACTION_SUBSCRIBE;
+	private final static int	ACTION_NONE			= 0;
+	/**
+	 * The actions mask.
+	 */
+	private transient int		action_mask;
+
+	/**
+	 * prefix if the name is wildcarded.
+	 */
+	private transient volatile String	prefix;
+
+	/**
+	 * The actions in canonical form.
+	 * 
+	 * @serial
+	 */
+	private volatile String		actions				= null;
+
+	/**
+	 * Defines the authority to publich and/or subscribe to a topic within the
+	 * EventAdmin service.
+	 * <p>
+	 * The name is specified as a slash-separated string. Wildcards may be used.
+	 * For example:
+	 * 
+	 * <pre>
+	 *    org/osgi/service/fooFooEvent/ACTION
+	 *    com/isv/*
+	 *    *
+	 * </pre>
+	 * 
+	 * <p>
+	 * A bundle that needs to publish events on a topic must have the
+	 * appropriate <code>TopicPermission</code> for that topic; similarly, a
+	 * bundle that needs to subscribe to events on a topic must have the
+	 * appropriate <code>TopicPermssion</code> for that topic.
+	 * <p>
+	 * 
+	 * @param name Topic name.
+	 * @param actions <code>publish</code>,<code>subscribe</code> (canonical
+	 *        order).
+	 */
+	public TopicPermission(String name, String actions) {
+		this(name, parseActions(actions));
+	}
+
+	/**
+	 * Package private constructor used by TopicPermissionCollection.
+	 * 
+	 * @param name class name
+	 * @param mask action mask
+	 */
+	TopicPermission(String name, int mask) {
+		super(name);
+		setTransients(mask);
+	}
+
+	/**
+	 * Called by constructors and when deserialized.
+	 * 
+	 * @param name topic name
+	 * @param mask action mask
+	 */
+	private synchronized void setTransients(final int mask) {
+		final String name = getName();
+		if ((name == null) || name.length() == 0) {
+			throw new IllegalArgumentException("invalid name");
+		}
+
+		if ((mask == ACTION_NONE) || ((mask & ACTION_ALL) != mask)) {
+			throw new IllegalArgumentException("invalid action string");
+		}
+		action_mask = mask;
+
+		if (name.equals("*")) {
+			prefix = "";
+		}
+		else {
+			if (name.endsWith("/*")) {
+				prefix = name.substring(0, name.length() - 1);
+			}
+			else {
+				prefix = null;
+			}
+		}
+	}
+
+	/**
+	 * Returns the current action mask.
+	 * <p>
+	 * Used by the TopicPermissionCollection class.
+	 * 
+	 * @return Current action mask.
+	 */
+	synchronized int getActionsMask() {
+		return action_mask;
+	}
+
+	/**
+	 * Parse action string into action mask.
+	 * 
+	 * @param actions Action string.
+	 * @return action mask.
+	 */
+	private static int parseActions(final String actions) {
+		boolean seencomma = false;
+		int mask = ACTION_NONE;
+		if (actions == null) {
+			return mask;
+		}
+		char[] a = actions.toCharArray();
+		int i = a.length - 1;
+		if (i < 0)
+			return mask;
+		while (i != -1) {
+			char c;
+			// skip whitespace
+			while ((i != -1)
+					&& ((c = a[i]) == ' ' || c == '\r' || c == '\n'
+							|| c == '\f' || c == '\t'))
+				i--;
+			// check for the known strings
+			int matchlen;
+			if (i >= 8 && (a[i - 8] == 's' || a[i - 8] == 'S')
+					&& (a[i - 7] == 'u' || a[i - 7] == 'U')
+					&& (a[i - 6] == 'b' || a[i - 6] == 'B')
+					&& (a[i - 5] == 's' || a[i - 5] == 'S')
+					&& (a[i - 4] == 'c' || a[i - 4] == 'C')
+					&& (a[i - 3] == 'r' || a[i - 3] == 'R')
+					&& (a[i - 2] == 'i' || a[i - 2] == 'I')
+					&& (a[i - 1] == 'b' || a[i - 1] == 'B')
+					&& (a[i] == 'e' || a[i] == 'E')) {
+				matchlen = 9;
+				mask |= ACTION_SUBSCRIBE;
+			}
+			else
+				if (i >= 6 && (a[i - 6] == 'p' || a[i - 6] == 'P')
+						&& (a[i - 5] == 'u' || a[i - 5] == 'U')
+						&& (a[i - 4] == 'b' || a[i - 4] == 'B')
+						&& (a[i - 3] == 'l' || a[i - 3] == 'L')
+						&& (a[i - 2] == 'i' || a[i - 2] == 'I')
+						&& (a[i - 1] == 's' || a[i - 1] == 'S')
+						&& (a[i] == 'h' || a[i] == 'H')) {
+					matchlen = 7;
+					mask |= ACTION_PUBLISH;
+				}
+				else {
+					// parse error
+					throw new IllegalArgumentException("invalid permission: "
+							+ actions);
+				}
+			// make sure we didn't just match the tail of a word
+			// like "ackbarfpublish". Also, skip to the comma.
+			seencomma = false;
+			while (i >= matchlen && !seencomma) {
+				switch (a[i - matchlen]) {
+					case ',' :
+						seencomma = true;
+						/* FALLTHROUGH */
+					case ' ' :
+					case '\r' :
+					case '\n' :
+					case '\f' :
+					case '\t' :
+						break;
+					default :
+						throw new IllegalArgumentException(
+								"invalid permission: " + actions);
+				}
+				i--;
+			}
+			// point i at the location of the comma minus one (or -1).
+			i -= matchlen;
+		}
+		if (seencomma) {
+			throw new IllegalArgumentException("invalid permission: " + actions);
+		}
+		return mask;
+	}
+
+	/**
+	 * Determines if the specified permission is implied by this object.
+	 * 
+	 * <p>
+	 * This method checks that the topic name of the target is implied by the
+	 * topic name of this object. The list of <code>TopicPermission</code>
+	 * actions must either match or allow for the list of the target object to
+	 * imply the target <code>TopicPermission</code> action.
+	 * 
+	 * <pre>
+	 *    x/y/*,&quot;publish&quot; -&gt; x/y/z,&quot;publish&quot; is true
+	 *    *,&quot;subscribe&quot; -&gt; x/y,&quot;subscribe&quot;   is true
+	 *    *,&quot;publish&quot; -&gt; x/y,&quot;subscribe&quot;     is false
+	 *    x/y,&quot;publish&quot; -&gt; x/y/z,&quot;publish&quot;   is false
+	 * </pre>
+	 * 
+	 * @param p The target permission to interrogate.
+	 * @return <code>true</code> if the specified <code>TopicPermission</code>
+	 *         action is implied by this object; <code>false</code> otherwise.
+	 */
+	public boolean implies(Permission p) {
+		if (p instanceof TopicPermission) {
+			TopicPermission requested = (TopicPermission) p;
+			int requestedMask = requested.getActionsMask();
+			if ((getActionsMask() & requestedMask) == requestedMask) {
+				String requestedName = requested.getName();
+				String pre = prefix;
+				if (pre != null) {
+					return requestedName.startsWith(pre);
+				}
+
+				return requestedName.equals(getName());
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * Returns the canonical string representation of the
+	 * <code>TopicPermission</code> actions.
+	 * 
+	 * <p>
+	 * Always returns present <code>TopicPermission</code> actions in the
+	 * following order: <code>publish</code>,<code>subscribe</code>.
+	 * 
+	 * @return Canonical string representation of the
+	 *         <code>TopicPermission</code> actions.
+	 */
+	public String getActions() {
+		String result = actions;
+		if (result == null) {
+			StringBuffer sb = new StringBuffer();
+			boolean comma = false;
+			int mask = getActionsMask();
+			if ((mask & ACTION_PUBLISH) == ACTION_PUBLISH) {
+				sb.append(PUBLISH);
+				comma = true;
+			}
+			if ((mask & ACTION_SUBSCRIBE) == ACTION_SUBSCRIBE) {
+				if (comma)
+					sb.append(',');
+				sb.append(SUBSCRIBE);
+			}
+			actions = result = sb.toString();
+		}
+		return result;
+	}
+
+	/**
+	 * Returns a new <code>PermissionCollection</code> object suitable for
+	 * storing <code>TopicPermission</code> objects.
+	 * 
+	 * @return A new <code>PermissionCollection</code> object.
+	 */
+	public PermissionCollection newPermissionCollection() {
+		return new TopicPermissionCollection();
+	}
+
+	/**
+	 * Determines the equality of two <code>TopicPermission</code> objects.
+	 * 
+	 * This method checks that specified <code>TopicPermission</code> has the
+	 * same topic name and actions as this <code>TopicPermission</code> object.
+	 * 
+	 * @param obj The object to test for equality with this
+	 *        <code>TopicPermission</code> object.
+	 * @return <code>true</code> if <code>obj</code> is a
+	 *         <code>TopicPermission</code>, and has the same topic name and
+	 *         actions as this <code>TopicPermission</code> object;
+	 *         <code>false</code> otherwise.
+	 */
+	public boolean equals(Object obj) {
+		if (obj == this) {
+			return true;
+		}
+		if (!(obj instanceof TopicPermission)) {
+			return false;
+		}
+		TopicPermission tp = (TopicPermission) obj;
+		return (getActionsMask() == tp.getActionsMask())
+				&& getName().equals(tp.getName());
+	}
+
+	/**
+	 * Returns the hash code value for this object.
+	 * 
+	 * @return A hash code value for this object.
+	 */
+	public int hashCode() {
+		int h = 31 * 17 + getName().hashCode();
+		h = 31 * h + getActions().hashCode();
+		return h;
+	}
+
+	/**
+	 * WriteObject is called to save the state of this permission object to a
+	 * stream. The actions are serialized, and the superclass takes care of the
+	 * name.
+	 */
+	private synchronized void writeObject(java.io.ObjectOutputStream s)
+			throws IOException {
+		// Write out the actions. The superclass takes care of the name
+		// call getActions to make sure actions field is initialized
+		if (actions == null)
+			getActions();
+		s.defaultWriteObject();
+	}
+
+	/**
+	 * readObject is called to restore the state of this permission from a
+	 * stream.
+	 */
+	private synchronized void readObject(java.io.ObjectInputStream s)
+			throws IOException, ClassNotFoundException {
+		// Read in the action, then initialize the rest
+		s.defaultReadObject();
+		setTransients(parseActions(actions));
+	}
+}
+
+/**
+ * Stores a set of <code>TopicPermission</code> permissions.
+ * 
+ * @see java.security.Permission
+ * @see java.security.Permissions
+ * @see java.security.PermissionCollection
+ */
+final class TopicPermissionCollection extends PermissionCollection {
+	static final long		serialVersionUID	= -614647783533924048L;
+	/**
+	 * Table of permissions.
+	 * 
+	 * @serial
+	 * @GuardedBy this
+	 */
+	private final Hashtable	permissions;
+	/**
+	 * Boolean saying if "*" is in the collection.
+	 * 
+	 * @serial
+	 * @GuardedBy this
+	 */
+	private boolean			all_allowed;
+
+	/**
+	 * Create an empty TopicPermissions object.
+	 * 
+	 */
+	public TopicPermissionCollection() {
+		permissions = new Hashtable();
+		all_allowed = false;
+	}
+
+	/**
+	 * Adds a permission to the <code>TopicPermission</code> objects. The key
+	 * for the hash is the name.
+	 * 
+	 * @param permission The <code>TopicPermission</code> object to add.
+	 * 
+	 * @throws IllegalArgumentException If the permission is not a
+	 *         <code>TopicPermission</code> instance.
+	 * 
+	 * @throws SecurityException If this <code>TopicPermissionCollection</code>
+	 *         object has been marked read-only.
+	 */
+	public void add(final Permission permission) {
+		if (!(permission instanceof TopicPermission)) {
+			throw new IllegalArgumentException("invalid permission: "
+					+ permission);
+		}
+		if (isReadOnly()) {
+			throw new SecurityException("attempt to add a Permission to a "
+					+ "readonly PermissionCollection");
+		}
+		final TopicPermission tp = (TopicPermission) permission;
+		final String name = tp.getName();
+		final int newMask = tp.getActionsMask();
+
+		synchronized (this) {
+			final TopicPermission existing = (TopicPermission) permissions
+					.get(name);
+			if (existing != null) {
+				final int oldMask = existing.getActionsMask();
+				if (oldMask != newMask) {
+					permissions.put(name, new TopicPermission(name, oldMask
+							| newMask));
+				}
+			}
+			else {
+				permissions.put(name, tp);
+			}
+			if (!all_allowed) {
+				if (name.equals("*"))
+					all_allowed = true;
+			}
+		}
+	}
+
+	/**
+	 * Determines if the specified permissions implies the permissions expressed
+	 * in <code>permission</code>.
+	 * 
+	 * @param permission The Permission object to compare with this
+	 *        <code>TopicPermission</code> object.
+	 * 
+	 * @return <code>true</code> if <code>permission</code> is a proper subset
+	 *         of a permission in the set; <code>false</code> otherwise.
+	 */
+	public boolean implies(final Permission permission) {
+		if (!(permission instanceof TopicPermission)) {
+			return false;
+		}
+		final TopicPermission requested = (TopicPermission) permission;
+		String name = requested.getName();
+		final int desired = requested.getActionsMask();
+		int effective = 0;
+
+		TopicPermission x;
+		// short circuit if the "*" Permission was added
+		synchronized (this) {
+			if (all_allowed) {
+				x = (TopicPermission) permissions.get("*");
+				if (x != null) {
+					effective |= x.getActionsMask();
+					if ((effective & desired) == desired) {
+						return true;
+					}
+				}
+			}
+			x = (TopicPermission) permissions.get(name);
+		}
+		// strategy:
+		// Check for full match first. Then work our way up the
+		// name looking for matches on a/b/*
+		if (x != null) {
+			// we have a direct hit!
+			effective |= x.getActionsMask();
+			if ((effective & desired) == desired) {
+				return true;
+			}
+		}
+		// work our way up the tree...
+		int last;
+		int offset = name.length() - 1;
+		while ((last = name.lastIndexOf("/", offset)) != -1) {
+			name = name.substring(0, last + 1) + "*";
+			synchronized (this) {
+				x = (TopicPermission) permissions.get(name);
+			}
+			if (x != null) {
+				effective |= x.getActionsMask();
+				if ((effective & desired) == desired) {
+					return true;
+				}
+			}
+			offset = last - 1;
+		}
+		// we don't have to check for "*" as it was already checked
+		// at the top (all_allowed), so we just return false
+		return false;
+	}
+
+	/**
+	 * Returns an enumeration of all <code>TopicPermission</code> objects in the
+	 * container.
+	 * 
+	 * @return Enumeration of all <code>TopicPermission</code> objects.
+	 */
+	public Enumeration elements() {
+		return permissions.elements();
+	}
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/event/package.html b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/event/package.html
new file mode 100644
index 0000000..0d9d0bf
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/event/package.html
@@ -0,0 +1,10 @@
+<!-- $Revision: 6204 $ -->
+<BODY>
+<p>Event Admin Package Version 1.2.
+<p>Bundles wishing to use this package must list the package
+in the Import-Package header of the bundle's manifest.
+For example:
+<pre>
+Import-Package: org.osgi.service.event; version=&quot;[1.2,2.0)&quot;
+</pre>
+</BODY>
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/event/packageinfo b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/event/packageinfo
new file mode 100644
index 0000000..ef7df68
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/event/packageinfo
@@ -0,0 +1 @@
+version 1.2
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/http/HttpContext.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/http/HttpContext.java
new file mode 100644
index 0000000..e39cd17
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/http/HttpContext.java
@@ -0,0 +1,166 @@
+/*
+ * Copyright (c) OSGi Alliance (2000, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.http;
+
+import java.io.IOException;
+import java.net.URL;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * This interface defines methods that the Http Service may call to get
+ * information about a registration.
+ * 
+ * <p>
+ * Servlets and resources may be registered with an <code>HttpContext</code>
+ * object; if no <code>HttpContext</code> object is specified, a default
+ * <code>HttpContext</code> object is used. Servlets that are registered using the
+ * same <code>HttpContext</code> object will share the same
+ * <code>ServletContext</code> object.
+ * 
+ * <p>
+ * This interface is implemented by users of the <code>HttpService</code>.
+ * 
+ * @version $Revision: 5673 $
+ */
+public interface HttpContext {
+	/**
+	 * <code>HttpServletRequest</code> attribute specifying the name of the
+	 * authenticated user. The value of the attribute can be retrieved by
+	 * <code>HttpServletRequest.getRemoteUser</code>. This attribute name is
+	 * <code>org.osgi.service.http.authentication.remote.user</code>.
+	 * 
+	 * @since 1.1
+	 */
+	public static final String	REMOTE_USER			= "org.osgi.service.http.authentication.remote.user";
+	/**
+	 * <code>HttpServletRequest</code> attribute specifying the scheme used in
+	 * authentication. The value of the attribute can be retrieved by
+	 * <code>HttpServletRequest.getAuthType</code>. This attribute name is
+	 * <code>org.osgi.service.http.authentication.type</code>.
+	 * 
+	 * @since 1.1
+	 */
+	public static final String	AUTHENTICATION_TYPE	= "org.osgi.service.http.authentication.type";
+	/**
+	 * <code>HttpServletRequest</code> attribute specifying the
+	 * <code>Authorization</code> object obtained from the
+	 * <code>org.osgi.service.useradmin.UserAdmin</code> service. The value of the
+	 * attribute can be retrieved by
+	 * <code>HttpServletRequest.getAttribute(HttpContext.AUTHORIZATION)</code>.
+	 * This attribute name is <code>org.osgi.service.useradmin.authorization</code>.
+	 * 
+	 * @since 1.1
+	 */
+	public static final String	AUTHORIZATION		= "org.osgi.service.useradmin.authorization";
+
+	/**
+	 * Handles security for the specified request.
+	 * 
+	 * <p>
+	 * The Http Service calls this method prior to servicing the specified
+	 * request. This method controls whether the request is processed in the
+	 * normal manner or an error is returned.
+	 * 
+	 * <p>
+	 * If the request requires authentication and the Authorization header in
+	 * the request is missing or not acceptable, then this method should set the
+	 * WWW-Authenticate header in the response object, set the status in the
+	 * response object to Unauthorized(401) and return <code>false</code>. See
+	 * also RFC 2617: <i>HTTP Authentication: Basic and Digest Access
+	 * Authentication </i> (available at http://www.ietf.org/rfc/rfc2617.txt).
+	 * 
+	 * <p>
+	 * If the request requires a secure connection and the <code>getScheme</code>
+	 * method in the request does not return 'https' or some other acceptable
+	 * secure protocol, then this method should set the status in the response
+	 * object to Forbidden(403) and return <code>false</code>.
+	 * 
+	 * <p>
+	 * When this method returns <code>false</code>, the Http Service will send
+	 * the response back to the client, thereby completing the request. When
+	 * this method returns <code>true</code>, the Http Service will proceed with
+	 * servicing the request.
+	 * 
+	 * <p>
+	 * If the specified request has been authenticated, this method must set the
+	 * {@link #AUTHENTICATION_TYPE} request attribute to the type of
+	 * authentication used, and the {@link #REMOTE_USER} request attribute to
+	 * the remote user (request attributes are set using the
+	 * <code>setAttribute</code> method on the request). If this method does not
+	 * perform any authentication, it must not set these attributes.
+	 * 
+	 * <p>
+	 * If the authenticated user is also authorized to access certain resources,
+	 * this method must set the {@link #AUTHORIZATION} request attribute to the
+	 * <code>Authorization</code> object obtained from the
+	 * <code>org.osgi.service.useradmin.UserAdmin</code> service.
+	 * 
+	 * <p>
+	 * The servlet responsible for servicing the specified request determines
+	 * the authentication type and remote user by calling the
+	 * <code>getAuthType</code> and <code>getRemoteUser</code> methods,
+	 * respectively, on the request.
+	 * 
+	 * @param request the HTTP request
+	 * @param response the HTTP response
+	 * @return <code>true</code> if the request should be serviced, <code>false</code>
+	 *         if the request should not be serviced and Http Service will send
+	 *         the response back to the client.
+	 * @throws java.io.IOException may be thrown by this method. If this
+	 *            occurs, the Http Service will terminate the request and close
+	 *            the socket.
+	 */
+	public boolean handleSecurity(HttpServletRequest request,
+			HttpServletResponse response) throws IOException;
+
+	/**
+	 * Maps a resource name to a URL.
+	 * 
+	 * <p>
+	 * Called by the Http Service to map a resource name to a URL. For servlet
+	 * registrations, Http Service will call this method to support the
+	 * <code>ServletContext</code> methods <code>getResource</code> and
+	 * <code>getResourceAsStream</code>. For resource registrations, Http Service
+	 * will call this method to locate the named resource. The context can
+	 * control from where resources come. For example, the resource can be
+	 * mapped to a file in the bundle's persistent storage area via
+	 * <code>bundleContext.getDataFile(name).toURL()</code> or to a resource in
+	 * the context's bundle via <code>getClass().getResource(name)</code>
+	 * 
+	 * @param name the name of the requested resource
+	 * @return URL that Http Service can use to read the resource or
+	 *         <code>null</code> if the resource does not exist.
+	 */
+	public URL getResource(String name);
+
+	/**
+	 * Maps a name to a MIME type.
+	 * 
+	 * Called by the Http Service to determine the MIME type for the name. For
+	 * servlet registrations, the Http Service will call this method to support
+	 * the <code>ServletContext</code> method <code>getMimeType</code>. For
+	 * resource registrations, the Http Service will call this method to
+	 * determine the MIME type for the Content-Type header in the response.
+	 * 
+	 * @param name determine the MIME type for this name.
+	 * @return MIME type (e.g. text/html) of the name or <code>null</code> to
+	 *         indicate that the Http Service should determine the MIME type
+	 *         itself.
+	 */
+	public String getMimeType(String name);
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/http/HttpService.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/http/HttpService.java
new file mode 100644
index 0000000..c578a93
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/http/HttpService.java
@@ -0,0 +1,177 @@
+/*
+ * Copyright (c) OSGi Alliance (2000, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.http;
+
+import java.util.Dictionary;
+
+import javax.servlet.Servlet;
+import javax.servlet.ServletException;
+
+/**
+ * The Http Service allows other bundles in the OSGi environment to dynamically
+ * register resources and servlets into the URI namespace of Http Service. A
+ * bundle may later unregister its resources or servlets.
+ * 
+ * @version $Revision: 5673 $
+ * @see HttpContext
+ */
+public interface HttpService {
+	/**
+	 * Registers a servlet into the URI namespace.
+	 * 
+	 * <p>
+	 * The alias is the name in the URI namespace of the Http Service at which
+	 * the registration will be mapped.
+	 * 
+	 * <p>
+	 * An alias must begin with slash ('/') and must not end with slash ('/'),
+	 * with the exception that an alias of the form &quot;/&quot; is used to
+	 * denote the root alias. See the specification text for details on how HTTP
+	 * requests are mapped to servlet and resource registrations.
+	 * 
+	 * <p>
+	 * The Http Service will call the servlet's <code>init</code> method before
+	 * returning.
+	 * 
+	 * <pre>
+	 * httpService.registerServlet(&quot;/myservlet&quot;, servlet, initparams, context);
+	 * </pre>
+	 * 
+	 * <p>
+	 * Servlets registered with the same <code>HttpContext</code> object will
+	 * share the same <code>ServletContext</code>. The Http Service will call the
+	 * <code>context</code> argument to support the <code>ServletContext</code>
+	 * methods <code>getResource</code>,<code>getResourceAsStream</code> and
+	 * <code>getMimeType</code>, and to handle security for requests. If the
+	 * <code>context</code> argument is <code>null</code>, a default
+	 * <code>HttpContext</code> object is used (see
+	 * {@link #createDefaultHttpContext}).
+	 * 
+	 * @param alias name in the URI namespace at which the servlet is registered
+	 * @param servlet the servlet object to register
+	 * @param initparams initialization arguments for the servlet or
+	 *        <code>null</code> if there are none. This argument is used by the
+	 *        servlet's <code>ServletConfig</code> object.
+	 * @param context the <code>HttpContext</code> object for the registered
+	 *        servlet, or <code>null</code> if a default <code>HttpContext</code> is
+	 *        to be created and used.
+	 * @throws NamespaceException if the registration fails because the alias
+	 *            is already in use.
+	 * @throws javax.servlet.ServletException if the servlet's <code>init</code>
+	 *            method throws an exception, or the given servlet object has
+	 *            already been registered at a different alias.
+	 * @throws java.lang.IllegalArgumentException if any of the arguments are
+	 *            invalid
+	 */
+	public void registerServlet(String alias, Servlet servlet,
+			Dictionary initparams, HttpContext context)
+			throws ServletException, NamespaceException;
+
+	/**
+	 * Registers resources into the URI namespace.
+	 * 
+	 * <p>
+	 * The alias is the name in the URI namespace of the Http Service at which
+	 * the registration will be mapped. An alias must begin with slash ('/') and
+	 * must not end with slash ('/'), with the exception that an alias of the
+	 * form &quot;/&quot; is used to denote the root alias. The name parameter
+	 * must also not end with slash ('/') with the exception that a name of the
+	 * form &quot;/&quot; is used to denote the root of the bundle. See the
+	 * specification text for details on how HTTP requests are mapped to servlet
+	 * and resource registrations.
+	 * <p>
+	 * For example, suppose the resource name /tmp is registered to the alias
+	 * /files. A request for /files/foo.txt will map to the resource name
+	 * /tmp/foo.txt.
+	 * 
+	 * <pre>
+	 * httpservice.registerResources(&quot;/files&quot;, &quot;/tmp&quot;, context);
+	 * </pre>
+	 * 
+	 * The Http Service will call the <code>HttpContext</code> argument to map
+	 * resource names to URLs and MIME types and to handle security for
+	 * requests. If the <code>HttpContext</code> argument is <code>null</code>,
+	 * a default <code>HttpContext</code> is used (see
+	 * {@link #createDefaultHttpContext}).
+	 * 
+	 * @param alias name in the URI namespace at which the resources are
+	 *        registered
+	 * @param name the base name of the resources that will be registered
+	 * @param context the <code>HttpContext</code> object for the registered
+	 *        resources, or <code>null</code> if a default
+	 *        <code>HttpContext</code> is to be created and used.
+	 * @throws NamespaceException if the registration fails because the alias is
+	 *         already in use.
+	 * @throws java.lang.IllegalArgumentException if any of the parameters are
+	 *         invalid
+	 */
+	public void registerResources(String alias, String name,
+			HttpContext context) throws NamespaceException;
+
+	/**
+	 * Unregisters a previous registration done by <code>registerServlet</code> or
+	 * <code>registerResources</code> methods.
+	 * 
+	 * <p>
+	 * After this call, the registered alias in the URI name-space will no
+	 * longer be available. If the registration was for a servlet, the Http
+	 * Service must call the <code>destroy</code> method of the servlet before
+	 * returning.
+	 * <p>
+	 * If the bundle which performed the registration is stopped or otherwise
+	 * "unget"s the Http Service without calling {@link #unregister} then Http
+	 * Service must automatically unregister the registration. However, if the
+	 * registration was for a servlet, the <code>destroy</code> method of the
+	 * servlet will not be called in this case since the bundle may be stopped.
+	 * {@link #unregister} must be explicitly called to cause the
+	 * <code>destroy</code> method of the servlet to be called. This can be done
+	 * in the <code>BundleActivator.stop</code> method of the
+	 * bundle registering the servlet.
+	 * 
+	 * @param alias name in the URI name-space of the registration to unregister
+	 * @throws java.lang.IllegalArgumentException if there is no registration
+	 *            for the alias or the calling bundle was not the bundle which
+	 *            registered the alias.
+	 */
+	public void unregister(String alias);
+
+	/**
+	 * Creates a default <code>HttpContext</code> for registering servlets or
+	 * resources with the HttpService, a new <code>HttpContext</code> object is
+	 * created each time this method is called.
+	 * 
+	 * <p>
+	 * The behavior of the methods on the default <code>HttpContext</code> is
+	 * defined as follows:
+	 * <ul>
+	 * <li><code>getMimeType</code>- Does not define any customized MIME types
+	 * for the Content-Type header in the response, and always returns
+	 * <code>null</code>.
+	 * <li><code>handleSecurity</code>- Performs implementation-defined
+	 * authentication on the request.
+	 * <li><code>getResource</code>- Assumes the named resource is in the
+	 * context bundle; this method calls the context bundle's
+	 * <code>Bundle.getResource</code> method, and returns the appropriate URL to
+	 * access the resource. On a Java runtime environment that supports
+	 * permissions, the Http Service needs to be granted 
+	 * <code>org.osgi.framework.AdminPermission[*,RESOURCE]</code>.
+	 * </ul>
+	 * 
+	 * @return a default <code>HttpContext</code> object.
+	 * @since 1.1
+	 */
+	public HttpContext createDefaultHttpContext();
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/http/NamespaceException.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/http/NamespaceException.java
new file mode 100644
index 0000000..dce2ba8
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/http/NamespaceException.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) OSGi Alliance (2000, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.http;
+
+/**
+ * A NamespaceException is thrown to indicate an error with the caller's request
+ * to register a servlet or resources into the URI namespace of the Http
+ * Service. This exception indicates that the requested alias already is in use.
+ * 
+ * @version $Revision: 6083 $
+ */
+public class NamespaceException extends Exception {
+    static final long serialVersionUID = 7235606031147877747L;
+    
+	/**
+	 * Construct a <code>NamespaceException</code> object with a detail message.
+	 * 
+	 * @param message the detail message
+	 */
+	public NamespaceException(String message) {
+		super(message);
+	}
+
+	/**
+	 * Construct a <code>NamespaceException</code> object with a detail message
+	 * and a nested exception.
+	 * 
+	 * @param message The detail message.
+	 * @param cause The nested exception.
+	 */
+	public NamespaceException(String message, Throwable cause) {
+		super(message, cause);
+	}
+
+	/**
+	 * Returns the nested exception.
+	 * 
+	 * <p>
+	 * This method predates the general purpose exception chaining mechanism.
+	 * The <code>getCause()</code> method is now the preferred means of
+	 * obtaining this information.
+	 * 
+	 * @return The result of calling <code>getCause()</code>.
+	 */
+	public Throwable getException() {
+		return getCause();
+	}
+	
+	/**
+	 * Returns the cause of this exception or <code>null</code> if no cause was
+	 * set.
+	 * 
+	 * @return The cause of this exception or <code>null</code> if no cause was
+	 *         set.
+	 * @since 1.2
+	 */
+	public Throwable getCause() {
+		return super.getCause();
+	}
+
+	/**
+	 * Initializes the cause of this exception to the specified value.
+	 * 
+	 * @param cause The cause of this exception.
+	 * @return This exception.
+	 * @throws IllegalArgumentException If the specified cause is this
+	 *         exception.
+	 * @throws IllegalStateException If the cause of this exception has already
+	 *         been set.
+	 * @since 1.2
+	 */
+	public Throwable initCause(Throwable cause) {
+		return super.initCause(cause);
+	}
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/http/package.html b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/http/package.html
new file mode 100644
index 0000000..21f5fed
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/http/package.html
@@ -0,0 +1,10 @@
+<!-- $Revision: 6204 $ -->
+<BODY>
+<p>Http Service Package Version 1.2.
+<p>Bundles wishing to use this package must list the package
+in the Import-Package header of the bundle's manifest.
+For example:
+<pre>
+Import-Package: org.osgi.service.http; version=&quot;[1.2,2.0)&quot;
+</pre>
+</BODY>
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/http/packageinfo b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/http/packageinfo
new file mode 100644
index 0000000..6ebb891
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/http/packageinfo
@@ -0,0 +1 @@
+version 1.2.1
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/io/ConnectionFactory.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/io/ConnectionFactory.java
new file mode 100644
index 0000000..71a0af8
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/io/ConnectionFactory.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) OSGi Alliance (2002, 2008). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.io;
+
+import java.io.IOException;
+
+import javax.microedition.io.Connection;
+
+/**
+ * A Connection Factory service is called by the implementation of the Connector
+ * Service to create <code>javax.microedition.io.Connection</code> objects which
+ * implement the scheme named by <code>IO_SCHEME</code>.
+ * 
+ * When a <code>ConnectorService.open</code> method is called, the implementation
+ * of the Connector Service will examine the specified name for a scheme. The
+ * Connector Service will then look for a Connection Factory service which is
+ * registered with the service property <code>IO_SCHEME</code> which matches the
+ * scheme. The {@link #createConnection} method of the selected Connection
+ * Factory will then be called to create the actual <code>Connection</code>
+ * object.
+ * 
+ * @version $Revision: 5673 $
+ */
+public interface ConnectionFactory {
+	/**
+	 * Service property containing the scheme(s) for which this Connection
+	 * Factory can create <code>Connection</code> objects. This property is of
+	 * type <code>String</code> or <code>String[]</code>.
+	 */
+	public static final String	IO_SCHEME	= "io.scheme";
+
+	/**
+	 * Create a new <code>Connection</code> object for the specified URI.
+	 * 
+	 * @param name The full URI passed to the <code>ConnectorService.open</code>
+	 *        method
+	 * @param mode The mode parameter passed to the
+	 *        <code>ConnectorService.open</code> method
+	 * @param timeouts The timeouts parameter passed to the
+	 *        <code>ConnectorService.open</code> method
+	 * @return A new <code>javax.microedition.io.Connection</code> object.
+	 * @throws IOException If a <code>javax.microedition.io.Connection</code>
+	 *         object can not not be created.
+	 */
+	public Connection createConnection(String name, int mode, boolean timeouts)
+			throws IOException;
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/io/ConnectorService.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/io/ConnectorService.java
new file mode 100644
index 0000000..dbfc04a
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/io/ConnectorService.java
@@ -0,0 +1,165 @@
+/*
+ * Copyright (c) OSGi Alliance (2002, 2008). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.io;
+
+import java.io.*;
+
+import javax.microedition.io.Connection;
+import javax.microedition.io.Connector;
+
+/**
+ * The Connector Service should be called to create and open
+ * <code>javax.microedition.io.Connection</code> objects.
+ * 
+ * When an <code>open*</code> method is called, the implementation of the
+ * Connector Service will examine the specified name for a scheme. The Connector
+ * Service will then look for a Connection Factory service which is registered
+ * with the service property <code>IO_SCHEME</code> which matches the scheme. The
+ * <code>createConnection</code> method of the selected Connection Factory will
+ * then be called to create the actual <code>Connection</code> object.
+ * 
+ * <p>
+ * If more than one Connection Factory service is registered for a particular
+ * scheme, the service with the highest ranking (as specified in its
+ * <code>service.ranking</code> property) is called. If there is a tie in ranking,
+ * the service with the lowest service ID (as specified in its
+ * <code>service.id</code> property), that is the service that was registered
+ * first, is called. This is the same algorithm used by
+ * <code>BundleContext.getServiceReference</code>.
+ * 
+ * @version $Revision: 5673 $
+ */
+public interface ConnectorService {
+	/**
+	 * Read access mode.
+	 * 
+	 * @see "javax.microedition.io.Connector.READ"
+	 */
+	public static final int	READ		= Connector.READ;
+	/**
+	 * Write access mode.
+	 * 
+	 * @see "javax.microedition.io.Connector.WRITE"
+	 */
+	public static final int	WRITE		= Connector.WRITE;
+	/**
+	 * Read/Write access mode.
+	 * 
+	 * @see "javax.microedition.io.Connector.READ_WRITE"
+	 */
+	public static final int	READ_WRITE	= Connector.READ_WRITE;
+
+	/**
+	 * Create and open a <code>Connection</code> object for the specified name.
+	 * 
+	 * @param name The URI for the connection.
+	 * @return A new <code>javax.microedition.io.Connection</code> object.
+	 * @throws IllegalArgumentException If a parameter is invalid.
+	 * @throws javax.microedition.io.ConnectionNotFoundException If the
+	 *         connection cannot be found.
+	 * @throws IOException If some other kind of I/O error occurs.
+	 * @see "javax.microedition.io.Connector.open(String name)"
+	 */
+	public Connection open(String name) throws IOException;
+
+	/**
+	 * Create and open a <code>Connection</code> object for the specified name and
+	 * access mode.
+	 * 
+	 * @param name The URI for the connection.
+	 * @param mode The access mode.
+	 * @return A new <code>javax.microedition.io.Connection</code> object.
+	 * @throws IllegalArgumentException If a parameter is invalid.
+	 * @throws javax.microedition.io.ConnectionNotFoundException If the
+	 *         connection cannot be found.
+	 * @throws IOException If some other kind of I/O error occurs.
+	 * @see "javax.microedition.io.Connector.open(String name, int mode)"
+	 */
+	public Connection open(String name, int mode) throws IOException;
+
+	/**
+	 * Create and open a <code>Connection</code> object for the specified name,
+	 * access mode and timeouts.
+	 * 
+	 * @param name The URI for the connection.
+	 * @param mode The access mode.
+	 * @param timeouts A flag to indicate that the caller wants timeout
+	 *        exceptions.
+	 * @return A new <code>javax.microedition.io.Connection</code> object.
+	 * @throws IllegalArgumentException If a parameter is invalid.
+	 * @throws javax.microedition.io.ConnectionNotFoundException If the
+	 *         connection cannot be found.
+	 * @throws IOException If some other kind of I/O error occurs.
+	 * @see "<code>javax.microedition.io.Connector.open</code>"
+	 */
+	public Connection open(String name, int mode, boolean timeouts)
+			throws IOException;
+
+	/**
+	 * Create and open an <code>InputStream</code> object for the specified name.
+	 * 
+	 * @param name The URI for the connection.
+	 * @return An <code>InputStream</code> object.
+	 * @throws IllegalArgumentException If a parameter is invalid.
+	 * @throws javax.microedition.io.ConnectionNotFoundException If the
+	 *         connection cannot be found.
+	 * @throws IOException If some other kind of I/O error occurs.
+	 * @see "javax.microedition.io.Connector.openInputStream(String name)"
+	 */
+	public InputStream openInputStream(String name) throws IOException;
+
+	/**
+	 * Create and open a <code>DataInputStream</code> object for the specified
+	 * name.
+	 * 
+	 * @param name The URI for the connection.
+	 * @return A <code>DataInputStream</code> object.
+	 * @throws IllegalArgumentException If a parameter is invalid.
+	 * @throws javax.microedition.io.ConnectionNotFoundException If the
+	 *         connection cannot be found.
+	 * @throws IOException If some other kind of I/O error occurs.
+	 * @see "javax.microedition.io.Connector.openDataInputStream(String name)"
+	 */
+	public DataInputStream openDataInputStream(String name) throws IOException;
+
+	/**
+	 * Create and open an <code>OutputStream</code> object for the specified name.
+	 * 
+	 * @param name The URI for the connection.
+	 * @return An <code>OutputStream</code> object.
+	 * @throws IllegalArgumentException If a parameter is invalid.
+	 * @throws javax.microedition.io.ConnectionNotFoundException If the
+	 *         connection cannot be found.
+	 * @throws IOException If some other kind of I/O error occurs.
+	 * @see "javax.microedition.io.Connector.openOutputStream(String name)"
+	 */
+	public OutputStream openOutputStream(String name) throws IOException;
+
+	/**
+	 * Create and open a <code>DataOutputStream</code> object for the specified
+	 * name.
+	 * 
+	 * @param name The URI for the connection.
+	 * @return A <code>DataOutputStream</code> object.
+	 * @throws IllegalArgumentException If a parameter is invalid.
+	 * @throws javax.microedition.io.ConnectionNotFoundException If the
+	 *         connection cannot be found.
+	 * @throws IOException If some other kind of I/O error occurs.
+	 * @see "javax.microedition.io.Connector.openDataOutputStream(String name)"
+	 */
+	public DataOutputStream openDataOutputStream(String name)
+			throws IOException;
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/io/package.html b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/io/package.html
new file mode 100644
index 0000000..cecc3c3
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/io/package.html
@@ -0,0 +1,10 @@
+<!-- $Revision: 6204 $ -->
+<BODY>
+<p>IO Connector Package Version 1.0.
+<p>Bundles wishing to use this package must list the package
+in the Import-Package header of the bundle's manifest.
+For example:
+<pre>
+Import-Package: org.osgi.service.io; version=&quot;[1.0,2.0)&quot;, javax.microedition.io
+</pre>
+</BODY>
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/io/packageinfo b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/io/packageinfo
new file mode 100644
index 0000000..7c8de03
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/io/packageinfo
@@ -0,0 +1 @@
+version 1.0
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/log/LogEntry.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/log/LogEntry.java
new file mode 100644
index 0000000..8130cf8
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/log/LogEntry.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) OSGi Alliance (2000, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.log;
+
+import org.osgi.framework.Bundle;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * Provides methods to access the information contained in an individual Log
+ * Service log entry.
+ * 
+ * <p>
+ * A <code>LogEntry</code> object may be acquired from the
+ * <code>LogReaderService.getLog</code> method or by registering a
+ * <code>LogListener</code> object.
+ * 
+ * @ThreadSafe
+ * @version $Revision: 5654 $
+ * @see LogReaderService#getLog
+ * @see LogListener
+ */
+public interface LogEntry {
+	/**
+	 * Returns the bundle that created this <code>LogEntry</code> object.
+	 * 
+	 * @return The bundle that created this <code>LogEntry</code> object;
+	 *         <code>null</code> if no bundle is associated with this
+	 *         <code>LogEntry</code> object.
+	 */
+	public Bundle getBundle();
+
+	/**
+	 * Returns the <code>ServiceReference</code> object for the service associated
+	 * with this <code>LogEntry</code> object.
+	 * 
+	 * @return <code>ServiceReference</code> object for the service associated
+	 *         with this <code>LogEntry</code> object; <code>null</code> if no
+	 *         <code>ServiceReference</code> object was provided.
+	 */
+	public ServiceReference getServiceReference();
+
+	/**
+	 * Returns the severity level of this <code>LogEntry</code> object.
+	 * 
+	 * <p>
+	 * This is one of the severity levels defined by the <code>LogService</code>
+	 * interface.
+	 * 
+	 * @return Severity level of this <code>LogEntry</code> object.
+	 * 
+	 * @see LogService#LOG_ERROR
+	 * @see LogService#LOG_WARNING
+	 * @see LogService#LOG_INFO
+	 * @see LogService#LOG_DEBUG
+	 */
+	public int getLevel();
+
+	/**
+	 * Returns the human readable message associated with this <code>LogEntry</code>
+	 * object.
+	 * 
+	 * @return <code>String</code> containing the message associated with this
+	 *         <code>LogEntry</code> object.
+	 */
+	public String getMessage();
+
+	/**
+	 * Returns the exception object associated with this <code>LogEntry</code>
+	 * object.
+	 * 
+	 * <p>
+	 * In some implementations, the returned exception may not be the original
+	 * exception. To avoid references to a bundle defined exception class, thus
+	 * preventing an uninstalled bundle from being garbage collected, the Log
+	 * Service may return an exception object of an implementation defined
+	 * Throwable subclass. The returned object will attempt to provide as much
+	 * information as possible from the original exception object such as the
+	 * message and stack trace.
+	 * 
+	 * @return <code>Throwable</code> object of the exception associated with this
+	 *         <code>LogEntry</code>;<code>null</code> if no exception is
+	 *         associated with this <code>LogEntry</code> object.
+	 */
+	public Throwable getException();
+
+	/**
+	 * Returns the value of <code>currentTimeMillis()</code> at the time this
+	 * <code>LogEntry</code> object was created.
+	 * 
+	 * @return The system time in milliseconds when this <code>LogEntry</code>
+	 *         object was created.
+	 * @see "System.currentTimeMillis()"
+	 */
+	public long getTime();
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/log/LogListener.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/log/LogListener.java
new file mode 100644
index 0000000..de29a56
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/log/LogListener.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) OSGi Alliance (2000, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.log;
+
+import java.util.EventListener;
+
+/**
+ * Subscribes to <code>LogEntry</code> objects from the <code>LogReaderService</code>.
+ * 
+ * <p>
+ * A <code>LogListener</code> object may be registered with the Log Reader Service
+ * using the <code>LogReaderService.addLogListener</code> method. After the
+ * listener is registered, the <code>logged</code> method will be called for each
+ * <code>LogEntry</code> object created. The <code>LogListener</code> object may be
+ * unregistered by calling the <code>LogReaderService.removeLogListener</code>
+ * method.
+ * 
+ * @ThreadSafe
+ * @version $Revision: 5654 $
+ * @see LogReaderService
+ * @see LogEntry
+ * @see LogReaderService#addLogListener(LogListener)
+ * @see LogReaderService#removeLogListener(LogListener)
+ */
+public interface LogListener extends EventListener {
+	/**
+	 * Listener method called for each LogEntry object created.
+	 * 
+	 * <p>
+	 * As with all event listeners, this method should return to its caller as
+	 * soon as possible.
+	 * 
+	 * @param entry A <code>LogEntry</code> object containing log information.
+	 * @see LogEntry
+	 */
+	public void logged(LogEntry entry);
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/log/LogReaderService.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/log/LogReaderService.java
new file mode 100644
index 0000000..b3753e4
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/log/LogReaderService.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) OSGi Alliance (2000, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.log;
+
+import java.util.Enumeration;
+
+/**
+ * Provides methods to retrieve <code>LogEntry</code> objects from the log.
+ * <p>
+ * There are two ways to retrieve <code>LogEntry</code> objects:
+ * <ul>
+ * <li>The primary way to retrieve <code>LogEntry</code> objects is to register a
+ * <code>LogListener</code> object whose <code>LogListener.logged</code> method will
+ * be called for each entry added to the log.
+ * <li>To retrieve past <code>LogEntry</code> objects, the <code>getLog</code>
+ * method can be called which will return an <code>Enumeration</code> of all
+ * <code>LogEntry</code> objects in the log.
+ * 
+ * @ThreadSafe
+ * @version $Revision: 5654 $
+ * @see LogEntry
+ * @see LogListener
+ * @see LogListener#logged(LogEntry)
+ */
+public interface LogReaderService {
+	/**
+	 * Subscribes to <code>LogEntry</code> objects.
+	 * 
+	 * <p>
+	 * This method registers a <code>LogListener</code> object with the Log Reader
+	 * Service. The <code>LogListener.logged(LogEntry)</code> method will be
+	 * called for each <code>LogEntry</code> object placed into the log.
+	 * 
+	 * <p>
+	 * When a bundle which registers a <code>LogListener</code> object is stopped
+	 * or otherwise releases the Log Reader Service, the Log Reader Service must
+	 * remove all of the bundle's listeners.
+	 * 
+	 * <p>
+	 * If this Log Reader Service's list of listeners already contains a
+	 * listener <code>l</code> such that <code>(l==listener)</code>, this method
+	 * does nothing.
+	 * 
+	 * @param listener A <code>LogListener</code> object to register; the
+	 *        <code>LogListener</code> object is used to receive <code>LogEntry</code>
+	 *        objects.
+	 * @see LogListener
+	 * @see LogEntry
+	 * @see LogListener#logged(LogEntry)
+	 */
+	public void addLogListener(LogListener listener);
+
+	/**
+	 * Unsubscribes to <code>LogEntry</code> objects.
+	 * 
+	 * <p>
+	 * This method unregisters a <code>LogListener</code> object from the Log
+	 * Reader Service.
+	 * 
+	 * <p>
+	 * If <code>listener</code> is not contained in this Log Reader Service's list
+	 * of listeners, this method does nothing.
+	 * 
+	 * @param listener A <code>LogListener</code> object to unregister.
+	 * @see LogListener
+	 */
+	public void removeLogListener(LogListener listener);
+
+	/**
+	 * Returns an <code>Enumeration</code> of all <code>LogEntry</code> objects in
+	 * the log.
+	 * 
+	 * <p>
+	 * Each element of the enumeration is a <code>LogEntry</code> object, ordered
+	 * with the most recent entry first. Whether the enumeration is of all
+	 * <code>LogEntry</code> objects since the Log Service was started or some
+	 * recent past is implementation-specific. Also implementation-specific is
+	 * whether informational and debug <code>LogEntry</code> objects are included
+	 * in the enumeration.
+	 * @return An <code>Enumeration</code> of all <code>LogEntry</code> objects in
+	 * the log.
+	 */
+	public Enumeration getLog();
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/log/LogService.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/log/LogService.java
new file mode 100644
index 0000000..1889355
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/log/LogService.java
@@ -0,0 +1,155 @@
+/*
+ * Copyright (c) OSGi Alliance (2000, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.log;
+
+import org.osgi.framework.ServiceReference;
+
+/**
+ * Provides methods for bundles to write messages to the log.
+ * 
+ * <p>
+ * <code>LogService</code> methods are provided to log messages; optionally with a
+ * <code>ServiceReference</code> object or an exception.
+ * 
+ * <p>
+ * Bundles must log messages in the OSGi environment with a severity level
+ * according to the following hierarchy:
+ * <ol>
+ * <li>{@link #LOG_ERROR}
+ * <li>{@link #LOG_WARNING}
+ * <li>{@link #LOG_INFO}
+ * <li>{@link #LOG_DEBUG}
+ * </ol>
+ * 
+ * @ThreadSafe
+ * @version $Revision: 5654 $
+ */
+public interface LogService {
+	/**
+	 * An error message (Value 1).
+	 * 
+	 * <p>
+	 * This log entry indicates the bundle or service may not be functional.
+	 */
+	public static final int	LOG_ERROR	= 1;
+	/**
+	 * A warning message (Value 2).
+	 * 
+	 * <p>
+	 * This log entry indicates a bundle or service is still functioning but may
+	 * experience problems in the future because of the warning condition.
+	 */
+	public static final int	LOG_WARNING	= 2;
+	/**
+	 * An informational message (Value 3).
+	 * 
+	 * <p>
+	 * This log entry may be the result of any change in the bundle or service
+	 * and does not indicate a problem.
+	 */
+	public static final int	LOG_INFO	= 3;
+	/**
+	 * A debugging message (Value 4).
+	 * 
+	 * <p>
+	 * This log entry is used for problem determination and may be irrelevant to
+	 * anyone but the bundle developer.
+	 */
+	public static final int	LOG_DEBUG	= 4;
+
+	/**
+	 * Logs a message.
+	 * 
+	 * <p>
+	 * The <code>ServiceReference</code> field and the <code>Throwable</code> field
+	 * of the <code>LogEntry</code> object will be set to <code>null</code>.
+	 * 
+	 * @param level The severity of the message. This should be one of the
+	 *        defined log levels but may be any integer that is interpreted in a
+	 *        user defined way.
+	 * @param message Human readable string describing the condition or
+	 *        <code>null</code>.
+	 * @see #LOG_ERROR
+	 * @see #LOG_WARNING
+	 * @see #LOG_INFO
+	 * @see #LOG_DEBUG
+	 */
+	public void log(int level, String message);
+
+	/**
+	 * Logs a message with an exception.
+	 * 
+	 * <p>
+	 * The <code>ServiceReference</code> field of the <code>LogEntry</code> object
+	 * will be set to <code>null</code>.
+	 * 
+	 * @param level The severity of the message. This should be one of the
+	 *        defined log levels but may be any integer that is interpreted in a
+	 *        user defined way.
+	 * @param message The human readable string describing the condition or
+	 *        <code>null</code>.
+	 * @param exception The exception that reflects the condition or
+	 *        <code>null</code>.
+	 * @see #LOG_ERROR
+	 * @see #LOG_WARNING
+	 * @see #LOG_INFO
+	 * @see #LOG_DEBUG
+	 */
+	public void log(int level, String message, Throwable exception);
+
+	/**
+	 * Logs a message associated with a specific <code>ServiceReference</code>
+	 * object.
+	 * 
+	 * <p>
+	 * The <code>Throwable</code> field of the <code>LogEntry</code> will be set to
+	 * <code>null</code>.
+	 * 
+	 * @param sr The <code>ServiceReference</code> object of the service that this
+	 *        message is associated with or <code>null</code>.
+	 * @param level The severity of the message. This should be one of the
+	 *        defined log levels but may be any integer that is interpreted in a
+	 *        user defined way.
+	 * @param message Human readable string describing the condition or
+	 *        <code>null</code>.
+	 * @see #LOG_ERROR
+	 * @see #LOG_WARNING
+	 * @see #LOG_INFO
+	 * @see #LOG_DEBUG
+	 */
+	public void log(ServiceReference sr, int level, String message);
+
+	/**
+	 * Logs a message with an exception associated and a
+	 * <code>ServiceReference</code> object.
+	 * 
+	 * @param sr The <code>ServiceReference</code> object of the service that this
+	 *        message is associated with.
+	 * @param level The severity of the message. This should be one of the
+	 *        defined log levels but may be any integer that is interpreted in a
+	 *        user defined way.
+	 * @param message Human readable string describing the condition or
+	 *        <code>null</code>.
+	 * @param exception The exception that reflects the condition or
+	 *        <code>null</code>.
+	 * @see #LOG_ERROR
+	 * @see #LOG_WARNING
+	 * @see #LOG_INFO
+	 * @see #LOG_DEBUG
+	 */
+	public void log(ServiceReference sr, int level, String message,
+			Throwable exception);
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/log/package.html b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/log/package.html
new file mode 100644
index 0000000..02312bb
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/log/package.html
@@ -0,0 +1,11 @@
+<!-- $Revision: 6204 $ -->
+<BODY>
+<p>Log Service Package Version 1.3.
+<p>Bundles wishing to use this package must list the package
+in the Import-Package header of the bundle's manifest.
+For example:
+<pre>
+Import-Package: org.osgi.service.log; version=&quot;[1.3,2.0)&quot;
+</pre>
+</BODY>
+
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/log/packageinfo b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/log/packageinfo
new file mode 100644
index 0000000..0117a56
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/log/packageinfo
@@ -0,0 +1 @@
+version 1.3
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/metatype/AttributeDefinition.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/metatype/AttributeDefinition.java
new file mode 100644
index 0000000..d427163
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/metatype/AttributeDefinition.java
@@ -0,0 +1,277 @@
+/*
+ * Copyright (c) OSGi Alliance (2001, 2008). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.metatype;
+
+/**
+ * An interface to describe an attribute.
+ * 
+ * <p>
+ * An <code>AttributeDefinition</code> object defines a description of the data
+ * type of a property/attribute.
+ * 
+ * @version $Revision: 5673 $
+ */
+public interface AttributeDefinition {
+	/**
+	 * The <code>STRING</code> (1) type.
+	 * 
+	 * <p>
+	 * Attributes of this type should be stored as <code>String</code>,
+	 * <code>Vector</code> with <code>String</code> or <code>String[]</code> objects,
+	 * depending on the <code>getCardinality()</code> value.
+	 */
+	public static final int	STRING		= 1;
+	/**
+	 * The <code>LONG</code> (2) type.
+	 * 
+	 * Attributes of this type should be stored as <code>Long</code>,
+	 * <code>Vector</code> with <code>Long</code> or <code>long[]</code> objects,
+	 * depending on the <code>getCardinality()</code> value.
+	 */
+	public static final int	LONG		= 2;
+	/**
+	 * The <code>INTEGER</code> (3) type.
+	 * 
+	 * Attributes of this type should be stored as <code>Integer</code>,
+	 * <code>Vector</code> with <code>Integer</code> or <code>int[]</code> objects,
+	 * depending on the <code>getCardinality()</code> value.
+	 */
+	public static final int	INTEGER		= 3;
+	/**
+	 * The <code>SHORT</code> (4) type.
+	 * 
+	 * Attributes of this type should be stored as <code>Short</code>,
+	 * <code>Vector</code> with <code>Short</code> or <code>short[]</code> objects,
+	 * depending on the <code>getCardinality()</code> value.
+	 */
+	public static final int	SHORT		= 4;
+	/**
+	 * The <code>CHARACTER</code> (5) type.
+	 * 
+	 * Attributes of this type should be stored as <code>Character</code>,
+	 * <code>Vector</code> with <code>Character</code> or <code>char[]</code> objects,
+	 * depending on the <code>getCardinality()</code> value.
+	 */
+	public static final int	CHARACTER	= 5;
+	/**
+	 * The <code>BYTE</code> (6) type.
+	 * 
+	 * Attributes of this type should be stored as <code>Byte</code>,
+	 * <code>Vector</code> with <code>Byte</code> or <code>byte[]</code> objects,
+	 * depending on the <code>getCardinality()</code> value.
+	 */
+	public static final int	BYTE		= 6;
+	/**
+	 * The <code>DOUBLE</code> (7) type.
+	 * 
+	 * Attributes of this type should be stored as <code>Double</code>,
+	 * <code>Vector</code> with <code>Double</code> or <code>double[]</code> objects,
+	 * depending on the <code>getCardinality()</code> value.
+	 */
+	public static final int	DOUBLE		= 7;
+	/**
+	 * The <code>FLOAT</code> (8) type.
+	 * 
+	 * Attributes of this type should be stored as <code>Float</code>,
+	 * <code>Vector</code> with <code>Float</code> or <code>float[]</code> objects,
+	 * depending on the <code>getCardinality()</code> value.
+	 */
+	public static final int	FLOAT		= 8;
+	/**
+	 * The <code>BIGINTEGER</code> (9) type.
+	 * 
+	 * Attributes of this type should be stored as <code>BigInteger</code>,
+	 * <code>Vector</code> with <code>BigInteger</code> or <code>BigInteger[]</code>
+	 * objects, depending on the <code>getCardinality()</code> value.
+	 * 
+	 * @deprecated As of 1.1.
+	 */
+	public static final int	BIGINTEGER	= 9;
+	/**
+	 * The <code>BIGDECIMAL</code> (10) type.
+	 * 
+	 * Attributes of this type should be stored as <code>BigDecimal</code>,
+	 * <code>Vector</code> with <code>BigDecimal</code> or <code>BigDecimal[]</code>
+	 * objects depending on <code>getCardinality()</code>.
+	 * 
+	 * @deprecated As of 1.1.
+	 */
+	public static final int	BIGDECIMAL	= 10;
+	/**
+	 * The <code>BOOLEAN</code> (11) type.
+	 * 
+	 * Attributes of this type should be stored as <code>Boolean</code>,
+	 * <code>Vector</code> with <code>Boolean</code> or <code>boolean[]</code> objects
+	 * depending on <code>getCardinality()</code>.
+	 */
+	public static final int	BOOLEAN		= 11;
+
+	/**
+	 * Get the name of the attribute. This name may be localized.
+	 * 
+	 * @return The localized name of the definition.
+	 */
+	public String getName();
+
+	/**
+	 * Unique identity for this attribute.
+	 * 
+	 * Attributes share a global namespace in the registry. E.g. an attribute
+	 * <code>cn</code> or <code>commonName</code> must always be a <code>String</code>
+	 * and the semantics are always a name of some object. They share this
+	 * aspect with LDAP/X.500 attributes. In these standards the OSI Object
+	 * Identifier (OID) is used to uniquely identify an attribute. If such an
+	 * OID exists, (which can be requested at several standard organisations and
+	 * many companies already have a node in the tree) it can be returned here.
+	 * Otherwise, a unique id should be returned which can be a Java class name
+	 * (reverse domain name) or generated with a GUID algorithm. Note that all
+	 * LDAP defined attributes already have an OID. It is strongly advised to
+	 * define the attributes from existing LDAP schemes which will give the OID.
+	 * Many such schemes exist ranging from postal addresses to DHCP parameters.
+	 * 
+	 * @return The id or oid
+	 */
+	public String getID();
+
+	/**
+	 * Return a description of this attribute.
+	 * 
+	 * The description may be localized and must describe the semantics of this
+	 * type and any constraints.
+	 * 
+	 * @return The localized description of the definition.
+	 */
+	public String getDescription();
+
+	/**
+	 * Return the cardinality of this attribute.
+	 * 
+	 * The OSGi environment handles multi valued attributes in arrays ([]) or in
+	 * <code>Vector</code> objects. The return value is defined as follows:
+	 * 
+	 * <pre>
+	 * 
+	 *    x = Integer.MIN_VALUE    no limit, but use Vector
+	 *    x &lt; 0                    -x = max occurrences, store in Vector
+	 *    x &gt; 0                     x = max occurrences, store in array []
+	 *    x = Integer.MAX_VALUE    no limit, but use array []
+	 *    x = 0                     1 occurrence required
+	 *  
+	 * </pre>
+	 * 
+	 * @return The cardinality of this attribute. 
+	 */
+	public int getCardinality();
+
+	/**
+	 * Return the type for this attribute.
+	 * 
+	 * <p>
+	 * Defined in the following constants which map to the appropriate Java
+	 * type. <code>STRING</code>,<code>LONG</code>,<code>INTEGER</code>,
+	 * <code>CHAR</code>,<code>BYTE</code>,<code>DOUBLE</code>,<code>FLOAT</code>,
+	 * <code>BOOLEAN</code>.
+	 *
+	 * @return The type for this attribute.
+	 */
+	public int getType();
+
+	/**
+	 * Return a list of option values that this attribute can take.
+	 * 
+	 * <p>
+	 * If the function returns <code>null</code>, there are no option values
+	 * available.
+	 * 
+	 * <p>
+	 * Each value must be acceptable to validate() (return "") and must be a
+	 * <code>String</code> object that can be converted to the data type defined
+	 * by getType() for this attribute.
+	 * 
+	 * <p>
+	 * This list must be in the same sequence as <code>getOptionLabels()</code>.
+	 * I.e. for each index i in <code>getOptionValues</code>, i in
+	 * <code>getOptionLabels()</code> should be the label.
+	 * 
+	 * <p>
+	 * For example, if an attribute can have the value male, female, unknown,
+	 * this list can return
+	 * <code>new String[] { "male", "female", "unknown" }</code>.
+	 * 
+	 * @return A list values
+	 */
+	public String[] getOptionValues();
+
+	/**
+	 * Return a list of labels of option values.
+	 * 
+	 * <p>
+	 * The purpose of this method is to allow menus with localized labels. It is
+	 * associated with <code>getOptionValues</code>. The labels returned here are
+	 * ordered in the same way as the values in that method.
+	 * 
+	 * <p>
+	 * If the function returns <code>null</code>, there are no option labels
+	 * available.
+	 * <p>
+	 * This list must be in the same sequence as the <code>getOptionValues()</code>
+	 * method. I.e. for each index i in <code>getOptionLabels</code>, i in
+	 * <code>getOptionValues()</code> should be the associated value.
+	 * 
+	 * <p>
+	 * For example, if an attribute can have the value male, female, unknown,
+	 * this list can return (for dutch)
+	 * <code>new String[] { "Man", "Vrouw", "Onbekend" }</code>.
+	 * 
+	 * @return A list values
+	 */
+	public String[] getOptionLabels();
+
+	/**
+	 * Validate an attribute in <code>String</code> form.
+	 * 
+	 * An attribute might be further constrained in value. This method will
+	 * attempt to validate the attribute according to these constraints. It can
+	 * return three different values:
+	 * 
+	 * <pre>
+	 *  null           No validation present
+	 *  ""             No problems detected
+	 *  "..."          A localized description of why the value is wrong
+	 * </pre>
+	 * 
+	 * @param value The value before turning it into the basic data type
+	 * @return <code>null</code>, "", or another string
+	 */
+	public String validate(String value);
+
+	/**
+	 * Return a default for this attribute.
+	 * 
+	 * The object must be of the appropriate type as defined by the cardinality
+	 * and <code>getType()</code>. The return type is a list of <code>String</code>
+	 * objects that can be converted to the appropriate type. The cardinality of
+	 * the return array must follow the absolute cardinality of this type. E.g.
+	 * if the cardinality = 0, the array must contain 1 element. If the
+	 * cardinality is 1, it must contain 0 or 1 elements. If it is -5, it must
+	 * contain from 0 to max 5 elements. Note that the special case of a 0
+	 * cardinality, meaning a single value, does not allow arrays or vectors of
+	 * 0 elements.
+	 * 
+	 * @return Return a default value or <code>null</code> if no default exists.
+	 */
+	public String[] getDefaultValue();
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/metatype/MetaTypeInformation.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/metatype/MetaTypeInformation.java
new file mode 100644
index 0000000..8b336dc
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/metatype/MetaTypeInformation.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) OSGi Alliance (2005, 2008). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.metatype;
+
+import org.osgi.framework.Bundle;
+
+/**
+ * A MetaType Information object is created by the MetaTypeService to return
+ * meta type information for a specific bundle.
+ * 
+ * @version $Revision: 5673 $
+ * @since 1.1
+ */
+public interface MetaTypeInformation extends MetaTypeProvider {
+	/**
+	 * Return the PIDs (for ManagedServices) for which ObjectClassDefinition
+	 * information is available.
+	 * 
+	 * @return Array of PIDs.
+	 */
+	public String[] getPids();
+
+	/**
+	 * Return the Factory PIDs (for ManagedServiceFactories) for which
+	 * ObjectClassDefinition information is available.
+	 * 
+	 * @return Array of Factory PIDs.
+	 */
+	public String[] getFactoryPids();
+
+	/**
+	 * Return the bundle for which this object provides meta type information.
+	 * 
+	 * @return Bundle for which this object provides meta type information.
+	 */
+	public Bundle getBundle();
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/metatype/MetaTypeProvider.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/metatype/MetaTypeProvider.java
new file mode 100644
index 0000000..b2385b2
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/metatype/MetaTypeProvider.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) OSGi Alliance (2001, 2008). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.metatype;
+
+/**
+ * Provides access to metatypes.
+ * 
+ * @version $Revision: 5673 $
+ */
+public interface MetaTypeProvider {
+	/**
+	 * Returns an object class definition for the specified id localized to the
+	 * specified locale.
+	 * 
+	 * <p>
+	 * The locale parameter must be a name that consists of <code>language</code>[
+	 * "_" <code>country</code>[ "_" <code>variation</code>] ] as is customary in
+	 * the <code>Locale</code> class. This <code>Locale</code> class is not used
+	 * because certain profiles do not contain it.
+	 * 
+	 * @param id The ID of the requested object class. This can be a pid or
+	 *        factory pid returned by getPids or getFactoryPids.
+	 * @param locale The locale of the definition or <code>null</code> for default
+	 *        locale.
+	 * @return A <code>ObjectClassDefinition</code> object.
+	 * @throws IllegalArgumentException If the id or locale arguments are not
+	 *         valid
+	 */
+	public ObjectClassDefinition getObjectClassDefinition(String id, String locale);
+
+	/**
+	 * Return a list of available locales.
+	 * 
+	 * The results must be names that consists of language [ _ country [ _
+	 * variation ]] as is customary in the <code>Locale</code> class.
+	 * 
+	 * @return An array of locale strings or <code>null</code> if there is no
+	 *         locale specific localization can be found.
+	 *  
+	 */
+	public String[] getLocales();
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/metatype/MetaTypeService.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/metatype/MetaTypeService.java
new file mode 100644
index 0000000..d8f77a3
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/metatype/MetaTypeService.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) OSGi Alliance (2005, 2008). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.metatype;
+
+import org.osgi.framework.Bundle;
+
+/**
+ * The MetaType Service can be used to obtain meta type information for a
+ * bundle. The MetaType Service will examine the specified bundle for meta type
+ * documents to create the returned <code>MetaTypeInformation</code> object.
+ * 
+ * <p>
+ * If the specified bundle does not contain any meta type documents, then a
+ * <code>MetaTypeInformation</code> object will be returned that wrappers any
+ * <code>ManagedService</code> or <code>ManagedServiceFactory</code>
+ * services registered by the specified bundle that implement
+ * <code>MetaTypeProvider</code>. Thus the MetaType Service can be used to
+ * retrieve meta type information for bundles which contain a meta type
+ * documents or which provide their own <code>MetaTypeProvider</code> objects.
+ * 
+ * @version $Revision: 5673 $
+ * @since 1.1
+ */
+public interface MetaTypeService {
+	/**
+	 * Return the MetaType information for the specified bundle.
+	 * 
+	 * @param bundle The bundle for which meta type information is requested.
+	 * @return A MetaTypeInformation object for the specified bundle.
+	 */
+	public MetaTypeInformation getMetaTypeInformation(Bundle bundle);
+
+	/**
+	 * Location of meta type documents. The MetaType Service will process each
+	 * entry in the meta type documents directory.
+	 */
+	public final static String	METATYPE_DOCUMENTS_LOCATION	= "OSGI-INF/metatype";
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/metatype/ObjectClassDefinition.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/metatype/ObjectClassDefinition.java
new file mode 100644
index 0000000..5c6687e
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/metatype/ObjectClassDefinition.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) OSGi Alliance (2001, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.metatype;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * Description for the data type information of an objectclass.
+ * 
+ * @version $Revision: 5673 $
+ */
+public interface ObjectClassDefinition {
+	/**
+	 * Argument for <code>getAttributeDefinitions(int)</code>.
+	 * <p>
+	 * <code>REQUIRED</code> indicates that only the required definitions are
+	 * returned. The value is 1.
+	 */
+	public static final int	REQUIRED	= 1;
+	/**
+	 * Argument for <code>getAttributeDefinitions(int)</code>.
+	 * <p>
+	 * <code>OPTIONAL</code> indicates that only the optional definitions are
+	 * returned. The value is 2.
+	 */
+	public static final int	OPTIONAL	= 2;
+	/**
+	 * Argument for <code>getAttributeDefinitions(int)</code>.
+	 * <p>
+	 * <code>ALL</code> indicates that all the definitions are returned. The value
+	 * is -1.
+	 */
+	public static final int	ALL			= 0xFFFFFFFF;
+
+	/**
+	 * Return the name of this object class.
+	 * 
+	 * The name may be localized.
+	 * 
+	 * @return The name of this object class.
+	 */
+	public String getName();
+
+	/**
+	 * Return the id of this object class.
+	 * 
+	 * <p>
+	 * <code>ObjectDefintion</code> objects share a global namespace in the
+	 * registry. They share this aspect with LDAP/X.500 attributes. In these
+	 * standards the OSI Object Identifier (OID) is used to uniquely identify
+	 * object classes. If such an OID exists, (which can be requested at several
+	 * standard organisations and many companies already have a node in the
+	 * tree) it can be returned here. Otherwise, a unique id should be returned
+	 * which can be a java class name (reverse domain name) or generated with a
+	 * GUID algorithm. Note that all LDAP defined object classes already have an
+	 * OID associated. It is strongly advised to define the object classes from
+	 * existing LDAP schemes which will give the OID for free. Many such schemes
+	 * exist ranging from postal addresses to DHCP parameters.
+	 * 
+	 * @return The id of this object class.
+	 */
+	public String getID();
+
+	/**
+	 * Return a description of this object class.
+	 * 
+	 * The description may be localized.
+	 * 
+	 * @return The description of this object class.
+	 */
+	public String getDescription();
+
+	/**
+	 * Return the attribute definitions for this object class.
+	 * 
+	 * <p>
+	 * Return a set of attributes. The filter parameter can distinguish between
+	 * <code>ALL</code>,<code>REQUIRED</code> or the <code>OPTIONAL</code>
+	 * attributes.
+	 * 
+	 * @param filter <code>ALL</code>,<code>REQUIRED</code>,<code>OPTIONAL</code>
+	 * @return An array of attribute definitions or <code>null</code> if no
+	 *         attributes are selected
+	 */
+	public AttributeDefinition[] getAttributeDefinitions(int filter);
+
+	/**
+	 * Return an <code>InputStream</code> object that can be used to create an
+	 * icon from.
+	 * 
+	 * <p>
+	 * Indicate the size and return an <code>InputStream</code> object containing
+	 * an icon. The returned icon maybe larger or smaller than the indicated
+	 * size.
+	 * 
+	 * <p>
+	 * The icon may depend on the localization.
+	 * 
+	 * @param size Requested size of an icon, e.g. a 16x16 pixels icon then size =
+	 *        16
+	 * @return An InputStream representing an icon or <code>null</code>
+	 * @throws IOException If the <code>InputStream</code> cannot be returned.
+	 */
+	public InputStream getIcon(int size) throws IOException;
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/metatype/package.html b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/metatype/package.html
new file mode 100644
index 0000000..0b2b533
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/metatype/package.html
@@ -0,0 +1,11 @@
+<!-- $Revision: 6204 $ -->
+<BODY>
+<p>Metatype Package Version 1.1.
+<p>Bundles wishing to use this package must list the package
+in the Import-Package header of the bundle's manifest.
+For example:
+<pre>
+Import-Package: org.osgi.service.metatype; version=&quot;[1.1,2.0)&quot;
+</pre>
+</BODY>
+
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/metatype/packageinfo b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/metatype/packageinfo
new file mode 100644
index 0000000..3987f9c
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/metatype/packageinfo
@@ -0,0 +1 @@
+version 1.1
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/provisioning/ProvisioningService.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/provisioning/ProvisioningService.java
new file mode 100644
index 0000000..0b29053
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/provisioning/ProvisioningService.java
@@ -0,0 +1,211 @@
+/*
+ * Copyright (c) OSGi Alliance (2002, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.provisioning;
+
+import java.io.IOException;
+import java.util.Dictionary;
+import java.util.zip.ZipInputStream;
+
+/**
+ * Service for managing the initial provisioning information.
+ * <p>
+ * Initial provisioning of an OSGi device is a multi step process that
+ * culminates with the installation and execution of the initial management
+ * agent. At each step of the process, information is collected for the next
+ * step. Multiple bundles may be involved and this service provides a means for
+ * these bundles to exchange information. It also provides a means for the
+ * initial Management Bundle to get its initial configuration information.
+ * <p>
+ * The provisioning information is collected in a <code>Dictionary</code>
+ * object, called the Provisioning Dictionary. Any bundle that can access the
+ * service can get a reference to this object and read and update provisioning
+ * information. The key of the dictionary is a <code>String</code> object and
+ * the value is a <code>String</code> or <code>byte[]</code> object. The
+ * single exception is the PROVISIONING_UPDATE_COUNT value which is an Integer.
+ * The <code>provisioning</code> prefix is reserved for keys defined by OSGi,
+ * other key names may be used for implementation dependent provisioning
+ * systems.
+ * <p>
+ * Any changes to the provisioning information will be reflected immediately in
+ * all the dictionary objects obtained from the Provisioning Service.
+ * <p>
+ * Because of the specific application of the Provisioning Service, there should
+ * be only one Provisioning Service registered. This restriction will not be
+ * enforced by the Framework. Gateway operators or manufactures should ensure
+ * that a Provisioning Service bundle is not installed on a device that already
+ * has a bundle providing the Provisioning Service.
+ * <p>
+ * The provisioning information has the potential to contain sensitive
+ * information. Also, the ability to modify provisioning information can have
+ * drastic consequences. Thus, only trusted bundles should be allowed to
+ * register and get the Provisioning Service. The <code>ServicePermission</code>
+ * is used to limit the bundles that can gain access to the Provisioning
+ * Service. There is no check of <code>Permission</code> objects to read or
+ * modify the provisioning information, so care must be taken not to leak the
+ * Provisioning Dictionary received from <code>getInformation</code> method.
+ * 
+ * @version $Revision: 5654 $
+ */
+public interface ProvisioningService {
+	/**
+	 * The key to the provisioning information that uniquely identifies the
+	 * Service Platform. The value must be of type <code>String</code>.
+	 */
+	public final static String	PROVISIONING_SPID			= "provisioning.spid";
+
+	/**
+	 * The key to the provisioning information that contains the location of the
+	 * provision data provider. The value must be of type <code>String</code>.
+	 */
+	public final static String	PROVISIONING_REFERENCE		= "provisioning.reference";
+	
+	/**
+	 * The key to the provisioning information that contains the initial
+	 * configuration information of the initial Management Agent. The value will
+	 * be of type <code>byte[]</code>.
+	 */
+	public final static String	PROVISIONING_AGENT_CONFIG	= "provisioning.agent.config";
+	
+	/**
+	 * The key to the provisioning information that contains the update count of
+	 * the info data. Each set of changes to the provisioning information must
+	 * end with this value being incremented. The value must be of type
+	 * <code>Integer</code>. This key/value pair is also reflected in the
+	 * properties of the ProvisioningService in the service registry.
+	 */
+	public final static String	PROVISIONING_UPDATE_COUNT	= "provisioning.update.count";
+	
+	/**
+	 * The key to the provisioning information that contains the location of the
+	 * bundle to start with <code>AllPermission</code>. The bundle must have
+	 * be previously installed for this entry to have any effect.
+	 */
+	public final static String	PROVISIONING_START_BUNDLE	= "provisioning.start.bundle";
+	
+	/**
+	 * The key to the provisioning information that contains the root X509
+	 * certificate used to establish trust with operator when using HTTPS.
+	 */
+	public final static String	PROVISIONING_ROOTX509		= "provisioning.rootx509";
+	
+	/**
+	 * The key to the provisioning information that contains the shared secret
+	 * used in conjunction with the RSH protocol.
+	 */
+	public final static String	PROVISIONING_RSH_SECRET		= "provisioning.rsh.secret";
+	
+	/**
+	 * MIME type to be used in the InitialProvisioning-Entries header or stored
+	 * in the extra field of a <code>ZipEntry</code> object for String data.
+	 */
+	public final static String	MIME_STRING					= "text/plain;charset=utf-8";
+	
+	/**
+	 * MIME type to be used in the InitialProvisioning-Entries header or stored
+	 * stored in the extra field of a <code>ZipEntry</code> object for
+	 * <code>byte[]</code> data.
+	 */
+	public final static String	MIME_BYTE_ARRAY				= "application/octet-stream";
+	
+	/**
+	 * MIME type to be used in the InitialProvisioning-Entries header or stored
+	 * stored in the extra field of a <code>ZipEntry</code> object for an
+	 * installable bundle file. Zip entries of this type will be installed in
+	 * the framework, but not started. The entry will also not be put into the
+	 * information dictionary.
+	 */
+	public final static String	MIME_BUNDLE					= "application/vnd.osgi.bundle";
+
+	/**
+	 * Alternative MIME type to be used in the InitialProvisioning-Entries header or stored
+	 * stored in the extra field of a <code>ZipEntry</code> object for an
+	 * installable bundle file. Zip entries of this type will be installed in
+	 * the framework, but not started. The entry will also not be put into the
+	 * information dictionary. This alternative entry is only for backward compatibility,
+	 * new applications are recommended to use <code>MIME_BUNDLE</code>, which is an official
+	 * IANA MIME type.
+	 */
+	public final static String	MIME_BUNDLE_ALT				= "application/x-osgi-bundle";
+
+	/**
+	 * MIME type to be stored in the extra field of a ZipEntry for a String that
+	 * represents a URL for a bundle. Zip entries of this type will be used to
+	 * install (but not start) a bundle from the URL. The entry will not be put
+	 * into the information dictionary.
+	 */
+	public final static String	MIME_BUNDLE_URL				= "text/x-osgi-bundle-url";
+
+	/**
+	 * Name of the header that specifies the (MIME) type information for the ZIP file
+	 * entries.
+	 */	
+	public final static String INITIALPROVISIONING_ENTRIES = "InitialProvisioning-Entries";
+	
+	/**
+	 * Returns a reference to the Provisioning Dictionary. Any change operations
+	 * (put and remove) to the dictionary will cause an
+	 * <code>UnsupportedOperationException</code> to be thrown. Changes must
+	 * be done using the <code>setInformation</code> and
+	 * <code>addInformation</code> methods of this service.
+	 * 
+	 * @return A reference to the Provisioning Dictionary.
+	 */
+	public Dictionary getInformation();
+
+	/**
+	 * Replaces the Provisioning Information dictionary with the key/value pairs
+	 * contained in <code>info</code>. Any key/value pairs not in
+	 * <code>info</code> will be removed from the Provisioning Information
+	 * dictionary. This method causes the <code>PROVISIONING_UPDATE_COUNT</code>
+	 * to be incremented.
+	 * 
+	 * @param info the new set of Provisioning Information key/value pairs. Any
+	 *        keys are values that are of an invalid type will be silently
+	 *        ignored.
+	 */
+	public void setInformation(Dictionary info);
+
+	/**
+	 * Adds the key/value pairs contained in <code>info</code> to the
+	 * Provisioning Information dictionary. This method causes the
+	 * <code>PROVISIONING_UPDATE_COUNT</code> to be incremented.
+	 * 
+	 * @param info the set of Provisioning Information key/value pairs to add to
+	 *        the Provisioning Information dictionary. Any keys are values that
+	 *        are of an invalid type will be silently ignored.
+	 */
+	public void addInformation(Dictionary info);
+
+	/**
+	 * Processes the <code>ZipInputStream</code> and extracts information to
+	 * add to the Provisioning Information dictionary, as well as,
+	 * install/update and start bundles. This method causes the
+	 * <code>PROVISIONING_UPDATE_COUNT</code> to be incremented.
+	 * 
+	 * @param zis the <code>ZipInputStream</code> that will be used to add
+	 *        key/value pairs to the Provisioning Information dictionary and
+	 *        install and start bundles. If a <code>ZipEntry</code> does not
+	 *        have an <code>Extra</code> field that corresponds to one of the
+	 *        four defined MIME types (<code>MIME_STRING</code>,
+	 *        <code>MIME_BYTE_ARRAY</code>,<code>MIME_BUNDLE</code>, and
+	 *        <code>MIME_BUNDLE_URL</code>) in will be silently ignored.
+	 * @throws IOException if an error occurs while processing the
+	 *         ZipInputStream. No additions will be made to the Provisioning
+	 *         Information dictionary and no bundles must be started or
+	 *         installed.
+	 */
+	public void addInformation(ZipInputStream zis) throws IOException;
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/provisioning/package.html b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/provisioning/package.html
new file mode 100644
index 0000000..8c28950
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/provisioning/package.html
@@ -0,0 +1,10 @@
+<!-- $Revision: 6204 $ -->
+<BODY>
+<p>Provisioning Package Version 1.2.
+<p>Bundles wishing to use this package must list the package
+in the Import-Package header of the bundle's manifest.
+For example:
+<pre>
+Import-Package: org.osgi.service.provisioning; version=&quot;[1.2,2.0)&quot;
+</pre>
+</BODY>
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/provisioning/packageinfo b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/provisioning/packageinfo
new file mode 100644
index 0000000..ef7df68
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/provisioning/packageinfo
@@ -0,0 +1 @@
+version 1.2
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/upnp/UPnPAction.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/upnp/UPnPAction.java
new file mode 100644
index 0000000..742673f
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/upnp/UPnPAction.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) OSGi Alliance (2002, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.upnp;
+
+import java.util.Dictionary;
+
+/**
+ * A UPnP action.
+ * 
+ * Each UPnP service contains zero or more actions. Each action may have zero or
+ * more UPnP state variables as arguments.
+ * 
+ * @version $Revision: 5673 $
+ */
+public interface UPnPAction {
+	/**
+	 * Returns the action name.
+	 * 
+	 * The action name corresponds to the <code>name</code> field in the
+	 * <code>actionList</code> of the service description.
+	 * <ul>
+	 * <li>For standard actions defined by a UPnP Forum working committee,
+	 * action names must not begin with <code>X_ </code> nor <code> A_</code>.</li>
+	 * <li>For non-standard actions specified by a UPnP vendor and added to a
+	 * standard service, action names must begin with <code>X_</code>.</li>
+	 * </ul>
+	 * 
+	 * @return Name of action, must not contain a hyphen character or a hash
+	 *         character
+	 */
+	String getName();
+
+	/**
+	 * Returns the name of the designated return argument.
+	 * <p>
+	 * One of the output arguments can be flagged as a designated return
+	 * argument.
+	 * 
+	 * @return The name of the designated return argument or <code>null</code> if
+	 *         none is marked.
+	 */
+	String getReturnArgumentName();
+
+	/**
+	 * Lists all input arguments for this action.
+	 * <p>
+	 * Each action may have zero or more input arguments.
+	 * 
+	 * @return Array of input argument names or <code>null</code> if no input
+	 *         arguments.
+	 * 
+	 * @see UPnPStateVariable
+	 */
+	String[] getInputArgumentNames();
+
+	/**
+	 * List all output arguments for this action.
+	 * 
+	 * @return Array of output argument names or <code>null</code> if there are no
+	 *         output arguments.
+	 * 
+	 * @see UPnPStateVariable
+	 */
+	String[] getOutputArgumentNames();
+
+	/**
+	 * Finds the state variable associated with an argument name.
+	 * 
+	 * Helps to resolve the association of state variables with argument names
+	 * in UPnP actions.
+	 * 
+	 * @param argumentName The name of the UPnP action argument.
+	 * @return State variable associated with the named argument or
+	 *         <code>null</code> if there is no such argument.
+	 * 
+	 * @see UPnPStateVariable
+	 */
+	UPnPStateVariable getStateVariable(String argumentName);
+
+	/**
+	 * Invokes the action.
+	 * 
+	 * The input and output arguments are both passed as <code>Dictionary</code>
+	 * objects. Each entry in the <code>Dictionary</code> object has a
+	 * <code>String</code> object as key representing the argument name and the
+	 * value is the argument itself. The class of an argument value must be
+	 * assignable from the class of the associated UPnP state variable.
+	 * 
+	 * The input argument <code>Dictionary</code> object must contain exactly
+	 * those arguments listed by <code>getInputArguments</code> method. The output
+	 * argument <code>Dictionary</code> object will contain exactly those
+	 * arguments listed by <code>getOutputArguments</code> method.
+	 *
+	 * @param args A <code>Dictionary</code> of arguments. Must contain the correct set and
+	 * type of arguments for this action. May be <code>null</code> if no
+	 * input arguments exist.
+	 *
+	 * @return A <code>Dictionary</code> with the output arguments.
+	 *         <code>null</code> if the action has no output arguments.
+	 *
+	 * @throws UPnPException  A UPnP error has occured.
+	 * @throws Exception The execution fails for some reason.
+	 *
+	 * @see UPnPStateVariable
+	 */
+	Dictionary invoke(Dictionary args) throws Exception;
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/upnp/UPnPDevice.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/upnp/UPnPDevice.java
new file mode 100644
index 0000000..24ce178
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/upnp/UPnPDevice.java
@@ -0,0 +1,280 @@
+/*
+ * Copyright (c) OSGi Alliance (2002, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.upnp;
+
+import java.util.Dictionary;
+
+/**
+ * Represents a UPnP device.
+ * 
+ * For each UPnP root and embedded device, an object is registered with the
+ * framework under the <code>UPnPDevice</code> interface.
+ * <p>
+ * The relationship between a root device and its embedded devices can be
+ * deduced using the <code>UPnPDevice.CHILDREN_UDN</code> and
+ * <code>UPnPDevice.PARENT_UDN</code> service registration properties.
+ * <p>
+ * The values of the UPnP property names are defined by the UPnP Forum.
+ * <p>
+ * All values of the UPnP properties are obtained from the device using the
+ * device's default locale.
+ * <p>
+ * If an application wants to query for a set of localized property values, it
+ * has to use the method <code>UPnPDevice.getDescriptions(String locale)</code>.
+ * 
+ * @version $Revision: 5673 $
+ */
+public interface UPnPDevice {
+	/*
+	 * Constants for the UPnP device match scale.
+	 */
+	/**
+	 * Constant for the UPnP device match scale, indicating a generic match for
+	 * the device. Value is 1.
+	 */
+	int		MATCH_GENERIC								= 1;
+	/**
+	 * Constant for the UPnP device match scale, indicating a match with the
+	 * device type. Value is 3.
+	 */
+	int		MATCH_TYPE									= 3;
+	/**
+	 * Constant for the UPnP device match scale, indicating a match with the
+	 * device model. Value is 7.
+	 */
+	int		MATCH_MANUFACTURER_MODEL					= 7;
+	/**
+	 * Constant for the UPnP device match scale, indicating a match with the
+	 * device revision. Value is 15.
+	 */
+	int		MATCH_MANUFACTURER_MODEL_REVISION			= 15;
+	/**
+	 * Constant for the UPnP device match scale, indicating a match with the
+	 * device revision and the serial number. Value is 31.
+	 */
+	int		MATCH_MANUFACTURER_MODEL_REVISION_SERIAL	= 31;
+	/**
+	 * Constant for the value of the service property <code>DEVICE_CATEGORY</code>
+	 * used for all UPnP devices. Value is "UPnP".
+	 * 
+	 * @see "<code>org.osgi.service.device.Constants.DEVICE_CATEGORY</code>"
+	 */
+	String	DEVICE_CATEGORY								= "UPnP";
+	/**
+	 * The <code>UPnP.export</code> service property is a hint that marks a device
+	 * to be picked up and exported by the UPnP Service. Imported devices do not
+	 * have this property set. The registered property requires no value.
+	 * <p>
+	 * The UPNP_EXPORT string is "UPnP.export".
+	 */
+	String	UPNP_EXPORT									= "UPnP.export";
+	/**
+	 * Property key for the Unique Device Name (UDN) property. It is the unique
+	 * identifier of an instance of a <code>UPnPDevice</code>. The value of the
+	 * property is a <code>String</code> object of the Device UDN. Value of the
+	 * key is "UPnP.device.UDN". This property must be set.
+	 */
+	String	UDN											= "UPnP.device.UDN";
+	/**
+	 * Property key for the Unique Device ID property. This property is an alias
+	 * to <code>UPnPDevice.UDN</code>. It is merely provided for reasons of
+	 * symmetry with the <code>UPnPService.ID</code> property. The value of the
+	 * property is a <code>String</code> object of the Device UDN. The value of
+	 * the key is "UPnP.device.UDN".
+	 */
+	String	ID											= UDN;
+	/**
+	 * Property key for the UPnP Device Type property. Some standard property
+	 * values are defined by the Universal Plug and Play Forum. The type string
+	 * also includes a version number as defined in the UPnP specification. This
+	 * property must be set.
+	 * <p>
+	 * For standard devices defined by a UPnP Forum working committee, this must
+	 * consist of the following components in the given order separated by
+	 * colons:
+	 * <ul>
+	 * <li><code>urn</code></li>
+	 * <li>schemas-upnp-org</li>
+	 * <li><code>device</code></li>
+	 * <li>a device type suffix</li>
+	 * <li>an integer device version</li>
+	 * </ul>
+	 * For non-standard devices specified by UPnP vendors following components
+	 * must be specified in the given order separated by colons:
+	 * <ul>
+	 * <li><code>urn</code></li>
+	 * <li>an ICANN domain name owned by the vendor</li>
+	 * <li><code>device</code></li>
+	 * <li>a device type suffix</li>
+	 * <li>an integer device version</li>
+	 * </ul>
+	 * <p>
+	 * To allow for backward compatibility the UPnP driver must automatically
+	 * generate additional Device Type property entries for smaller versions
+	 * than the current one. If for example a device announces its type as
+	 * version 3, then properties for versions 2 and 1 must be automatically
+	 * generated.
+	 * <p>
+	 * In the case of exporting a UPnPDevice, the highest available version must
+	 * be announced on the network.
+	 * <p>
+	 * Syntax Example: <code>urn:schemas-upnp-org:device:deviceType:v</code>
+	 * <p>
+	 * The value is "UPnP.device.type".
+	 */
+	String	TYPE										= "UPnP.device.type";
+	/**
+	 * Mandatory property key for the device manufacturer's property. The
+	 * property value holds a String representation of the device manufacturer's
+	 * name. Value is "UPnP.device.manufacturer".
+	 */
+	String	MANUFACTURER								= "UPnP.device.manufacturer";
+	/**
+	 * Mandatory property key for the device model name. The property value
+	 * holds a <code>String</code> object giving more information about the device
+	 * model. Value is "UPnP.device.modelName".
+	 */
+	String	MODEL_NAME									= "UPnP.device.modelName";
+	/**
+	 * Mandatory property key for a short user friendly version of the device
+	 * name. The property value holds a <code>String</code> object with the user
+	 * friendly name of the device. Value is "UPnP.device.friendlyName".
+	 */
+	String	FRIENDLY_NAME								= "UPnP.device.friendlyName";
+	/**
+	 * Optional property key for a URL to the device manufacturers Web site. The
+	 * value of the property is a <code>String</code> object representing the URL.
+	 * Value is "UPnP.device.manufacturerURL".
+	 */
+	String	MANUFACTURER_URL							= "UPnP.device.manufacturerURL";
+	/**
+	 * Optional (but recommended) property key for a <code>String</code> object
+	 * with a long description of the device for the end user. The value is
+	 * "UPnP.device.modelDescription".
+	 */
+	String	MODEL_DESCRIPTION							= "UPnP.device.modelDescription";
+	/**
+	 * Optional (but recommended) property key for a <code>String</code> class
+	 * typed property holding the model number of the device. Value is
+	 * "UPnP.device.modelNumber".
+	 */
+	String	MODEL_NUMBER								= "UPnP.device.modelNumber";
+	/**
+	 * Optional property key for a <code>String</code> typed property holding a
+	 * string representing the URL to the Web site for this model. Value is
+	 * "UPnP.device.modelURL".
+	 */
+	String	MODEL_URL									= "UPnP.device.modelURL";
+	/**
+	 * Optional (but recommended) property key for a <code>String</code> typed
+	 * property holding the serial number of the device. Value is
+	 * "UPnP.device.serialNumber".
+	 */
+	String	SERIAL_NUMBER								= "UPnP.device.serialNumber";
+	/**
+	 * Optional property key for a <code>String</code> typed property holding the
+	 * Universal Product Code (UPC) of the device. Value is "UPnP.device.UPC".
+	 */
+	String	UPC											= "UPnP.device.UPC";
+	/**
+	 * Optional (but recommended) property key for a <code>String</code> typed
+	 * property holding a string representing the URL to a device representation
+	 * Web page. Value is "UPnP.presentationURL".
+	 */
+	String	PRESENTATION_URL							= "UPnP.presentationURL";
+	/**
+	 * The property key that must be set for all embedded devices. It contains
+	 * the UDN of the parent device. The property is not set for root devices.
+	 * The value is "UPnP.device.parentUDN".
+	 */
+	String	PARENT_UDN									= "UPnP.device.parentUDN";
+	/**
+	 * The property key that must be set for all devices containing other
+	 * embedded devices.
+	 * <p>
+	 * The value is an array of UDNs for each of the device's children (
+	 * <code>String[]</code>). The array contains UDNs for the immediate
+	 * descendants only.
+	 * </p>
+	 * <p>
+	 * If an embedded device in turn contains embedded devices, the latter are
+	 * not included in the array.
+	 * </p>
+	 * The UPnP Specification does not encourage more than two levels of
+	 * nesting.
+	 * <p>
+	 * The property is not set if the device does not contain embedded devices.
+	 * <p>
+	 * The property is of type <code>String[]</code>. Value is
+	 * "UPnP.device.childrenUDN"
+	 */
+	String	CHILDREN_UDN								= "UPnP.device.childrenUDN";
+
+	/**
+	 * Locates a specific service by its service id.
+	 * 
+	 * @param serviceId The service id
+	 * @return The requested service or null if not found.
+	 */
+	UPnPService getService(String serviceId);
+
+	/**
+	 * Lists all services provided by this device.
+	 * 
+	 * @return Array of services or <code>null</code> if no services are
+	 *         available.
+	 */
+	UPnPService[] getServices();
+
+	/**
+	 * Lists all icons for this device in a given locale.
+	 * 
+	 * The UPnP specification allows a device to present different icons based
+	 * on the client's locale.
+	 * 
+	 * @param locale A language tag as defined by RFC 1766 and maintained by ISO
+	 *        639. Examples include "<code>de</code>", "<code>en</code>" or "
+	 *        <code>en-US</code>". The default locale of the device is specified
+	 *        by passing a <code>null</code> argument.
+	 * 
+	 * @return Array of icons or null if no icons are available.
+	 */
+	UPnPIcon[] getIcons(String locale);
+
+	/**
+	 * Get a set of localized UPnP properties.
+	 * 
+	 * The UPnP specification allows a device to present different device
+	 * properties based on the client's locale. The properties used to register
+	 * the UPnPDevice service in the OSGi registry are based on the device's
+	 * default locale. To obtain a localized set of the properties, an
+	 * application can use this method.
+	 * <p>
+	 * Not all properties might be available in all locales. This method does
+	 * <b>not </b> substitute missing properties with their default locale
+	 * versions.
+	 * <p>
+	 * 
+	 * @param locale A language tag as defined by RFC 1766 and maintained by ISO
+	 *        639. Examples include "<code>de</code>", "<code>en</code>" or "
+	 *        <code>en-US</code>". The default locale of the device is specified
+	 *        by passing a <code>null</code> argument.
+	 * @return Dictionary mapping property name Strings to property value
+	 *         Strings
+	 *  
+	 */
+	Dictionary getDescriptions(String locale);
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/upnp/UPnPEventListener.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/upnp/UPnPEventListener.java
new file mode 100644
index 0000000..80d4455
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/upnp/UPnPEventListener.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) OSGi Alliance (2002, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.upnp;
+
+import java.util.Dictionary;
+
+/**
+ * UPnP Events are mapped and delivered to applications according to the OSGi
+ * whiteboard model. An application that wishes to be notified of events
+ * generated by a particular UPnP Device registers a service extending this
+ * interface.
+ * <p>
+ * The notification call from the UPnP Service to any
+ * <code>UPnPEventListener</code> object must be done asynchronous with respect
+ * to the originator (in a separate thread).
+ * <p>
+ * Upon registration of the UPnP Event Listener service with the Framework, the
+ * service is notified for each variable which it listens for with an initial
+ * event containing the current value of the variable. Subsequent notifications
+ * only happen on changes of the value of the variable.
+ * <p>
+ * A UPnP Event Listener service filter the events it receives. This event set
+ * is limited using a standard framework filter expression which is specified
+ * when the listener service is registered.
+ * <p>
+ * The filter is specified in a property named "upnp.filter" and has as a value
+ * an object of type <code>org.osgi.framework.Filter</code>.
+ * <p>
+ * When the Filter is evaluated, the folowing keywords are recognized as defined
+ * as literal constants in the <code>UPnPDevice</code> class.
+ * <p>
+ * The valid subset of properties for the registration of UPnP Event Listener
+ * services are:
+ * <ul>
+ * <li><code>UPnPDevice.TYPE</code>-- Which type of device to listen for events.
+ * </li>
+ * <li><code>UPnPDevice.ID</code>-- The ID of a specific device to listen for
+ * events.</li>
+ * <li><code>UPnPService.TYPE</code>-- The type of a specific service to listen
+ * for events.</li>
+ * <li><code>UPnPService.ID</code>-- The ID of a specific service to listen for
+ * events.</li>
+ * </ul>
+ * 
+ * @version $Revision: 5673 $
+ */
+public interface UPnPEventListener {
+	/**
+	 * Key for a service property having a value that is an object of type
+	 * <code>org.osgi.framework.Filter</code> and that is used to limit received
+	 * events.
+	 */
+	static final String	UPNP_FILTER	= "upnp.filter";
+
+	/**
+	 * Callback method that is invoked for received events.
+	 * 
+	 * The events are collected in a <code>Dictionary</code> object. Each entry
+	 * has a <code>String</code> key representing the event name (= state variable
+	 * name) and the new value of the state variable. The class of the value
+	 * object must match the class specified by the UPnP State Variable
+	 * associated with the event. This method must be called asynchronously
+	 * 
+	 * @param deviceId ID of the device sending the events
+	 * @param serviceId ID of the service sending the events
+	 * @param events <code>Dictionary</code> object containing the new values for
+	 *        the state variables that have changed.
+	 * 
+	 *  
+	 */
+	void notifyUPnPEvent(String deviceId, String serviceId, Dictionary events);
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/upnp/UPnPException.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/upnp/UPnPException.java
new file mode 100644
index 0000000..172c995
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/upnp/UPnPException.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) OSGi Alliance (2005, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.upnp;
+
+/**
+ * There are several defined error situations describing UPnP problems while a
+ * control point invokes actions to UPnPDevices.
+ * 
+ * @since 1.1
+ * @version $Revision: 5673 $
+ */
+public class UPnPException extends Exception {
+	static final long		serialVersionUID		= -262013318122195146L;
+
+	/**
+	 * No Action found by that name at this service.
+	 */
+	public final static int	INVALID_ACTION			= 401;
+
+	/**
+	 * Not enough arguments, too many arguments with a specific name, or one of
+	 * more of the arguments are of the wrong type.
+	 */
+	public final static int	INVALID_ARGS			= 402;
+
+	/**
+	 * The different end-points are no longer in synchronization.
+	 */
+	public final static int	INVALID_SEQUENCE_NUMBER	= 403;
+
+	/**
+	 * Refers to a non existing variable.
+	 */
+	public final static int	INVALID_VARIABLE		= 404;
+
+	/**
+	 * The invoked action failed during execution.
+	 */
+	public final static int	DEVICE_INTERNAL_ERROR	= 501;
+
+	/**
+	 * Key for an error information that is an int type variable and that is
+	 * used to identify occured errors.
+	 */
+	private final int				errorCode;
+
+	/**
+	 * This constructor creates a UPnPException on the specified error code and
+	 * error description.
+	 * 
+	 * @param errorCode errorCode which defined UPnP Device Architecture V1.0.
+	 * @param errordesc errorDescription which explain the type of propblem.
+	 */
+	public UPnPException(int errorCode, String errordesc) {
+		super(errordesc);
+		this.errorCode = errorCode;
+	}
+
+	/**
+	 * Returns the UPnPError Code occured by UPnPDevices during invocation.
+	 * 
+	 * @return The UPnPErrorCode defined by a UPnP Forum working committee or
+	 *         specified by a UPnP vendor.
+	 */
+	public int getUPnPError_Code() {
+		return errorCode;
+	}
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/upnp/UPnPIcon.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/upnp/UPnPIcon.java
new file mode 100644
index 0000000..8b99be9
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/upnp/UPnPIcon.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) OSGi Alliance (2002, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.upnp;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * A UPnP icon representation.
+ * 
+ * Each UPnP device can contain zero or more icons.
+ * 
+ * @version $Revision: 5673 $
+ */
+public interface UPnPIcon {
+	/**
+	 * Returns the MIME type of the icon.
+	 * 
+	 * This method returns the format in which the icon graphics, read from the
+	 * <code>InputStream</code> object obtained by the <code>getInputStream()</code>
+	 * method, is encoded.
+	 * <p>
+	 * The format of the returned string is in accordance to RFC2046. A list of
+	 * valid MIME types is maintained by the <a
+	 * href="http://www.iana.org/assignments/media-types/">IANA</a>.
+	 * <p>
+	 * Typical values returned include: "image/jpeg" or "image/gif"
+	 * 
+	 * @return The MIME type of the encoded icon.
+	 */
+	String getMimeType();
+
+	/**
+	 * Returns the width of the icon in pixels.
+	 * 
+	 * If the actual width of the icon is unknown, -1 is returned.
+	 * 
+	 * @return The width in pixels, or -1 if unknown.
+	 */
+	int getWidth();
+
+	/**
+	 * Returns the height of the icon in pixels.
+	 * 
+	 * If the actual height of the icon is unknown, -1 is returned.
+	 * 
+	 * @return The height in pixels, or -1 if unknown.
+	 */
+	int getHeight();
+
+	/**
+	 * Returns the size of the icon in bytes.
+	 * 
+	 * This method returns the number of bytes of the icon available to read
+	 * from the <code>InputStream</code> object obtained by the
+	 * <code>getInputStream()</code> method. If the actual size can not be
+	 * determined, -1 is returned.
+	 * 
+	 * @return The icon size in bytes, or -1 if the size is unknown.
+	 */
+	int getSize();
+
+	/**
+	 * Returns the color depth of the icon in bits.
+	 * 
+	 * @return The color depth in bits. If the actual color depth of the icon is
+	 *         unknown, -1 is returned.
+	 */
+	int getDepth();
+
+	/**
+	 * Returns an <code>InputStream</code> object for the icon data.
+	 * 
+	 * The <code>InputStream</code> object provides a way for a client to read the
+	 * actual icon graphics data. The number of bytes available from this
+	 * <code>InputStream</code> object can be determined via the
+	 * <code>getSize()</code> method. The format of the data encoded can be
+	 * determined by the MIME type availble via the <code>getMimeType()</code>
+	 * method.
+	 * 
+	 * @return An InputStream to read the icon graphics data from.
+	 * @throws IOException If the <code>InputStream</code> cannot be returned.
+	 * @see UPnPIcon#getMimeType()
+	 */
+	InputStream getInputStream() throws IOException;
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/upnp/UPnPLocalStateVariable.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/upnp/UPnPLocalStateVariable.java
new file mode 100644
index 0000000..241fb8a
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/upnp/UPnPLocalStateVariable.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) OSGi Alliance (2005, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/**
+ * To keep the current values getting from subscribed UPnPDevices. 
+ * 
+ * The actual values of the UPnPStateVaraible are passed as Java object type. 
+ * 
+ * @since 1.1
+ **/
+package org.osgi.service.upnp;
+
+/**
+ * A local UPnP state variable which allows the value of the state variable to
+ * be queried.
+ * 
+ * @since 1.1
+ * 
+ * @version $Revision: 5673 $
+ */
+public interface UPnPLocalStateVariable extends UPnPStateVariable {
+	/**
+	 * This method will keep the current values of UPnPStateVariables of a
+	 * UPnPDevice whenever UPnPStateVariable's value is changed , this method
+	 * must be called.
+	 * 
+	 * @return <code>Object</code> current value of UPnPStateVariable. if the
+	 *         current value is initialized with the default value defined UPnP
+	 *         service description.
+	 */
+	public Object getCurrentValue();
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/upnp/UPnPService.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/upnp/UPnPService.java
new file mode 100644
index 0000000..64b5894
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/upnp/UPnPService.java
@@ -0,0 +1,173 @@
+/*
+ * Copyright (c) OSGi Alliance (2002, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.upnp;
+
+/**
+ * A representation of a UPnP Service.
+ * 
+ * Each UPnP device contains zero or more services. The UPnP description for a
+ * service defines actions, their arguments, and event characteristics.
+ * 
+ * @version $Revision: 5673 $
+ */
+public interface UPnPService {
+	/**
+	 * Property key for the optional service type uri.
+	 * 
+	 * The service type property is used when registering UPnP Device services
+	 * and UPnP Event Listener services. The property contains a <code>String</code>
+	 * array (<code>String[]</code>) of service types. A UPnP Device service can
+	 * thus announce what types of services it contains. A UPnP Event Listener
+	 * service can announce for what type of UPnP services it wants
+	 * notifications. The service version is encoded in the type string as
+	 * specified in the UPnP specification. A <code>null</code> value is a
+	 * wildcard, matching <b>all </b> service types. Value is
+	 * "UPnP.service.type".
+	 * 
+	 * @see UPnPService#getType()
+	 */
+	String	TYPE	= "UPnP.service.type";
+	/**
+	 * Property key for the optional service id.
+	 * 
+	 * The service id property is used when registering UPnP Device services or
+	 * UPnP Event Listener services. The value of the property contains a
+	 * <code>String</code> array (<code>String[]</code>) of service ids. A UPnP
+	 * Device service can thus announce what service ids it contains. A UPnP
+	 * Event Listener service can announce for what UPnP service ids it wants
+	 * notifications. A service id does <b>not </b> have to be universally
+	 * unique. It must be unique only within a device. A <code>null</code> value
+	 * is a wildcard, matching <b>all </b> services. The value is
+	 * "UPnP.service.id".
+	 */
+	String	ID		= "UPnP.service.id";
+
+	/**
+	 * Returns the <code>serviceId</code> field in the UPnP service description.
+	 * 
+	 * 
+	 * <p>
+	 * For standard services defined by a UPnP Forum working committee, the
+	 * serviceId must contain the following components in the indicated order:
+	 * <ul>
+	 * <li><code>urn:upnp-org:serviceId:</code></li>
+	 * <li>service ID suffix</li>
+	 * </ul>
+	 * Example: <code>urn:upnp-org:serviceId:serviceID</code>.
+	 * 
+	 * <p>
+	 * Note that <code>upnp-org</code> is used instead of
+	 * <code>schemas-upnp-org</code> in this example because an XML schema is not
+	 * defined for each serviceId.
+	 * </p>
+	 * 
+	 * <p>
+	 * For non-standard services specified by UPnP vendors, the serviceId must
+	 * contain the following components in the indicated order:
+	 * <ul>
+	 * <li><code>urn:</code></li>
+	 * <li>ICANN domain name owned by the vendor</li>
+	 * <li><code>:serviceId:</code></li>
+	 * <li>service ID suffix</li>
+	 * </ul>
+	 * Example: <code>urn:domain-name:serviceId:serviceID</code>.
+	 * 
+	 * @return The service ID suffix defined by a UPnP Forum working committee
+	 *         or specified by a UPnP vendor. Must be &lt;= 64 characters.
+	 *         Single URI.
+	 */
+	String getId();
+
+	/**
+	 * Returns the <code>serviceType</code> field in the UPnP service description.
+	 * 
+	 * <p>
+	 * For standard services defined by a UPnP Forum working committee, the
+	 * serviceType must contain the following components in the indicated order:
+	 * <ul>
+	 * <li><code>urn:schemas-upnp-org:service:</code></li>
+	 * <li>service type suffix:</li>
+	 * <li>integer service version</li>
+	 * </ul>
+	 * Example: <code>urn:schemas-upnp-org:service:serviceType:v</code>.
+	 * 
+	 * <p>
+	 * For non-standard services specified by UPnP vendors, the
+	 * <code>serviceType</code> must contain the following components in the
+	 * indicated order:
+	 * <ul>
+	 * <li><code>urn:</code></li>
+	 * <li>ICANN domain name owned by the vendor</li>
+	 * <li><code>:service:</code></li>
+	 * <li>service type suffix:</li>
+	 * <li>integer service version</li>
+	 * </ul>
+	 * Example: <code>urn:domain-name:service:serviceType:v</code>.
+	 * 
+	 * @return The service type suffix defined by a UPnP Forum working committee
+	 *         or specified by a UPnP vendor. Must be &lt;= 64 characters, not
+	 *         including the version suffix and separating colon. Single URI.
+	 */
+	String getType();
+
+	/**
+	 * Returns the version suffix encoded in the <code>serviceType</code> field in
+	 * the UPnP service description.
+	 * 
+	 * @return The integer service version defined by a UPnP Forum working
+	 *         committee or specified by a UPnP vendor.
+	 */
+	String getVersion();
+
+	/**
+	 * Locates a specific action by name.
+	 * 
+	 * Looks up an action by its name.
+	 * 
+	 * @param name Name of action. Must not contain hyphen or hash characters.
+	 *        Should be &lt; 32 characters.
+	 * 
+	 * @return The requested action or <code>null</code> if no action is found.
+	 */
+	UPnPAction getAction(String name);
+
+	/**
+	 * Lists all actions provided by this service.
+	 * 
+	 * @return Array of actions (<code>UPnPAction[]</code> )or <code>null</code> if
+	 *         no actions are defined for this service.
+	 */
+	UPnPAction[] getActions();
+
+	/**
+	 * Lists all <code>UPnPStateVariable</code> objects provided by this service.
+	 * 
+	 * @return Array of state variables or <code>null</code> if none are defined
+	 *         for this service.
+	 */
+	UPnPStateVariable[] getStateVariables();
+
+	/**
+	 * Gets a <code>UPnPStateVariable</code> objects provided by this service by
+	 * name
+	 * 
+	 * @param name Name of the State Variable
+	 * 
+	 * @return State variable or <code>null</code> if no such state variable
+	 *         exists for this service.
+	 */
+	UPnPStateVariable getStateVariable(String name);
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/upnp/UPnPStateVariable.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/upnp/UPnPStateVariable.java
new file mode 100644
index 0000000..27b7241
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/upnp/UPnPStateVariable.java
@@ -0,0 +1,342 @@
+/*
+ * Copyright (c) OSGi Alliance (2002, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.upnp;
+
+/**
+ * The meta-information of a UPnP state variable as declared in the device's
+ * service state table (SST).
+ * <p>
+ * Method calls to interact with a device (e.g.
+ * <code>UPnPAction.invoke(...);</code>) use this class to encapsulate meta
+ * information about the input and output arguments.
+ * <p>
+ * The actual values of the arguments are passed as Java objects. The mapping of
+ * types from UPnP data types to Java data types is described with the field
+ * definitions.
+ * 
+ * @version $Revision: 5673 $
+ */
+public interface UPnPStateVariable {
+	/**
+	 * Unsigned 1 <code>Byte</code> int.
+	 * <p>
+	 * Mapped to an <code>Integer</code> object.
+	 */
+	static final String	TYPE_UI1			= "ui1";
+	/**
+	 * Unsigned 2 Byte int.
+	 * <p>
+	 * Mapped to <code>Integer</code> object.
+	 */
+	static final String	TYPE_UI2			= "ui2";
+	/**
+	 * Unsigned 4 Byte int.
+	 * <p>
+	 * Mapped to <code>Long</code> object.
+	 */
+	static final String	TYPE_UI4			= "ui4";
+	/**
+	 * 1 Byte int.
+	 * <p>
+	 * Mapped to <code>Integer</code> object.
+	 */
+	static final String	TYPE_I1				= "i1";
+	/**
+	 * 2 Byte int.
+	 * <p>
+	 * Mapped to <code>Integer</code> object.
+	 */
+	static final String	TYPE_I2				= "i2";
+	/**
+	 * 4 Byte int.
+	 * <p>
+	 * Must be between -2147483648 and 2147483647
+	 * <p>
+	 * Mapped to <code>Integer</code> object.
+	 */
+	static final String	TYPE_I4				= "i4";
+	/**
+	 * Integer number.
+	 * <p>
+	 * Mapped to <code>Integer</code> object.
+	 */
+	static final String	TYPE_INT			= "int";
+	/**
+	 * 4 Byte float.
+	 * <p>
+	 * Same format as float. Must be between 3.40282347E+38 to 1.17549435E-38.
+	 * <p>
+	 * Mapped to <code>Float</code> object.
+	 */
+	static final String	TYPE_R4				= "r4";
+	/**
+	 * 8 Byte float.
+	 * <p>
+	 * Same format as float. Must be between -1.79769313486232E308 and
+	 * -4.94065645841247E-324 for negative values, and between
+	 * 4.94065645841247E-324 and 1.79769313486232E308 for positive values, i.e.,
+	 * IEEE 64-bit (8-Byte) double.
+	 * <p>
+	 * Mapped to <code>Double</code> object.
+	 */
+	static final String	TYPE_R8				= "r8";
+	/**
+	 * Same as r8.
+	 * <p>
+	 * Mapped to <code>Double</code> object.
+	 */
+	static final String	TYPE_NUMBER			= "number";
+	/**
+	 * Same as r8 but no more than 14 digits to the left of the decimal point
+	 * and no more than 4 to the right.
+	 * <p>
+	 * Mapped to <code>Double</code> object.
+	 */
+	static final String	TYPE_FIXED_14_4		= "fixed.14.4";
+	/**
+	 * Floating-point number.
+	 * <p>
+	 * Mantissa (left of the decimal) and/or exponent may have a leading sign.
+	 * Mantissa and/or exponent may have leading zeros. Decimal character in
+	 * mantissa is a period, i.e., whole digits in mantissa separated from
+	 * fractional digits by period. Mantissa separated from exponent by E. (No
+	 * currency symbol.) (No grouping of digits in the mantissa, e.g., no
+	 * commas.)
+	 * <p>
+	 * Mapped to <code>Float</code> object.
+	 */
+	static final String	TYPE_FLOAT			= "float";
+	/**
+	 * Unicode string.
+	 * <p>
+	 * One character long.
+	 * <p>
+	 * Mapped to <code>Character</code> object.
+	 */
+	static final String	TYPE_CHAR			= "char";
+	/**
+	 * Unicode string.
+	 * <p>
+	 * No limit on length.
+	 * <p>
+	 * Mapped to <code>String</code> object.
+	 */
+	static final String	TYPE_STRING			= "string";
+	/**
+	 * A calendar date.
+	 * <p>
+	 * Date in a subset of ISO 8601 format without time data.
+	 * <p>
+	 * See <a
+	 * href="http://www.w3.org/TR/xmlschema-2/#date">http://www.w3.org/TR/xmlschema-2/#date
+	 * </a>.
+	 * <p>
+	 * Mapped to <code>java.util.Date</code> object. Always 00:00 hours.
+	 */
+	static final String	TYPE_DATE			= "date";
+	/**
+	 * A specific instant of time.
+	 * <p>
+	 * Date in ISO 8601 format with optional time but no time zone.
+	 * <p>
+	 * See <a
+	 * href="http://www.w3.org/TR/xmlschema-2/#dateTime">http://www.w3.org/TR/xmlschema-2/#dateTime
+	 * </a>.
+	 * <p>
+	 * Mapped to <code>java.util.Date</code> object using default time zone.
+	 */
+	static final String	TYPE_DATETIME		= "dateTime";
+	/**
+	 * A specific instant of time.
+	 * <p>
+	 * Date in ISO 8601 format with optional time and optional time zone.
+	 * <p>
+	 * See <a
+	 * href="http://www.w3.org/TR/xmlschema-2/#dateTime">http://www.w3.org/TR/xmlschema-2/#dateTime
+	 * </a>.
+	 * <p>
+	 * Mapped to <code>java.util.Date</code> object adjusted to default time zone.
+	 */
+	static final String	TYPE_DATETIME_TZ	= "dateTime.tz";
+	/**
+	 * An instant of time that recurs every day.
+	 * <p>
+	 * Time in a subset of ISO 8601 format with no date and no time zone.
+	 * <p>
+	 * See <a
+	 * href="http://www.w3.org/TR/xmlschema-2/#dateTime">http://www.w3.org/TR/xmlschema-2/#time
+	 * </a>.
+	 * <p>
+	 * Mapped to <code>Long</code>. Converted to milliseconds since midnight.
+	 */
+	static final String	TYPE_TIME			= "time";
+	/**
+	 * An instant of time that recurs every day.
+	 * <p>
+	 * Time in a subset of ISO 8601 format with optional time zone but no date.
+	 * <p>
+	 * See <a
+	 * href="http://www.w3.org/TR/xmlschema-2/#dateTime">http://www.w3.org/TR/xmlschema-2/#time
+	 * </a>.
+	 * <p>
+	 * Mapped to <code>Long</code> object. Converted to milliseconds since
+	 * midnight and adjusted to default time zone, wrapping at 0 and
+	 * 24*60*60*1000.
+	 */
+	static final String	TYPE_TIME_TZ		= "time.tz";
+	/**
+	 * True or false.
+	 * <p>
+	 * Mapped to <code>Boolean</code> object.
+	 */
+	static final String	TYPE_BOOLEAN		= "boolean";
+	/**
+	 * MIME-style Base64 encoded binary BLOB.
+	 * <p>
+	 * Takes 3 Bytes, splits them into 4 parts, and maps each 6 bit piece to an
+	 * octet. (3 octets are encoded as 4.) No limit on size.
+	 * <p>
+	 * Mapped to <code>byte[]</code> object. The Java byte array will hold the
+	 * decoded content of the BLOB.
+	 */
+	static final String	TYPE_BIN_BASE64		= "bin.base64";
+	/**
+	 * Hexadecimal digits representing octets.
+	 * <p>
+	 * Treats each nibble as a hex digit and encodes as a separate Byte. (1
+	 * octet is encoded as 2.) No limit on size.
+	 * <p>
+	 * Mapped to <code>byte[]</code> object. The Java byte array will hold the
+	 * decoded content of the BLOB.
+	 */
+	static final String	TYPE_BIN_HEX		= "bin.hex";
+	/**
+	 * Universal Resource Identifier.
+	 * <p>
+	 * Mapped to <code>String</code> object.
+	 */
+	static final String	TYPE_URI			= "uri";
+	/**
+	 * Universally Unique ID.
+	 * <p>
+	 * Hexadecimal digits representing octets. Optional embedded hyphens are
+	 * ignored.
+	 * <p>
+	 * Mapped to <code>String</code> object.
+	 */
+	static final String	TYPE_UUID			= "uuid";
+
+	/**
+	 * Returns the variable name.
+	 * 
+	 * <ul>
+	 * <li>All standard variables defined by a UPnP Forum working committee
+	 * must not begin with <code>X_</code> nor <code>A_</code>.</li>
+	 * <li>All non-standard variables specified by a UPnP vendor and added to a
+	 * standard service must begin with <code>X_</code>.</li>
+	 * </ul>
+	 * 
+	 * @return Name of state variable. Must not contain a hyphen character nor a
+	 *         hash character. Should be &lt; 32 characters.
+	 */
+	String getName();
+
+	/**
+	 * Returns the Java class associated with the UPnP data type of this state
+	 * variable.
+	 * <P>
+	 * Mapping between the UPnP data types and Java classes is performed
+	 * according to the schema mentioned above.
+	 * 
+	 * <pre>
+	 * 
+	 *  Integer              ui1, ui2, i1, i2, i4, int
+	 *  Long                 ui4, time, time.tz
+	 *  Float                r4, float
+	 *  Double               r8, number, fixed.14.4
+	 *  Character            char
+	 *  String               string, uri, uuid
+	 *  Date                 date, dateTime, dateTime.tz
+	 *  Boolean              boolean
+	 *  byte[]               bin.base64, bin.hex
+	 *  
+	 * </pre>
+	 * 
+	 * @return A class object corresponding to the Java type of this argument.
+	 */
+	Class getJavaDataType();
+
+	/**
+	 * Returns the UPnP type of this state variable. Valid types are defined as
+	 * constants.
+	 * 
+	 * @return The UPnP data type of this state variable, as defined in above
+	 *         constants.
+	 */
+	String getUPnPDataType();
+
+	/**
+	 * Returns the default value, if defined.
+	 * 
+	 * @return The default value or <code>null</code> if not defined. The type of
+	 *         the returned object can be determined by <code>getJavaDataType</code>.
+	 */
+	Object getDefaultValue();
+
+	/**
+	 * Returns the allowed values, if defined. Allowed values can be defined
+	 * only for String types.
+	 * 
+	 * @return The allowed values or <code>null</code> if not defined. Should be
+	 *         less than 32 characters.
+	 */
+	String[] getAllowedValues();
+
+	/**
+	 * Returns the minimum value, if defined. Minimum values can only be defined
+	 * for numeric types.
+	 * 
+	 * @return The minimum value or <code>null</code> if not defined.
+	 */
+	Number getMinimum();
+
+	/**
+	 * Returns the maximum value, if defined. Maximum values can only be defined
+	 * for numeric types.
+	 * 
+	 * @return The maximum value or <code>null</code> if not defined.
+	 */
+	Number getMaximum();
+
+	/**
+	 * Returns the size of an increment operation, if defined. Step sizes can be
+	 * defined only for numeric types.
+	 * 
+	 * @return The increment size or null if not defined.
+	 */
+	Number getStep();
+
+	/**
+	 * Tells if this StateVariable can be used as an event source.
+	 * 
+	 * If the StateVariable is eventable, an event listener service can be
+	 * registered to be notified when changes to the variable appear.
+	 * 
+	 * @return <code>true</code> if the <code>StateVariable</code> generates events,
+	 *         <code>false</code> otherwise.
+	 */
+	boolean sendsEvents();
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/upnp/package.html b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/upnp/package.html
new file mode 100644
index 0000000..5422e04
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/upnp/package.html
@@ -0,0 +1,10 @@
+<!-- $Revision: 6204 $ -->
+<BODY>
+<p>UPnP Package Version 1.1.
+<p>Bundles wishing to use this package must list the package
+in the Import-Package header of the bundle's manifest.
+For example:
+<pre>
+Import-Package: org.osgi.service.upnp; version=&quot;[1.1,2.0)&quot;
+</pre>
+</BODY>
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/upnp/packageinfo b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/upnp/packageinfo
new file mode 100644
index 0000000..3987f9c
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/upnp/packageinfo
@@ -0,0 +1 @@
+version 1.1
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/useradmin/Authorization.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/useradmin/Authorization.java
new file mode 100644
index 0000000..94289f7
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/useradmin/Authorization.java
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) OSGi Alliance (2001, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.useradmin;
+
+/**
+ * The <code>Authorization</code> interface encapsulates an authorization context
+ * on which bundles can base authorization decisions, where appropriate.
+ * <p>
+ * Bundles associate the privilege to access restricted resources or operations
+ * with roles. Before granting access to a restricted resource or operation, a
+ * bundle will check if the <code>Authorization</code> object passed to it possess
+ * the required role, by calling its <code>hasRole</code> method.
+ * <p>
+ * Authorization contexts are instantiated by calling the
+ * {@link UserAdmin#getAuthorization} method.
+ * 
+ * <p>
+ * <i>Trusting Authorization objects </i>
+ * <p>
+ * There are no restrictions regarding the creation of <code>Authorization</code>
+ * objects. Hence, a service must only accept <code>Authorization</code> objects
+ * from bundles that has been authorized to use the service using code based (or
+ * Java 2) permissions.
+ * 
+ * <p>
+ * In some cases it is useful to use <code>ServicePermission</code> to do the code
+ * based access control. A service basing user access control on
+ * <code>Authorization</code> objects passed to it, will then require that a
+ * calling bundle has the <code>ServicePermission</code> to get the service in
+ * question. This is the most convenient way. The OSGi environment will do the
+ * code based permission check when the calling bundle attempts to get the
+ * service from the service registry.
+ * <p>
+ * Example: A servlet using a service on a user's behalf. The bundle with the
+ * servlet must be given the <code>ServicePermission</code> to get the Http
+ * Service.
+ * <p>
+ * However, in some cases the code based permission checks need to be more
+ * fine-grained. A service might allow all bundles to get it, but require
+ * certain code based permissions for some of its methods.
+ * <p>
+ * Example: A servlet using a service on a user's behalf, where some service
+ * functionality is open to anyone, and some is restricted by code based
+ * permissions. When a restricted method is called (e.g., one handing over an
+ * <code>Authorization</code> object), the service explicitly checks that the
+ * calling bundle has permission to make the call.
+ * 
+ * @version $Revision: 5673 $
+ */
+public interface Authorization {
+	/**
+	 * Gets the name of the {@link User} that this <code>Authorization</code>
+	 * context was created for.
+	 * 
+	 * @return The name of the {@link User} object that this
+	 *         <code>Authorization</code> context was created for, or
+	 *         <code>null</code> if no user was specified when this
+	 *         <code>Authorization</code> context was created.
+	 */
+	public String getName();
+
+	/**
+	 * Checks if the role with the specified name is implied by this
+	 * <code>Authorization</code> context.
+	 * <p>
+	 * 
+	 * Bundles must define globally unique role names that are associated with
+	 * the privilege of accessing restricted resources or operations. Operators
+	 * will grant users access to these resources, by creating a {@link Group}
+	 * object for each role and adding {@link User} objects to it.
+	 * 
+	 * @param name The name of the role to check for.
+	 * 
+	 * @return <code>true</code> if this <code>Authorization</code> context implies
+	 *         the specified role, otherwise <code>false</code>.
+	 */
+	public boolean hasRole(String name);
+
+	/**
+	 * Gets the names of all roles implied by this <code>Authorization</code>
+	 * context.
+	 * 
+	 * @return The names of all roles implied by this
+	 *         <code>Authorization</code> context, or <code>null</code> if no roles
+	 *         are in the context. The predefined role <code>user.anyone</code>
+	 *         will not be included in this list.
+	 */
+	public String[] getRoles();
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/useradmin/Group.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/useradmin/Group.java
new file mode 100644
index 0000000..4016a43
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/useradmin/Group.java
@@ -0,0 +1,158 @@
+/*
+ * Copyright (c) OSGi Alliance (2001, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.useradmin;
+
+/**
+ * A named grouping of roles (<code>Role</code> objects).
+ * <p>
+ * Whether or not a given <code>Authorization</code> context implies a
+ * <code>Group</code> object depends on the members of that <code>Group</code>
+ * object.
+ * <p>
+ * A <code>Group</code> object can have two kinds of members: <i>basic </i> and
+ * <i>required </i>. A <code>Group</code> object is implied by an
+ * <code>Authorization</code> context if all of its required members are implied
+ * and at least one of its basic members is implied.
+ * <p>
+ * A <code>Group</code> object must contain at least one basic member in order to
+ * be implied. In other words, a <code>Group</code> object without any basic
+ * member roles is never implied by any <code>Authorization</code> context.
+ * <p>
+ * A <code>User</code> object always implies itself.
+ * <p>
+ * No loop detection is performed when adding members to <code>Group</code>
+ * objects, which means that it is possible to create circular implications.
+ * Loop detection is instead done when roles are checked. The semantics is that
+ * if a role depends on itself (i.e., there is an implication loop), the role is
+ * not implied.
+ * <p>
+ * The rule that a <code>Group</code> object must have at least one basic member
+ * to be implied is motivated by the following example:
+ * 
+ * <pre>
+ * 
+ *  group foo
+ *    required members: marketing
+ *    basic members: alice, bob
+ *  
+ * </pre>
+ * 
+ * Privileged operations that require membership in "foo" can be performed only
+ * by "alice" and "bob", who are in marketing.
+ * <p>
+ * If "alice" and "bob" ever transfer to a different department, anybody in
+ * marketing will be able to assume the "foo" role, which certainly must be
+ * prevented. Requiring that "foo" (or any <code>Group</code> object for that
+ * matter) must have at least one basic member accomplishes that.
+ * <p>
+ * However, this would make it impossible for a <code>Group</code> object to be
+ * implied by just its required members. An example where this implication might
+ * be useful is the following declaration: "Any citizen who is an adult is
+ * allowed to vote." An intuitive configuration of "voter" would be:
+ * 
+ * <pre>
+ * 
+ *  group voter
+ *    required members: citizen, adult
+ *       basic members:
+ *  
+ * </pre>
+ * 
+ * However, according to the above rule, the "voter" role could never be assumed
+ * by anybody, since it lacks any basic members. In order to address this issue
+ * a predefined role named "user.anyone" can be specified, which is always
+ * implied. The desired implication of the "voter" group can then be achieved by
+ * specifying "user.anyone" as its basic member, as follows:
+ * 
+ * <pre>
+ * 
+ *  group voter
+ *    required members: citizen, adult
+ *       basic members: user.anyone
+ *  
+ * </pre>
+ * 
+ * @version $Revision: 5673 $
+ */
+public interface Group extends User {
+	/**
+	 * Adds the specified <code>Role</code> object as a basic member to this
+	 * <code>Group</code> object.
+	 * 
+	 * @param role The role to add as a basic member.
+	 * 
+	 * @return <code>true</code> if the given role could be added as a basic
+	 *         member, and <code>false</code> if this <code>Group</code> object
+	 *         already contains a <code>Role</code> object whose name matches that
+	 *         of the specified role.
+	 * 
+	 * @throws SecurityException If a security manager exists and the caller
+	 *         does not have the <code>UserAdminPermission</code> with name
+	 *         <code>admin</code>.
+	 */
+	public boolean addMember(Role role);
+
+	/**
+	 * Adds the specified <code>Role</code> object as a required member to this
+	 * <code>Group</code> object.
+	 * 
+	 * @param role The <code>Role</code> object to add as a required member.
+	 * 
+	 * @return <code>true</code> if the given <code>Role</code> object could be
+	 *         added as a required member, and <code>false</code> if this
+	 *         <code>Group</code> object already contains a <code>Role</code> object
+	 *         whose name matches that of the specified role.
+	 * 
+	 * @throws SecurityException If a security manager exists and the caller
+	 *         does not have the <code>UserAdminPermission</code> with name
+	 *         <code>admin</code>.
+	 */
+	public boolean addRequiredMember(Role role);
+
+	/**
+	 * Removes the specified <code>Role</code> object from this <code>Group</code>
+	 * object.
+	 * 
+	 * @param role The <code>Role</code> object to remove from this <code>Group</code>
+	 *        object.
+	 * 
+	 * @return <code>true</code> if the <code>Role</code> object could be removed,
+	 *         otherwise <code>false</code>.
+	 * 
+	 * @throws SecurityException If a security manager exists and the caller
+	 *         does not have the <code>UserAdminPermission</code> with name
+	 *         <code>admin</code>.
+	 */
+	public boolean removeMember(Role role);
+
+	/**
+	 * Gets the basic members of this <code>Group</code> object.
+	 * 
+	 * @return The basic members of this <code>Group</code> object, or
+	 *         <code>null</code> if this <code>Group</code> object does not contain
+	 *         any basic members.
+	 */
+	public Role[] getMembers();
+
+	/**
+	 * Gets the required members of this <code>Group</code> object.
+	 * 
+	 * @return The required members of this <code>Group</code> object, or
+	 *         <code>null</code> if this <code>Group</code> object does not contain
+	 *         any required members.
+	 */
+	public Role[] getRequiredMembers();
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/useradmin/Role.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/useradmin/Role.java
new file mode 100644
index 0000000..e33d559
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/useradmin/Role.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (c) OSGi Alliance (2001, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.useradmin;
+
+import java.util.Dictionary;
+
+/**
+ * The base interface for <code>Role</code> objects managed by the User Admin
+ * service.
+ * 
+ * <p>
+ * This interface exposes the characteristics shared by all <code>Role</code>
+ * classes: a name, a type, and a set of properties.
+ * <p>
+ * Properties represent public information about the <code>Role</code> object that
+ * can be read by anyone. Specific {@link UserAdminPermission} objects are
+ * required to change a <code>Role</code> object's properties.
+ * <p>
+ * <code>Role</code> object properties are <code>Dictionary</code> objects. Changes
+ * to these objects are propagated to the User Admin service and made
+ * persistent.
+ * <p>
+ * Every User Admin service contains a set of predefined <code>Role</code> objects
+ * that are always present and cannot be removed. All predefined <code>Role</code>
+ * objects are of type <code>ROLE</code>. This version of the
+ * <code>org.osgi.service.useradmin</code> package defines a single predefined
+ * role named &quot;user.anyone&quot;, which is inherited by any other role.
+ * Other predefined roles may be added in the future. Since
+ * &quot;user.anyone&quot; is a <code>Role</code> object that has properties
+ * associated with it that can be read and modified. Access to these properties
+ * and their use is application specific and is controlled using
+ * <code>UserAdminPermission</code> in the same way that properties for other
+ * <code>Role</code> objects are.
+ * 
+ * @version $Revision: 5673 $
+ */
+public interface Role {
+	/**
+	 * The name of the predefined role, user.anyone, that all users and groups
+	 * belong to.
+	 * @since 1.1
+	 */
+	public static final String	USER_ANYONE	= "user.anyone";
+	/**
+	 * The type of a predefined role.
+	 * 
+	 * <p>
+	 * The value of <code>ROLE</code> is 0.
+	 */
+	public static final int		ROLE		= 0;
+	/**
+	 * The type of a {@link User} role.
+	 * 
+	 * <p>
+	 * The value of <code>USER</code> is 1.
+	 */
+	public static final int		USER		= 1;
+	/**
+	 * The type of a {@link Group} role.
+	 * 
+	 * <p>
+	 * The value of <code>GROUP</code> is 2.
+	 */
+	public static final int		GROUP		= 2;
+
+	/**
+	 * Returns the name of this role.
+	 * 
+	 * @return The role's name.
+	 */
+	public String getName();
+
+	/**
+	 * Returns the type of this role.
+	 * 
+	 * @return The role's type.
+	 */
+	public int getType();
+
+	/**
+	 * Returns a <code>Dictionary</code> of the (public) properties of this
+	 * <code>Role</code> object. Any changes to the returned <code>Dictionary</code>
+	 * will change the properties of this <code>Role</code> object. This will
+	 * cause a <code>UserAdminEvent</code> object of type
+	 * {@link UserAdminEvent#ROLE_CHANGED} to be broadcast to any
+	 * <code>UserAdminListener</code> objects.
+	 * 
+	 * <p>
+	 * Only objects of type <code>String</code> may be used as property keys, and
+	 * only objects of type <code>String</code> or <code>byte[]</code> may be used
+	 * as property values. Any other types will cause an exception of type
+	 * <code>IllegalArgumentException</code> to be raised.
+	 * 
+	 * <p>
+	 * In order to add, change, or remove a property in the returned
+	 * <code>Dictionary</code>, a {@link UserAdminPermission} named after the
+	 * property name (or a prefix of it) with action <code>changeProperty</code>
+	 * is required.
+	 * 
+	 * @return <code>Dictionary</code> containing the properties of this
+	 *         <code>Role</code> object.
+	 */
+	public Dictionary getProperties();
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/useradmin/User.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/useradmin/User.java
new file mode 100644
index 0000000..b9103fd
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/useradmin/User.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright (c) OSGi Alliance (2001, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.useradmin;
+
+import java.util.Dictionary;
+
+/**
+ * A <code>User</code> role managed by a User Admin service.
+ * 
+ * <p>
+ * In this context, the term &quot;user&quot; is not limited to just human
+ * beings. Instead, it refers to any entity that may have any number of
+ * credentials associated with it that it may use to authenticate itself.
+ * <p>
+ * In general, <code>User</code> objects are associated with a specific User Admin
+ * service (namely the one that created them), and cannot be used with other
+ * User Admin services.
+ * <p>
+ * A <code>User</code> object may have credentials (and properties, inherited from
+ * the {@link Role} class) associated with it. Specific
+ * {@link UserAdminPermission} objects are required to read or change a
+ * <code>User</code> object's credentials.
+ * <p>
+ * Credentials are <code>Dictionary</code> objects and have semantics that are
+ * similar to the properties in the <code>Role</code> class.
+ * 
+ * @version $Revision: 5673 $
+ */
+public interface User extends Role {
+	/**
+	 * Returns a <code>Dictionary</code> of the credentials of this <code>User</code>
+	 * object. Any changes to the returned <code>Dictionary</code> object will
+	 * change the credentials of this <code>User</code> object. This will cause a
+	 * <code>UserAdminEvent</code> object of type
+	 * {@link UserAdminEvent#ROLE_CHANGED} to be broadcast to any
+	 * <code>UserAdminListeners</code> objects.
+	 * 
+	 * <p>
+	 * Only objects of type <code>String</code> may be used as credential keys,
+	 * and only objects of type <code>String</code> or of type <code>byte[]</code>
+	 * may be used as credential values. Any other types will cause an exception
+	 * of type <code>IllegalArgumentException</code> to be raised.
+	 * 
+	 * <p>
+	 * In order to retrieve a credential from the returned <code>Dictionary</code>
+	 * object, a {@link UserAdminPermission} named after the credential name (or
+	 * a prefix of it) with action <code>getCredential</code> is required.
+	 * <p>
+	 * In order to add or remove a credential from the returned
+	 * <code>Dictionary</code> object, a {@link UserAdminPermission} named after
+	 * the credential name (or a prefix of it) with action
+	 * <code>changeCredential</code> is required.
+	 * 
+	 * @return <code>Dictionary</code> object containing the credentials of this
+	 *         <code>User</code> object.
+	 */
+	public Dictionary getCredentials();
+
+	/**
+	 * Checks to see if this <code>User</code> object has a credential with the
+	 * specified <code>key</code> set to the specified <code>value</code>.
+	 * 
+	 * <p>
+	 * If the specified credential <code>value</code> is not of type
+	 * <code>String</code> or <code>byte[]</code>, it is ignored, that is,
+	 * <code>false</code> is returned (as opposed to an
+	 * <code>IllegalArgumentException</code> being raised).
+	 * 
+	 * @param key The credential <code>key</code>.
+	 * @param value The credential <code>value</code>.
+	 * 
+	 * @return <code>true</code> if this user has the specified credential;
+	 *         <code>false</code> otherwise.
+	 * 
+	 * @throws SecurityException If a security manager exists and the caller
+	 *         does not have the <code>UserAdminPermission</code> named after the
+	 *         credential key (or a prefix of it) with action
+	 *         <code>getCredential</code>.
+	 */
+	public boolean hasCredential(String key, Object value);
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/useradmin/UserAdmin.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/useradmin/UserAdmin.java
new file mode 100644
index 0000000..2e4b096
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/useradmin/UserAdmin.java
@@ -0,0 +1,157 @@
+/*
+ * Copyright (c) OSGi Alliance (2001, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.useradmin;
+
+import org.osgi.framework.InvalidSyntaxException;
+
+/**
+ * This interface is used to manage a database of named <code>Role</code> objects,
+ * which can be used for authentication and authorization purposes.
+ * 
+ * <p>
+ * This version of the User Admin service defines two types of <code>Role</code>
+ * objects: "User" and "Group". Each type of role is represented by an
+ * <code>int</code> constant and an interface. The range of positive integers is
+ * reserved for new types of roles that may be added in the future. When
+ * defining proprietary role types, negative constant values must be used.
+ * 
+ * <p>
+ * Every role has a name and a type.
+ * 
+ * <p>
+ * A {@link User} object can be configured with credentials (e.g., a password)
+ * and properties (e.g., a street address, phone number, etc.).
+ * <p>
+ * A {@link Group} object represents an aggregation of {@link User} and
+ * {@link Group} objects. In other words, the members of a <code>Group</code>
+ * object are roles themselves.
+ * <p>
+ * Every User Admin service manages and maintains its own namespace of
+ * <code>Role</code> objects, in which each <code>Role</code> object has a unique
+ * name.
+ * 
+ * @version $Revision: 5673 $
+ */
+public interface UserAdmin {
+	/**
+	 * Creates a <code>Role</code> object with the given name and of the given
+	 * type.
+	 * 
+	 * <p>
+	 * If a <code>Role</code> object was created, a <code>UserAdminEvent</code>
+	 * object of type {@link UserAdminEvent#ROLE_CREATED} is broadcast to any
+	 * <code>UserAdminListener</code> object.
+	 * 
+	 * @param name The <code>name</code> of the <code>Role</code> object to create.
+	 * @param type The type of the <code>Role</code> object to create. Must be
+	 *        either a {@link Role#USER} type or {@link Role#GROUP} type.
+	 * 
+	 * @return The newly created <code>Role</code> object, or <code>null</code> if a
+	 *         role with the given name already exists.
+	 * 
+	 * @throws IllegalArgumentException if <code>type</code> is invalid.
+	 * 
+	 * @throws SecurityException If a security manager exists and the caller
+	 *         does not have the <code>UserAdminPermission</code> with name
+	 *         <code>admin</code>.
+	 */
+	public Role createRole(String name, int type);
+
+	/**
+	 * Removes the <code>Role</code> object with the given name from this User
+	 * Admin service and all groups it is a member of.
+	 * 
+	 * <p>
+	 * If the <code>Role</code> object was removed, a <code>UserAdminEvent</code>
+	 * object of type {@link UserAdminEvent#ROLE_REMOVED} is broadcast to any
+	 * <code>UserAdminListener</code> object.
+	 * 
+	 * @param name The name of the <code>Role</code> object to remove.
+	 * 
+	 * @return <code>true</code> If a <code>Role</code> object with the given name
+	 *         is present in this User Admin service and could be removed,
+	 *         otherwise <code>false</code>.
+	 * 
+	 * @throws SecurityException If a security manager exists and the caller
+	 *         does not have the <code>UserAdminPermission</code> with name
+	 *         <code>admin</code>.
+	 */
+	public boolean removeRole(String name);
+
+	/**
+	 * Gets the <code>Role</code> object with the given <code>name</code> from this
+	 * User Admin service.
+	 * 
+	 * @param name The name of the <code>Role</code> object to get.
+	 * 
+	 * @return The requested <code>Role</code> object, or <code>null</code> if this
+	 *         User Admin service does not have a <code>Role</code> object with
+	 *         the given <code>name</code>.
+	 */
+	public Role getRole(String name);
+
+	/**
+	 * Gets the <code>Role</code> objects managed by this User Admin service that
+	 * have properties matching the specified LDAP filter criteria. See
+	 * <code>org.osgi.framework.Filter</code> for a description of the filter
+	 * syntax. If a <code>null</code> filter is specified, all Role objects
+	 * managed by this User Admin service are returned.
+	 * 
+	 * @param filter The filter criteria to match.
+	 * 
+	 * @return The <code>Role</code> objects managed by this User Admin service
+	 *         whose properties match the specified filter criteria, or all
+	 *         <code>Role</code> objects if a <code>null</code> filter is specified.
+	 *         If no roles match the filter, <code>null</code> will be returned.
+	 * @throws InvalidSyntaxException If the filter is not well formed.
+	 *  
+	 */
+	public Role[] getRoles(String filter) throws InvalidSyntaxException;
+
+	/**
+	 * Gets the user with the given property <code>key</code>-<code>value</code>
+	 * pair from the User Admin service database. This is a convenience method
+	 * for retrieving a <code>User</code> object based on a property for which
+	 * every <code>User</code> object is supposed to have a unique value (within
+	 * the scope of this User Admin service), such as for example a X.500
+	 * distinguished name.
+	 * 
+	 * @param key The property key to look for.
+	 * @param value The property value to compare with.
+	 * 
+	 * @return A matching user, if <em>exactly</em> one is found. If zero or
+	 *         more than one matching users are found, <code>null</code> is
+	 *         returned.
+	 */
+	public User getUser(String key, String value);
+
+	/**
+	 * Creates an <code>Authorization</code> object that encapsulates the
+	 * specified <code>User</code> object and the <code>Role</code> objects it
+	 * possesses. The <code>null</code> user is interpreted as the anonymous user.
+	 * The anonymous user represents a user that has not been authenticated. An
+	 * <code>Authorization</code> object for an anonymous user will be unnamed,
+	 * and will only imply groups that user.anyone implies.
+	 * 
+	 * @param user The <code>User</code> object to create an
+	 *        <code>Authorization</code> object for, or <code>null</code> for the
+	 *        anonymous user.
+	 * 
+	 * @return the <code>Authorization</code> object for the specified
+	 *         <code>User</code> object.
+	 */
+	public Authorization getAuthorization(User user);
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/useradmin/UserAdminEvent.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/useradmin/UserAdminEvent.java
new file mode 100644
index 0000000..88ef8fb
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/useradmin/UserAdminEvent.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (c) OSGi Alliance (2001, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.useradmin;
+
+import org.osgi.framework.ServiceReference;
+
+/**
+ * <code>Role</code> change event.
+ * <p>
+ * <code>UserAdminEvent</code> objects are delivered asynchronously to any
+ * <code>UserAdminListener</code> objects when a change occurs in any of the
+ * <code>Role</code> objects managed by a User Admin service.
+ * 
+ * <p>
+ * A type code is used to identify the event. The following event types are
+ * defined: {@link #ROLE_CREATED} type, {@link #ROLE_CHANGED} type, and
+ * {@link #ROLE_REMOVED} type. Additional event types may be defined in the
+ * future.
+ * 
+ * @see UserAdmin
+ * @see UserAdminListener
+ * 
+ * @version $Revision: 5673 $
+ */
+public class UserAdminEvent {
+	private ServiceReference	ref;
+	private int					type;
+	private Role				role;
+	/**
+	 * A <code>Role</code> object has been created.
+	 * 
+	 * <p>
+	 * The value of <code>ROLE_CREATED</code> is 0x00000001.
+	 */
+	public static final int		ROLE_CREATED	= 0x00000001;
+	/**
+	 * A <code>Role</code> object has been modified.
+	 * 
+	 * <p>
+	 * The value of <code>ROLE_CHANGED</code> is 0x00000002.
+	 */
+	public static final int		ROLE_CHANGED	= 0x00000002;
+	/**
+	 * A <code>Role</code> object has been removed.
+	 * 
+	 * <p>
+	 * The value of <code>ROLE_REMOVED</code> is 0x00000004.
+	 */
+	public static final int		ROLE_REMOVED	= 0x00000004;
+
+	/**
+	 * Constructs a <code>UserAdminEvent</code> object from the given
+	 * <code>ServiceReference</code> object, event type, and <code>Role</code>
+	 * object.
+	 * 
+	 * @param ref The <code>ServiceReference</code> object of the User Admin
+	 *        service that generated this event.
+	 * @param type The event type.
+	 * @param role The <code>Role</code> object on which this event occurred.
+	 */
+	public UserAdminEvent(ServiceReference ref, int type, Role role) {
+		this.ref = ref;
+		this.type = type;
+		this.role = role;
+	}
+
+	/**
+	 * Gets the <code>ServiceReference</code> object of the User Admin service
+	 * that generated this event.
+	 * 
+	 * @return The User Admin service's <code>ServiceReference</code> object.
+	 */
+	public ServiceReference getServiceReference() {
+		return ref;
+	}
+
+	/**
+	 * Returns the type of this event.
+	 * 
+	 * <p>
+	 * The type values are {@link #ROLE_CREATED} type, {@link #ROLE_CHANGED}
+	 * type, and {@link #ROLE_REMOVED} type.
+	 * 
+	 * @return The event type.
+	 */
+	public int getType() {
+		return type;
+	}
+
+	/**
+	 * Gets the <code>Role</code> object this event was generated for.
+	 * 
+	 * @return The <code>Role</code> object this event was generated for.
+	 */
+	public Role getRole() {
+		return role;
+	}
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/useradmin/UserAdminListener.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/useradmin/UserAdminListener.java
new file mode 100644
index 0000000..a301b92
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/useradmin/UserAdminListener.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) OSGi Alliance (2001, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.useradmin;
+
+/**
+ * Listener for UserAdminEvents.
+ * 
+ * <p>
+ * <code>UserAdminListener</code> objects are registered with the Framework
+ * service registry and notified with a <code>UserAdminEvent</code> object when a
+ * <code>Role</code> object has been created, removed, or modified.
+ * <p>
+ * <code>UserAdminListener</code> objects can further inspect the received
+ * <code>UserAdminEvent</code> object to determine its type, the <code>Role</code>
+ * object it occurred on, and the User Admin service that generated it.
+ * 
+ * @see UserAdmin
+ * @see UserAdminEvent
+ * 
+ * @version $Revision: 5673 $
+ */
+public interface UserAdminListener {
+	/**
+	 * Receives notification that a <code>Role</code> object has been created,
+	 * removed, or modified.
+	 * 
+	 * @param event The <code>UserAdminEvent</code> object.
+	 */
+	public void roleChanged(UserAdminEvent event);
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/useradmin/UserAdminPermission.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/useradmin/UserAdminPermission.java
new file mode 100644
index 0000000..52be194
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/useradmin/UserAdminPermission.java
@@ -0,0 +1,643 @@
+/*
+ * Copyright (c) OSGi Alliance (2001, 2009). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.useradmin;
+
+import java.io.IOException;
+import java.security.BasicPermission;
+import java.security.Permission;
+import java.security.PermissionCollection;
+import java.util.Enumeration;
+import java.util.Hashtable;
+
+/**
+ * Permission to configure and access the {@link Role} objects managed by a User
+ * Admin service.
+ * 
+ * <p>
+ * This class represents access to the <code>Role</code> objects managed by a
+ * User Admin service and their properties and credentials (in the case of
+ * {@link User} objects).
+ * <p>
+ * The permission name is the name (or name prefix) of a property or credential.
+ * The naming convention follows the hierarchical property naming convention.
+ * Also, an asterisk may appear at the end of the name, following a
+ * &quot;.&quot;, or by itself, to signify a wildcard match. For example:
+ * &quot;org.osgi.security.protocol.*&quot; or &quot;*&quot; is valid, but
+ * &quot;*protocol&quot; or &quot;a*b&quot; are not valid.
+ * 
+ * <p>
+ * The <code>UserAdminPermission</code> with the reserved name &quot;admin&quot;
+ * represents the permission required for creating and removing
+ * <code>Role</code> objects in the User Admin service, as well as adding and
+ * removing members in a <code>Group</code> object. This
+ * <code>UserAdminPermission</code> does not have any actions associated with
+ * it.
+ * 
+ * <p>
+ * The actions to be granted are passed to the constructor in a string
+ * containing a list of one or more comma-separated keywords. The possible
+ * keywords are: <code>changeProperty</code>,<code>changeCredential</code>, and
+ * <code>getCredential</code>. Their meaning is defined as follows:
+ * 
+ * <pre>
+ * 
+ *  action
+ *  changeProperty    Permission to change (i.e., add and remove)
+ *                    Role object properties whose names start with
+ *                    the name argument specified in the constructor.
+ *  changeCredential  Permission to change (i.e., add and remove)
+ *                    User object credentials whose names start
+ *                    with the name argument specified in the constructor.
+ *  getCredential     Permission to retrieve and check for the
+ *                    existence of User object credentials whose names
+ *                    start with the name argument specified in the
+ *                    constructor.
+ * 
+ * </pre>
+ * 
+ * The action string is converted to lowercase before processing.
+ * 
+ * <p>
+ * Following is a PermissionInfo style policy entry which grants a user
+ * administration bundle a number of <code>UserAdminPermission</code> object:
+ * 
+ * <pre>
+ * 
+ *  (org.osgi.service.useradmin.UserAdminPermission &quot;admin&quot;)
+ *  (org.osgi.service.useradmin.UserAdminPermission &quot;com.foo.*&quot; &quot;changeProperty,getCredential,changeCredential&quot;)
+ *  (org.osgi.service.useradmin.UserAdminPermission &quot;user.*&quot;, &quot;changeProperty,changeCredential&quot;)
+ * 
+ * </pre>
+ * 
+ * The first permission statement grants the bundle the permission to perform
+ * any User Admin service operations of type "admin", that is, create and remove
+ * roles and configure <code>Group</code> objects.
+ * 
+ * <p>
+ * The second permission statement grants the bundle the permission to change
+ * any properties as well as get and change any credentials whose names start
+ * with <code>com.foo.</code>.
+ * 
+ * <p>
+ * The third permission statement grants the bundle the permission to change any
+ * properties and credentials whose names start with <code>user.</code>. This
+ * means that the bundle is allowed to change, but not retrieve any credentials
+ * with the given prefix.
+ * 
+ * <p>
+ * The following policy entry empowers the Http Service bundle to perform user
+ * authentication:
+ * 
+ * <pre>
+ * 
+ *  grant codeBase &quot;${jars}http.jar&quot; {
+ *    permission org.osgi.service.useradmin.UserAdminPermission
+ *      &quot;user.password&quot;, &quot;getCredential&quot;;
+ *  };
+ * 
+ * </pre>
+ * 
+ * <p>
+ * The permission statement grants the Http Service bundle the permission to
+ * validate any password credentials (for authentication purposes), but the
+ * bundle is not allowed to change any properties or credentials.
+ * 
+ * @ThreadSafe
+ * @version $Revision: 6381 $
+ */
+public final class UserAdminPermission extends BasicPermission {
+	static final long			serialVersionUID			= -1179971692401603789L;
+	/**
+	 * The permission name &quot;admin&quot;.
+	 */
+	public static final String	ADMIN						= "admin";
+	/**
+	 * The action string &quot;changeProperty&quot;.
+	 */
+	public static final String	CHANGE_PROPERTY				= "changeProperty";
+	private static final int	ACTION_CHANGE_PROPERTY		= 0x1;
+	/**
+	 * The action string &quot;changeCredential&quot;.
+	 */
+	public static final String	CHANGE_CREDENTIAL			= "changeCredential";
+	private static final int	ACTION_CHANGE_CREDENTIAL	= 0x2;
+	/**
+	 * The action string &quot;getCredential&quot;.
+	 */
+	public static final String	GET_CREDENTIAL				= "getCredential";
+	private static final int	ACTION_GET_CREDENTIAL		= 0x4;
+	/**
+	 * All actions
+	 */
+	private static final int	ACTION_ALL					= ACTION_CHANGE_PROPERTY
+																	| ACTION_CHANGE_CREDENTIAL
+																	| ACTION_GET_CREDENTIAL;
+	/**
+	 * No actions.
+	 */
+	static final int			ACTION_NONE					= 0;
+	/**
+	 * The actions in canonical form.
+	 * 
+	 * @serial
+	 */
+	private volatile String		actions						= null;
+	/**
+	 * The actions mask.
+	 */
+	private transient int		action_mask;
+
+	/**
+	 * Creates a new <code>UserAdminPermission</code> with the specified name
+	 * and actions. <code>name</code> is either the reserved string
+	 * &quot;admin&quot; or the name of a credential or property, and
+	 * <code>actions</code> contains a comma-separated list of the actions
+	 * granted on the specified name. Valid actions are
+	 * <code>changeProperty</code>,<code>changeCredential</code>, and
+	 * getCredential.
+	 * 
+	 * @param name the name of this <code>UserAdminPermission</code>
+	 * @param actions the action string.
+	 * 
+	 * @throws IllegalArgumentException If <code>name</code> equals
+	 *         &quot;admin&quot; and <code>actions</code> are specified.
+	 */
+	public UserAdminPermission(String name, String actions) {
+		this(name, parseActions(actions));
+	}
+
+	/**
+	 * Package private constructor used by
+	 * <code>UserAdminPermissionCollection</code>.
+	 * 
+	 * @param name class name
+	 * @param mask action mask
+	 */
+	UserAdminPermission(String name, int mask) {
+		super(name);
+		setTransients(mask);
+	}
+
+	/**
+	 * Called by constructors and when deserialized.
+	 * 
+	 * @param mask action mask
+	 */
+	private synchronized void setTransients(int mask) {
+		if (getName().equals(ADMIN)) {
+			if (mask != ACTION_NONE) {
+				throw new IllegalArgumentException("Actions specified for "
+						+ "no-action " + "UserAdminPermission");
+			}
+		}
+		else {
+			if ((mask == ACTION_NONE) || ((mask & ACTION_ALL) != mask)) {
+				throw new IllegalArgumentException("Invalid action string");
+			}
+		}
+		action_mask = mask;
+	}
+
+	/**
+	 * Returns the current action mask.
+	 * <p>
+	 * Used by the UserAdminPermissionCollection class.
+	 * 
+	 * @return Current action mask.
+	 */
+	synchronized int getActionsMask() {
+		return action_mask;
+	}
+
+	/**
+	 * Parse action string into action mask.
+	 * 
+	 * @param actions Action string.
+	 * @return action mask.
+	 */
+	private static int parseActions(String actions) {
+		boolean seencomma = false;
+		int mask = ACTION_NONE;
+		if (actions == null) {
+			return mask;
+		}
+		char[] a = actions.toCharArray();
+		int i = a.length - 1;
+		if (i < 0)
+			return mask;
+		while (i != -1) {
+			char c;
+			// skip whitespace
+			while ((i != -1)
+					&& ((c = a[i]) == ' ' || c == '\r' || c == '\n'
+							|| c == '\f' || c == '\t'))
+				i--;
+			// check for the known strings
+			int matchlen;
+			if (i >= 12 && match_get(a, i - 10) && match_credential(a, i)) {
+				matchlen = 13;
+				mask |= ACTION_GET_CREDENTIAL;
+			}
+			else
+				if (i >= 13 && match_change(a, i - 8) && match_property(a, i)) {
+					matchlen = 14;
+					mask |= ACTION_CHANGE_PROPERTY;
+				}
+				else
+					if (i >= 15 && match_change(a, i - 10)
+							&& match_credential(a, i)) {
+						matchlen = 16;
+						mask |= ACTION_CHANGE_CREDENTIAL;
+					}
+					else {
+						// parse error
+						throw new IllegalArgumentException(
+								"invalid permission: " + actions);
+					}
+			// make sure we didn't just match the tail of a word
+			// like "ackbarfimport". Also, skip to the comma.
+			seencomma = false;
+			while (i >= matchlen && !seencomma) {
+				switch (a[i - matchlen]) {
+					case ',' :
+						seencomma = true;
+						/* FALLTHROUGH */
+					case ' ' :
+					case '\r' :
+					case '\n' :
+					case '\f' :
+					case '\t' :
+						break;
+					default :
+						throw new IllegalArgumentException(
+								"invalid permission: " + actions);
+				}
+				i--;
+			}
+			// point i at the location of the comma minus one (or -1).
+			i -= matchlen;
+		}
+		if (seencomma) {
+			throw new IllegalArgumentException("invalid permission: " + actions);
+		}
+		return mask;
+	}
+
+	private static boolean match_change(char[] a, int i) {
+		return ((a[i - 5] == 'c' || a[i - 5] == 'C')
+				&& (a[i - 4] == 'h' || a[i - 4] == 'H')
+				&& (a[i - 3] == 'a' || a[i - 3] == 'A')
+				&& (a[i - 2] == 'n' || a[i - 2] == 'N')
+				&& (a[i - 1] == 'g' || a[i - 1] == 'G') && (a[i - 0] == 'e' || a[i - 0] == 'E'));
+	}
+
+	private static boolean match_get(char[] a, int i) {
+		return ((a[i - 2] == 'g' || a[i - 2] == 'G')
+				&& (a[i - 1] == 'e' || a[i - 1] == 'E') && (a[i - 0] == 't' || a[i - 0] == 'T'));
+	}
+
+	private static boolean match_property(char[] a, int i) {
+		return ((a[i - 7] == 'p' || a[i - 7] == 'P')
+				&& (a[i - 6] == 'r' || a[i - 6] == 'R')
+				&& (a[i - 5] == 'o' || a[i - 5] == 'O')
+				&& (a[i - 4] == 'p' || a[i - 4] == 'P')
+				&& (a[i - 3] == 'e' || a[i - 3] == 'E')
+				&& (a[i - 2] == 'r' || a[i - 2] == 'R')
+				&& (a[i - 1] == 't' || a[i - 1] == 'T') && (a[i - 0] == 'y' || a[i - 0] == 'Y'));
+	}
+
+	private static boolean match_credential(char[] a, int i) {
+		return ((a[i - 9] == 'c' || a[i - 9] == 'C')
+				&& (a[i - 8] == 'r' || a[i - 8] == 'R')
+				&& (a[i - 7] == 'e' || a[i - 7] == 'E')
+				&& (a[i - 6] == 'd' || a[i - 6] == 'D')
+				&& (a[i - 5] == 'e' || a[i - 5] == 'E')
+				&& (a[i - 4] == 'n' || a[i - 4] == 'N')
+				&& (a[i - 3] == 't' || a[i - 3] == 'T')
+				&& (a[i - 2] == 'i' || a[i - 2] == 'I')
+				&& (a[i - 1] == 'a' || a[i - 1] == 'A') && (a[i - 0] == 'l' || a[i - 0] == 'L'));
+	}
+
+	/**
+	 * Checks if this <code>UserAdminPermission</code> object
+	 * &quot;implies&quot; the specified permission.
+	 * <P>
+	 * More specifically, this method returns <code>true</code> if:
+	 * <p>
+	 * <ul>
+	 * <li><i>p </i> is an instanceof <code>UserAdminPermission</code>,
+	 * <li><i>p </i>'s actions are a proper subset of this object's actions, and
+	 * <li><i>p </i>'s name is implied by this object's name. For example,
+	 * &quot;java.*&quot; implies &quot;java.home&quot;.
+	 * </ul>
+	 * 
+	 * @param p the permission to check against.
+	 * 
+	 * @return <code>true</code> if the specified permission is implied by this
+	 *         object; <code>false</code> otherwise.
+	 */
+	public boolean implies(Permission p) {
+		if (p instanceof UserAdminPermission) {
+			UserAdminPermission requested = (UserAdminPermission) p;
+			int mask = getActionsMask();
+			int targetMask = requested.getActionsMask();
+			return // Check that the we have the requested action
+			((targetMask & mask) == targetMask) &&
+			// If the target action mask is ACTION_NONE, it must be an
+					// admin permission, and then we must be that too
+					(targetMask != ACTION_NONE || mask == ACTION_NONE) &&
+					// Check that name name matches
+					super.implies(p);
+		}
+		return false;
+	}
+
+	/**
+	 * Returns the canonical string representation of the actions, separated by
+	 * comma.
+	 * 
+	 * @return the canonical string representation of the actions.
+	 */
+	public String getActions() {
+		String result = actions;
+		if (result == null) {
+			StringBuffer sb = new StringBuffer();
+			boolean comma = false;
+			int mask = getActionsMask();
+			if ((mask & ACTION_CHANGE_CREDENTIAL) == ACTION_CHANGE_CREDENTIAL) {
+				sb.append(CHANGE_CREDENTIAL);
+				comma = true;
+			}
+			if ((mask & ACTION_CHANGE_PROPERTY) == ACTION_CHANGE_PROPERTY) {
+				if (comma)
+					sb.append(',');
+				sb.append(CHANGE_PROPERTY);
+				comma = true;
+			}
+			if ((mask & ACTION_GET_CREDENTIAL) == ACTION_GET_CREDENTIAL) {
+				if (comma)
+					sb.append(',');
+				sb.append(GET_CREDENTIAL);
+			}
+			actions = result = sb.toString();
+		}
+		return result;
+	}
+
+	/**
+	 * Returns a new <code>PermissionCollection</code> object for storing
+	 * <code>UserAdminPermission</code> objects.
+	 * 
+	 * @return a new <code>PermissionCollection</code> object suitable for
+	 *         storing <code>UserAdminPermission</code> objects.
+	 */
+	public PermissionCollection newPermissionCollection() {
+		return new UserAdminPermissionCollection();
+	}
+
+	/**
+	 * Checks two <code>UserAdminPermission</code> objects for equality. Checks
+	 * that <code>obj</code> is a <code>UserAdminPermission</code>, and has the
+	 * same name and actions as this object.
+	 * 
+	 * @param obj the object to be compared for equality with this object.
+	 * 
+	 * @return <code>true</code> if <code>obj</code> is a
+	 *         <code>UserAdminPermission</code> object, and has the same name
+	 *         and actions as this <code>UserAdminPermission</code> object.
+	 */
+	public boolean equals(Object obj) {
+		if (obj == this) {
+			return true;
+		}
+		if (!(obj instanceof UserAdminPermission)) {
+			return false;
+		}
+
+		UserAdminPermission uap = (UserAdminPermission) obj;
+
+		return (getActionsMask() == uap.getActionsMask())
+				&& getName().equals(uap.getName());
+	}
+
+	/**
+	 * Returns the hash code value for this object.
+	 * 
+	 * @return A hash code value for this object.
+	 */
+	public int hashCode() {
+		int h = 31 * 17 + getName().hashCode();
+		h = 31 * h + getActions().hashCode();
+		return h;
+	}
+
+	/**
+	 * writeObject is called to save the state of this object to a stream. The
+	 * actions are serialized, and the superclass takes care of the name.
+	 */
+	private synchronized void writeObject(java.io.ObjectOutputStream s)
+			throws IOException {
+		// Write out the actions. The superclass takes care of the name
+		// call getActions to make sure actions field is initialized
+		if (actions == null)
+			getActions();
+		s.defaultWriteObject();
+	}
+
+	/*
+	 * Restores this object from a stream (i.e., deserializes it).
+	 */
+	private synchronized void readObject(java.io.ObjectInputStream s)
+			throws IOException, ClassNotFoundException {
+		// Read in the action, then initialize the rest
+		s.defaultReadObject();
+		setTransients(parseActions(actions));
+	}
+
+	/**
+	 * Returns a string describing this <code>UserAdminPermission</code> object.
+	 * This string must be in <code>PermissionInfo</code> encoded format.
+	 * 
+	 * @return The <code>PermissionInfo</code> encoded string for this
+	 *         <code>UserAdminPermission</code> object.
+	 * @see "<code>org.osgi.service.permissionadmin.PermissionInfo.getEncoded</code>"
+	 */
+	public String toString() {
+		StringBuffer sb = new StringBuffer();
+		sb.append('(');
+		sb.append(getClass().getName());
+		sb.append(" \"");
+		sb.append(getName());
+		String a = getActions();
+		if (a.length() > 0) {
+			sb.append("\" \"");
+			sb.append(a);
+		}
+		sb.append("\")");
+		return sb.toString();
+	}
+}
+
+/**
+ * A <code>UserAdminPermissionCollection</code> stores a set of
+ * <code>UserAdminPermission</code> permissions.
+ */
+
+final class UserAdminPermissionCollection extends PermissionCollection {
+	static final long		serialVersionUID	= -7222111885230120581L;
+	/**
+	 * Table of permissions.
+	 * 
+	 * @serial
+	 * @GuardedBy this
+	 */
+	private final Hashtable	permissions;
+	/**
+	 * Boolean saying if "*" is in the collection.
+	 * 
+	 * @serial
+	 * @GuardedBy this
+	 */
+	private boolean			all_allowed;
+
+	/**
+	 * Creates an empty <code>UserAdminPermissionCollection</code> object.
+	 */
+	public UserAdminPermissionCollection() {
+		permissions = new Hashtable();
+		all_allowed = false;
+	}
+
+	/**
+	 * Adds the given permission to this
+	 * <code>UserAdminPermissionCollection</code>. The key for the hash is the
+	 * name.
+	 * 
+	 * @param permission the <code>Permission</code> object to add.
+	 * 
+	 * @throws IllegalArgumentException If the given permission is not a
+	 *         <code>UserAdminPermission</code>
+	 * @throws SecurityException If this
+	 *         <code>UserAdminPermissionCollection</code> object has been marked
+	 *         readonly
+	 */
+	public void add(Permission permission) {
+		if (!(permission instanceof UserAdminPermission))
+			throw new IllegalArgumentException("Invalid permission: "
+					+ permission);
+		if (isReadOnly()) {
+			throw new SecurityException("Attempt to add a Permission to a "
+					+ "readonly PermissionCollection");
+		}
+		final UserAdminPermission uap = (UserAdminPermission) permission;
+		final String name = uap.getName();
+		synchronized (this) {
+			final UserAdminPermission existing = (UserAdminPermission) permissions
+					.get(name);
+			if (existing != null) {
+				int oldMask = existing.getActionsMask();
+				int newMask = uap.getActionsMask();
+				if (oldMask != newMask) {
+					permissions.put(name, new UserAdminPermission(name, oldMask
+							| newMask));
+				}
+			}
+			else {
+				permissions.put(name, uap);
+			}
+			if (!all_allowed) {
+				if (name.equals("*")) {
+					all_allowed = true;
+				}
+			}
+		}
+	}
+
+	/**
+	 * Checks to see if this <code>PermissionCollection</code> implies the given
+	 * permission.
+	 * 
+	 * @param permission the <code>Permission</code> object to check against
+	 * 
+	 * @return true if the given permission is implied by this
+	 *         <code>PermissionCollection</code>, false otherwise.
+	 */
+	public boolean implies(Permission permission) {
+		if (!(permission instanceof UserAdminPermission)) {
+			return false;
+		}
+		final UserAdminPermission requested = (UserAdminPermission) permission;
+		String name = requested.getName();
+		final int desired = requested.getActionsMask();
+		UserAdminPermission x;
+		int effective = 0;
+		synchronized (this) {
+			// Short circuit if the "*" Permission was added.
+			// desired can only be ACTION_NONE when name is "admin".
+			if (all_allowed && (desired != UserAdminPermission.ACTION_NONE)) {
+				x = (UserAdminPermission) permissions.get("*");
+				if (x != null) {
+					effective |= x.getActionsMask();
+					if ((effective & desired) == desired) {
+						return true;
+					}
+				}
+			}
+			// strategy:
+			// Check for full match first. Then work our way up the
+			// name looking for matches on a.b.*
+
+			x = (UserAdminPermission) permissions.get(name);
+		}
+		if (x != null) {
+			// we have a direct hit!
+			effective |= x.getActionsMask();
+			if ((effective & desired) == desired) {
+				return true;
+			}
+		}
+		// work our way up the tree...
+		int last;
+		int offset = name.length() - 1;
+		while ((last = name.lastIndexOf(".", offset)) != -1) {
+			name = name.substring(0, last + 1) + "*";
+			synchronized (this) {
+				x = (UserAdminPermission) permissions.get(name);
+			}
+			if (x != null) {
+				effective |= x.getActionsMask();
+				if ((effective & desired) == desired) {
+					return true;
+				}
+			}
+			offset = last - 1;
+		}
+		// we don't have to check for "*" as it was already checked
+		// at the top (all_allowed), so we just return false
+		return false;
+	}
+
+	/**
+	 * Returns an enumeration of all the <code>UserAdminPermission</code>
+	 * objects in the container.
+	 * 
+	 * @return an enumeration of all the <code>UserAdminPermission</code>
+	 *         objects.
+	 */
+	public Enumeration elements() {
+		return permissions.elements();
+	}
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/useradmin/package.html b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/useradmin/package.html
new file mode 100644
index 0000000..c8c223d
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/useradmin/package.html
@@ -0,0 +1,10 @@
+<!-- $Revision: 6204 $ -->
+<BODY>
+<p>User Admin Package Version 1.1.
+<p>Bundles wishing to use this package must list the package
+in the Import-Package header of the bundle's manifest.
+For example:
+<pre>
+Import-Package: org.osgi.service.useradmin; version=&quot;[1.1,2.0)&quot;
+</pre>
+</BODY>
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/useradmin/packageinfo b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/useradmin/packageinfo
new file mode 100644
index 0000000..3987f9c
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/useradmin/packageinfo
@@ -0,0 +1 @@
+version 1.1
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/BasicEnvelope.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/BasicEnvelope.java
new file mode 100644
index 0000000..49df68a
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/BasicEnvelope.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) OSGi Alliance (2002, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.wireadmin;
+
+/**
+ * <code>BasicEnvelope</code> is an implementation of the {@link Envelope}
+ * interface
+ * 
+ * @version $Revision: 5673 $
+ */
+public class BasicEnvelope implements Envelope {
+	Object	value;
+	Object	identification;
+	String	scope;
+
+	/**
+	 * Constructor.
+	 * 
+	 * @param value Content of this envelope, may be <code>null</code>.
+	 * @param identification Identifying object for this <code>Envelope</code>
+	 *        object, must not be <code>null</code>
+	 * @param scope Scope name for this object, must not be <code>null</code>
+	 * @see Envelope
+	 */
+	public BasicEnvelope(Object value, Object identification, String scope) {
+		this.value = value;
+		this.identification = identification;
+		this.scope = scope;
+	}
+
+	/**
+	 * @see org.osgi.service.wireadmin.Envelope#getValue()
+	 */
+	public Object getValue() {
+		return value;
+	}
+
+	/**
+	 * @see org.osgi.service.wireadmin.Envelope#getIdentification()
+	 */
+	public Object getIdentification() {
+		return identification;
+	}
+
+	/**
+	 * @see org.osgi.service.wireadmin.Envelope#getScope()
+	 */
+	public String getScope() {
+		return scope;
+	}
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/Consumer.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/Consumer.java
new file mode 100644
index 0000000..cef1c1c
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/Consumer.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright (c) OSGi Alliance (2002, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.wireadmin;
+
+/**
+ * Data Consumer, a service that can receive udpated values from
+ * {@link Producer} services.
+ * 
+ * <p>
+ * Service objects registered under the <code>Consumer</code> interface are
+ * expected to consume values from a Producer service via a <code>Wire</code>
+ * object. A Consumer service may poll the Producer service by calling the
+ * {@link Wire#poll} method. The Consumer service will also receive an updated
+ * value when called at it's {@link #updated} method. The Producer service
+ * should have coerced the value to be an instance of one of the types specified
+ * by the {@link Wire#getFlavors} method, or one of their subclasses.
+ * 
+ * <p>
+ * Consumer service objects must register with a <code>service.pid</code> and a
+ * {@link WireConstants#WIREADMIN_CONSUMER_FLAVORS} property. It is recommended
+ * that Consumer service objects also register with a
+ * <code>service.description</code> property.
+ * 
+ * <p>
+ * If an <code>Exception</code> is thrown by any of the <code>Consumer</code>
+ * methods, a <code>WireAdminEvent</code> of type
+ * {@link WireAdminEvent#CONSUMER_EXCEPTION} is broadcast by the Wire Admin
+ * service.
+ * 
+ * <p>
+ * Security Considerations - Data consuming bundles will require
+ * <code>ServicePermission[Consumer,REGISTER]</code>. In general, only the Wire
+ * Admin service bundle should have this permission. Thus only the Wire Admin
+ * service may directly call a Consumer service. Care must be taken in the
+ * sharing of <code>Wire</code> objects with other bundles.
+ * <p>
+ * Consumer services must be registered with their scope when they can receive
+ * different types of objects from the Producer service. The Consumer service
+ * should have <code>WirePermission</code> for each of these scope names.
+ * 
+ * @version $Revision: 5673 $
+ */
+public interface Consumer {
+	/**
+	 * Update the value. This Consumer service is called by the <code>Wire</code>
+	 * object with an updated value from the Producer service.
+	 * 
+	 * <p>
+	 * Note: This method may be called by a <code>Wire</code> object prior to this
+	 * object being notified that it is connected to that <code>Wire</code> object
+	 * (via the {@link #producersConnected} method).
+	 * <p>
+	 * When the Consumer service can receive <code>Envelope</code> objects, it
+	 * must have registered all scope names together with the service object,
+	 * and each of those names must be permitted by the bundle's
+	 * <code>WirePermission</code>. If an <code>Envelope</code> object is delivered
+	 * with the <code>updated</code> method, then the Consumer service should
+	 * assume that the security check has been performed.
+	 * 
+	 * @param wire The <code>Wire</code> object which is delivering the updated
+	 *        value.
+	 * @param value The updated value. The value should be an instance of one of
+	 *        the types specified by the {@link Wire#getFlavors} method.
+	 */
+	public void updated(Wire wire, Object value);
+
+	/**
+	 * Update the list of <code>Wire</code> objects to which this Consumer service
+	 * is connected.
+	 * 
+	 * <p>
+	 * This method is called when the Consumer service is first registered and
+	 * subsequently whenever a <code>Wire</code> associated with this Consumer
+	 * service becomes connected, is modified or becomes disconnected.
+	 * 
+	 * <p>
+	 * The Wire Admin service must call this method asynchronously. This implies
+	 * that implementors of Consumer can be assured that the callback will not
+	 * take place during registration when they execute the registration in a
+	 * synchronized method.
+	 * 
+	 * @param wires An array of the current and complete list of <code>Wire</code>
+	 *        objects to which this Consumer service is connected. May be
+	 *        <code>null</code> if the Consumer service is not currently connected
+	 *        to any <code>Wire</code> objects.
+	 */
+	public void producersConnected(Wire[] wires);
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/Envelope.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/Envelope.java
new file mode 100644
index 0000000..5f57638
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/Envelope.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) OSGi Alliance (2002, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.wireadmin;
+
+/**
+ * Identifies a contained value.
+ * 
+ * An <code>Envelope</code> object combines a status value, an identification
+ * object and a scope name. The <code>Envelope</code> object allows the use of
+ * standard Java types when a Producer service can produce more than one kind of
+ * object. The <code>Envelope</code> object allows the Consumer service to
+ * recognize the kind of object that is received. For example, a door lock could
+ * be represented by a <code>Boolean</code> object. If the <code>Producer</code>
+ * service would send such a <code>Boolean</code> object, then the Consumer
+ * service would not know what door the <code>Boolean</code> object represented.
+ * The <code>Envelope</code> object contains an identification object so the
+ * Consumer service can discriminate between different kinds of values. The
+ * identification object may be a simple <code>String</code> object, but it can
+ * also be a domain specific object that is mutually agreed by the Producer and
+ * the Consumer service. This object can then contain relevant information that
+ * makes the identification easier.
+ * <p>
+ * The scope name of the envelope is used for security. The Wire object must
+ * verify that any <code>Envelope</code> object send through the <code>update</code>
+ * method or coming from the <code>poll</code> method has a scope name that
+ * matches the permissions of both the Producer service and the Consumer service
+ * involved. The wireadmin package also contains a class <code>BasicEnvelope</code>
+ * that implements the methods of this interface.
+ * 
+ * @see WirePermission
+ * @see BasicEnvelope
+ * 
+ * @version $Revision: 5673 $
+ */
+public interface Envelope {
+	/**
+	 * Return the value associated with this <code>Envelope</code> object.
+	 * 
+	 * @return the value of the status item, or <code>null</code> when no item is
+	 *         associated with this object.
+	 */
+	public Object getValue();
+
+	/**
+	 * Return the identification of this <code>Envelope</code> object.
+	 * 
+	 * An identification may be of any Java type. The type must be mutually
+	 * agreed between the Consumer and Producer services.
+	 * 
+	 * @return an object which identifies the status item in the address space
+	 *         of the composite producer, must not be null.
+	 */
+	public Object getIdentification();
+
+	/**
+	 * Return the scope name of this <code>Envelope</code> object.
+	 * 
+	 * Scope names are used to restrict the communication between the Producer
+	 * and Consumer services. Only <code>Envelopes</code> objects with a scope
+	 * name that is permitted for the Producer and the Consumer services must be
+	 * passed through a <code>Wire</code> object.
+	 * 
+	 * @return the security scope for the status item, must not be null.
+	 */
+	public String getScope();
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/Producer.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/Producer.java
new file mode 100644
index 0000000..faf6dfd
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/Producer.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright (c) OSGi Alliance (2002, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.wireadmin;
+
+/**
+ * Data Producer, a service that can generate values to be used by
+ * {@link Consumer} services.
+ * 
+ * <p>
+ * Service objects registered under the Producer interface are expected to
+ * produce values (internally generated or from external sensors). The value can
+ * be of different types. When delivering a value to a <code>Wire</code> object,
+ * the Producer service should coerce the value to be an instance of one of the
+ * types specified by {@link Wire#getFlavors}. The classes are specified in
+ * order of preference.
+ * 
+ * <p>
+ * When the data represented by the Producer object changes, this object should
+ * send the updated value by calling the <code>update</code> method on each of
+ * <code>Wire</code> objects passed in the most recent call to this object's
+ * {@link #consumersConnected} method. These <code>Wire</code> objects will pass
+ * the value on to the associated <code>Consumer</code> service object.
+ * 
+ * <p>
+ * The Producer service may use the information in the <code>Wire</code> object's
+ * properties to schedule the delivery of values to the <code>Wire</code> object.
+ * 
+ * <p>
+ * Producer service objects must register with a <code>service.pid</code> and a
+ * {@link WireConstants#WIREADMIN_PRODUCER_FLAVORS} property. It is recommended
+ * that a Producer service object also registers with a
+ * <code>service.description</code> property. Producer service objects must
+ * register with a {@link WireConstants#WIREADMIN_PRODUCER_FILTERS} property if
+ * the Producer service will be performing filtering instead of the
+ * <code>Wire</code> object.
+ * 
+ * <p>
+ * If an exception is thrown by a Producer object method, a
+ * <code>WireAdminEvent</code> of type {@link WireAdminEvent#PRODUCER_EXCEPTION}
+ * is broadcast by the Wire Admin service.
+ * 
+ * <p>
+ * Security Considerations. Data producing bundles will require
+ * <code>ServicePermission[Producer,REGISTER]</code> to register a Producer
+ * service. In general, only the Wire Admin service should have
+ * <code>ServicePermission[Producer,GET]</code>. Thus only the Wire Admin service
+ * may directly call a Producer service. Care must be taken in the sharing of
+ * <code>Wire</code> objects with other bundles.
+ * <p>
+ * Producer services must be registered with scope names when they can send
+ * different types of objects (composite) to the Consumer service. The Producer
+ * service should have <code>WirePermission</code> for each of these scope names.
+ * 
+ * @version $Revision: 5673 $
+ */
+public interface Producer {
+	/**
+	 * Return the current value of this <code>Producer</code> object.
+	 * 
+	 * <p>
+	 * This method is called by a <code>Wire</code> object in response to the
+	 * Consumer service calling the <code>Wire</code> object's <code>poll</code>
+	 * method. The Producer should coerce the value to be an instance of one of
+	 * the types specified by {@link Wire#getFlavors}. The types are specified
+	 * in order of of preference. The returned value should be as new or newer
+	 * than the last value furnished by this object.
+	 * 
+	 * <p>
+	 * Note: This method may be called by a <code>Wire</code> object prior to this
+	 * object being notified that it is connected to that <code>Wire</code> object
+	 * (via the {@link #consumersConnected} method).
+	 * <p>
+	 * If the Producer service returns an <code>Envelope</code> object that has an
+	 * unpermitted scope name, then the Wire object must ignore (or remove) the
+	 * transfer.
+	 * <p>
+	 * If the <code>Wire</code> object has a scope set, the return value must be
+	 * an array of <code>Envelope</code> objects (<code>Envelope[]</code>). The
+	 * <code>Wire</code> object must have removed any <code>Envelope</code> objects
+	 * that have a scope name that is not in the Wire object's scope.
+	 * 
+	 * @param wire The <code>Wire</code> object which is polling this service.
+	 * @return The current value of the Producer service or <code>null</code> if
+	 *         the value cannot be coerced into a compatible type. Or an array
+	 *         of <code>Envelope</code> objects.
+	 */
+	public Object polled(Wire wire);
+
+	/**
+	 * Update the list of <code>Wire</code> objects to which this
+	 * <code>Producer</code> object is connected.
+	 * 
+	 * <p>
+	 * This method is called when the Producer service is first registered and
+	 * subsequently whenever a <code>Wire</code> associated with this Producer
+	 * becomes connected, is modified or becomes disconnected.
+	 * 
+	 * <p>
+	 * The Wire Admin service must call this method asynchronously. This implies
+	 * that implementors of a Producer service can be assured that the callback
+	 * will not take place during registration when they execute the
+	 * registration in a synchronized method.
+	 * 
+	 * @param wires An array of the current and complete list of <code>Wire</code>
+	 *        objects to which this Producer service is connected. May be
+	 *        <code>null</code> if the Producer is not currently connected to any
+	 *        <code>Wire</code> objects.
+	 */
+	public void consumersConnected(Wire[] wires);
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/Wire.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/Wire.java
new file mode 100644
index 0000000..9e0c1a9
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/Wire.java
@@ -0,0 +1,268 @@
+/*
+ * Copyright (c) OSGi Alliance (2002, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.wireadmin;
+
+import java.util.Dictionary;
+
+/**
+ * A connection between a Producer service and a Consumer service.
+ * 
+ * <p>
+ * A <code>Wire</code> object connects a Producer service to a Consumer service.
+ * Both the Producer and Consumer services are identified by their unique
+ * <code>service.pid</code> values. The Producer and Consumer services may
+ * communicate with each other via <code>Wire</code> objects that connect them.
+ * The Producer service may send updated values to the Consumer service by
+ * calling the {@link #update} method. The Consumer service may request an
+ * updated value from the Producer service by calling the {@link #poll} method.
+ * 
+ * <p>
+ * A Producer service and a Consumer service may be connected through multiple
+ * <code>Wire</code> objects.
+ * 
+ * <p>
+ * Security Considerations. <code>Wire</code> objects are available to Producer
+ * and Consumer services connected to a given <code>Wire</code> object and to
+ * bundles which can access the <code>WireAdmin</code> service. A bundle must have
+ * <code>ServicePermission[WireAdmin,GET]</code> to get the <code>WireAdmin</code>
+ * service to access all <code>Wire</code> objects. A bundle registering a
+ * Producer service or a Consumer service must have the appropriate
+ * <code>ServicePermission[Consumer|Producer,REGISTER]</code> to register the
+ * service and will be passed <code>Wire</code> objects when the service object's
+ * <code>consumersConnected</code> or <code>producersConnected</code> method is
+ * called.
+ * 
+ * <p>
+ * Scope. Each Wire object can have a scope set with the <code>setScope</code>
+ * method. This method should be called by a Consumer service when it assumes a
+ * Producer service that is composite (supports multiple information items). The
+ * names in the scope must be verified by the <code>Wire</code> object before it
+ * is used in communication. The semantics of the names depend on the Producer
+ * service and must not be interpreted by the Wire Admin service.
+ * 
+ * @version $Revision: 5673 $
+ */
+public interface Wire {
+	/**
+	 * Return the state of this <code>Wire</code> object.
+	 * 
+	 * <p>
+	 * A connected <code>Wire</code> must always be disconnected before becoming
+	 * invalid.
+	 * 
+	 * @return <code>false</code> if this <code>Wire</code> object is invalid
+	 *         because it has been deleted via {@link WireAdmin#deleteWire};
+	 *         <code>true</code> otherwise.
+	 */
+	public boolean isValid();
+
+	/**
+	 * Return the connection state of this <code>Wire</code> object.
+	 * 
+	 * <p>
+	 * A <code>Wire</code> is connected after the Wire Admin service receives
+	 * notification that the Producer service and the Consumer service for this
+	 * <code>Wire</code> object are both registered. This method will return
+	 * <code>true</code> prior to notifying the Producer and Consumer services via
+	 * calls to their respective <code>consumersConnected</code> and
+	 * <code>producersConnected</code> methods.
+	 * <p>
+	 * A <code>WireAdminEvent</code> of type {@link WireAdminEvent#WIRE_CONNECTED}
+	 * must be broadcast by the Wire Admin service when the <code>Wire</code>
+	 * becomes connected.
+	 * 
+	 * <p>
+	 * A <code>Wire</code> object is disconnected when either the Consumer or
+	 * Producer service is unregistered or the <code>Wire</code> object is
+	 * deleted.
+	 * <p>
+	 * A <code>WireAdminEvent</code> of type
+	 * {@link WireAdminEvent#WIRE_DISCONNECTED} must be broadcast by the Wire
+	 * Admin service when the <code>Wire</code> becomes disconnected.
+	 * 
+	 * @return <code>true</code> if both the Producer and Consumer for this
+	 *         <code>Wire</code> object are connected to the <code>Wire</code>
+	 *         object; <code>false</code> otherwise.
+	 */
+	public boolean isConnected();
+
+	/**
+	 * Return the list of data types understood by the Consumer service
+	 * connected to this <code>Wire</code> object. Note that subclasses of the
+	 * classes in this list are acceptable data types as well.
+	 * 
+	 * <p>
+	 * The list is the value of the
+	 * {@link WireConstants#WIREADMIN_CONSUMER_FLAVORS} service property of the
+	 * Consumer service object connected to this object. If no such property was
+	 * registered or the type of the property value is not <code>Class[]</code>,
+	 * this method must return <code>null</code>.
+	 * 
+	 * @return An array containing the list of classes understood by the
+	 *         Consumer service or <code>null</code> if the <code>Wire</code> is not
+	 *         connected, or the consumer did not register a
+	 *         {@link WireConstants#WIREADMIN_CONSUMER_FLAVORS} property or the
+	 *         value of the property is not of type <code>Class[]</code>.
+	 */
+	public Class[] getFlavors();
+
+	/**
+	 * Update the value.
+	 * 
+	 * <p>
+	 * This methods is called by the Producer service to notify the Consumer
+	 * service connected to this <code>Wire</code> object of an updated value.
+	 * <p>
+	 * If the properties of this <code>Wire</code> object contain a
+	 * {@link WireConstants#WIREADMIN_FILTER} property, then filtering is
+	 * performed. If the Producer service connected to this <code>Wire</code>
+	 * object was registered with the service property
+	 * {@link WireConstants#WIREADMIN_PRODUCER_FILTERS}, the Producer service
+	 * will perform the filtering according to the rules specified for the
+	 * filter. Otherwise, this <code>Wire</code> object will perform the filtering
+	 * of the value.
+	 * <p>
+	 * If no filtering is done, or the filter indicates the updated value should
+	 * be delivered to the Consumer service, then this <code>Wire</code> object
+	 * must call the {@link Consumer#updated} method with the updated value. If
+	 * this <code>Wire</code> object is not connected, then the Consumer service
+	 * must not be called and the value is ignored.
+	 * <p>
+	 * If the value is an <code>Envelope</code> object, and the scope name is not
+	 * permitted, then the <code>Wire</code> object must ignore this call and not
+	 * transfer the object to the Consumer service.
+	 * 
+	 * <p>
+	 * A <code>WireAdminEvent</code> of type {@link WireAdminEvent#WIRE_TRACE}
+	 * must be broadcast by the Wire Admin service after the Consumer service
+	 * has been successfully called.
+	 * 
+	 * @param value The updated value. The value should be an instance of one of
+	 *        the types returned by {@link #getFlavors}.
+	 * @see WireConstants#WIREADMIN_FILTER
+	 */
+	public void update(Object value);
+
+	/**
+	 * Poll for an updated value.
+	 * 
+	 * <p>
+	 * This methods is normally called by the Consumer service to request an
+	 * updated value from the Producer service connected to this <code>Wire</code>
+	 * object. This <code>Wire</code> object will call the {@link Producer#polled}
+	 * method to obtain an updated value. If this <code>Wire</code> object is not
+	 * connected, then the Producer service must not be called.
+	 * <p>
+	 * 
+	 * If this <code>Wire</code> object has a scope, then this method must return
+	 * an array of <code>Envelope</code> objects. The objects returned must match
+	 * the scope of this object. The <code>Wire</code> object must remove all
+	 * <code>Envelope</code> objects with a scope name that is not in the
+	 * <code>Wire</code> object's scope. Thus, the list of objects returned must
+	 * only contain <code>Envelope</code> objects with a permitted scope name. If
+	 * the array becomes empty, <code>null</code> must be returned.
+	 * 
+	 * <p>
+	 * A <code>WireAdminEvent</code> of type {@link WireAdminEvent#WIRE_TRACE}
+	 * must be broadcast by the Wire Admin service after the Producer service
+	 * has been successfully called.
+	 * 
+	 * @return A value whose type should be one of the types returned by
+	 *         {@link #getFlavors},<code>Envelope[]</code>, or <code>null</code>
+	 *         if the <code>Wire</code> object is not connected, the Producer
+	 *         service threw an exception, or the Producer service returned a
+	 *         value which is not an instance of one of the types returned by
+	 *         {@link #getFlavors}.
+	 */
+	public Object poll();
+
+	/**
+	 * Return the last value sent through this <code>Wire</code> object.
+	 * 
+	 * <p>
+	 * The returned value is the most recent, valid value passed to the
+	 * {@link #update} method or returned by the {@link #poll} method of this
+	 * object. If filtering is performed by this <code>Wire</code> object, this
+	 * methods returns the last value provided by the Producer service. This
+	 * value may be an <code>Envelope[]</code> when the Producer service uses
+	 * scoping. If the return value is an Envelope object (or array), it must be
+	 * verified that the Consumer service has the proper WirePermission to see
+	 * it.
+	 * 
+	 * @return The last value passed though this <code>Wire</code> object or
+	 *         <code>null</code> if no valid values have been passed or the
+	 *         Consumer service has no permission.
+	 */
+	public Object getLastValue();
+
+	/**
+	 * Return the wire properties for this <code>Wire</code> object.
+	 * 
+	 * @return The properties for this <code>Wire</code> object. The returned
+	 *         <code>Dictionary</code> must be read only.
+	 */
+	public Dictionary getProperties();
+
+	/**
+	 * Return the calculated scope of this <code>Wire</code> object.
+	 * 
+	 * The purpose of the <code>Wire</code> object's scope is to allow a Producer
+	 * and/or Consumer service to produce/consume different types over a single
+	 * <code>Wire</code> object (this was deemed necessary for efficiency
+	 * reasons). Both the Consumer service and the Producer service must set an
+	 * array of scope names (their scope) with the service registration property
+	 * <code>WIREADMIN_PRODUCER_SCOPE</code>, or
+	 * <code>WIREADMIN_CONSUMER_SCOPE</code> when they can produce multiple types.
+	 * If a Producer service can produce different types, it should set this
+	 * property to the array of scope names it can produce, the Consumer service
+	 * must set the array of scope names it can consume. The scope of a
+	 * <code>Wire</code> object is defined as the intersection of permitted scope
+	 * names of the Producer service and Consumer service.
+	 * <p>
+	 * If neither the Consumer, or the Producer service registers scope names
+	 * with its service registration, then the <code>Wire</code> object's scope
+	 * must be <code>null</code>.
+	 * <p>
+	 * The <code>Wire</code> object's scope must not change when a Producer or
+	 * Consumer services modifies its scope.
+	 * <p>
+	 * A scope name is permitted for a Producer service when the registering
+	 * bundle has <code>WirePermission[name,PRODUCE]</code>, and for a Consumer
+	 * service when the registering bundle has <code>WirePermission[name,CONSUME]</code>.
+	 * <p>
+	 * If either Consumer service or Producer service has not set a
+	 * <code>WIREADMIN_*_SCOPE</code> property, then the returned value must be
+	 * <code>null</code>.
+	 * <p>
+	 * If the scope is set, the <code>Wire</code> object must enforce the scope
+	 * names when <code>Envelope</code> objects are used as a parameter to update
+	 * or returned from the <code>poll</code> method. The <code>Wire</code> object
+	 * must then remove all <code>Envelope</code> objects with a scope name that
+	 * is not permitted.
+	 * 
+	 * @return A list of permitted scope names or null if the Produce or
+	 *         Consumer service has set no scope names.
+	 */
+	public String[] getScope();
+
+	/**
+	 * Return true if the given name is in this <code>Wire</code> object's scope.
+	 * 
+	 * @param name The scope name
+	 * @return true if the name is listed in the permitted scope names
+	 */
+	public boolean hasScope(String name);
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/WireAdmin.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/WireAdmin.java
new file mode 100644
index 0000000..578ef4f
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/WireAdmin.java
@@ -0,0 +1,168 @@
+/*
+ * Copyright (c) OSGi Alliance (2002, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.wireadmin;
+
+import java.util.Dictionary;
+
+import org.osgi.framework.InvalidSyntaxException;
+
+/**
+ * Wire Administration service.
+ * 
+ * <p>
+ * This service can be used to create <code>Wire</code> objects connecting a
+ * Producer service and a Consumer service. <code>Wire</code> objects also have
+ * wire properties that may be specified when a <code>Wire</code> object is
+ * created. The Producer and Consumer services may use the <code>Wire</code>
+ * object's properties to manage or control their interaction. The use of
+ * <code>Wire</code> object's properties by a Producer or Consumer services is
+ * optional.
+ * 
+ * <p>
+ * Security Considerations. A bundle must have
+ * <code>ServicePermission[WireAdmin,GET]</code> to get the Wire Admin service to
+ * create, modify, find, and delete <code>Wire</code> objects.
+ * 
+ * @version $Revision: 5673 $
+ */
+public interface WireAdmin {
+	/**
+	 * Create a new <code>Wire</code> object that connects a Producer service to a
+	 * Consumer service.
+	 * 
+	 * The Producer service and Consumer service do not have to be registered
+	 * when the <code>Wire</code> object is created.
+	 * 
+	 * <p>
+	 * The <code>Wire</code> configuration data must be persistently stored. All
+	 * <code>Wire</code> connections are reestablished when the <code>WireAdmin</code>
+	 * service is registered. A <code>Wire</code> can be permanently removed by
+	 * using the {@link #deleteWire} method.
+	 * 
+	 * <p>
+	 * The <code>Wire</code> object's properties must have case insensitive
+	 * <code>String</code> objects as keys (like the Framework). However, the case
+	 * of the key must be preserved.
+	 * 
+	 * <p>
+	 * The <code>WireAdmin</code> service must automatically add the following
+	 * <code>Wire</code> properties:
+	 * <ul>
+	 * <li>{@link WireConstants#WIREADMIN_PID} set to the value of the
+	 * <code>Wire</code> object's persistent identity (PID). This value is
+	 * generated by the Wire Admin service when a <code>Wire</code> object is
+	 * created.</li>
+	 * <li>{@link WireConstants#WIREADMIN_PRODUCER_PID} set to the value of
+	 * Producer service's PID.</li>
+	 * <li>{@link WireConstants#WIREADMIN_CONSUMER_PID} set to the value of
+	 * Consumer service's PID.</li>
+	 * </ul>
+	 * If the <code>properties</code> argument already contains any of these keys,
+	 * then the supplied values are replaced with the values assigned by the
+	 * Wire Admin service.
+	 * 
+	 * <p>
+	 * The Wire Admin service must broadcast a <code>WireAdminEvent</code> of type
+	 * {@link WireAdminEvent#WIRE_CREATED} after the new <code>Wire</code> object
+	 * becomes available from {@link #getWires}.
+	 * 
+	 * @param producerPID The <code>service.pid</code> of the Producer service to
+	 *        be connected to the <code>Wire</code> object.
+	 * @param consumerPID The <code>service.pid</code> of the Consumer service to
+	 *        be connected to the <code>Wire</code> object.
+	 * @param properties The <code>Wire</code> object's properties. This argument
+	 *        may be <code>null</code> if the caller does not wish to define any
+	 *        <code>Wire</code> object's properties.
+	 * @return The <code>Wire</code> object for this connection.
+	 * 
+	 * @throws java.lang.IllegalArgumentException If <code>properties</code>
+	 *         contains invalid wire types or case variants of the same key
+	 *         name.
+	 */
+	public Wire createWire(String producerPID, String consumerPID,
+			Dictionary properties);
+
+	/**
+	 * Delete a <code>Wire</code> object.
+	 * 
+	 * <p>
+	 * The <code>Wire</code> object representing a connection between a Producer
+	 * service and a Consumer service must be removed. The persistently stored
+	 * configuration data for the <code>Wire</code> object must destroyed. The
+	 * <code>Wire</code> object's method {@link Wire#isValid} will return
+	 * <code>false</code> after it is deleted.
+	 * 
+	 * <p>
+	 * The Wire Admin service must broadcast a <code>WireAdminEvent</code> of type
+	 * {@link WireAdminEvent#WIRE_DELETED} after the <code>Wire</code> object
+	 * becomes invalid.
+	 * 
+	 * @param wire The <code>Wire</code> object which is to be deleted.
+	 */
+	public void deleteWire(Wire wire);
+
+	/**
+	 * Update the properties of a <code>Wire</code> object.
+	 * 
+	 * The persistently stored configuration data for the <code>Wire</code> object
+	 * is updated with the new properties and then the Consumer and Producer
+	 * services will be called at the respective
+	 * {@link Consumer#producersConnected} and
+	 * {@link Producer#consumersConnected} methods.
+	 * 
+	 * <p>
+	 * The Wire Admin service must broadcast a <code>WireAdminEvent</code> of type
+	 * {@link WireAdminEvent#WIRE_UPDATED} after the updated properties are
+	 * available from the <code>Wire</code> object.
+	 * 
+	 * @param wire The <code>Wire</code> object which is to be updated.
+	 * @param properties The new <code>Wire</code> object's properties or
+	 *        <code>null</code> if no properties are required.
+	 * 
+	 * @throws java.lang.IllegalArgumentException If <code>properties</code>
+	 *         contains invalid wire types or case variants of the same key
+	 *         name.
+	 */
+	public void updateWire(Wire wire, Dictionary properties);
+
+	/**
+	 * Return the <code>Wire</code> objects that match the given <code>filter</code>.
+	 * 
+	 * <p>
+	 * The list of available <code>Wire</code> objects is matched against the
+	 * specified <code>filter</code>.<code>Wire</code> objects which match the
+	 * <code>filter</code> must be returned. These <code>Wire</code> objects are not
+	 * necessarily connected. The Wire Admin service should not return invalid
+	 * <code>Wire</code> objects, but it is possible that a <code>Wire</code> object
+	 * is deleted after it was placed in the list.
+	 * 
+	 * <p>
+	 * The filter matches against the <code>Wire</code> object's properties
+	 * including {@link WireConstants#WIREADMIN_PRODUCER_PID},
+	 * {@link WireConstants#WIREADMIN_CONSUMER_PID} and
+	 * {@link WireConstants#WIREADMIN_PID}.
+	 * 
+	 * @param filter Filter string to select <code>Wire</code> objects or
+	 *        <code>null</code> to select all <code>Wire</code> objects.
+	 * @return An array of <code>Wire</code> objects which match the
+	 *         <code>filter</code> or <code>null</code> if no <code>Wire</code>
+	 *         objects match the <code>filter</code>.
+	 * @throws org.osgi.framework.InvalidSyntaxException If the specified
+	 *         <code>filter</code> has an invalid syntax.
+	 * @see org.osgi.framework.Filter
+	 */
+	public Wire[] getWires(String filter) throws InvalidSyntaxException;
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/WireAdminEvent.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/WireAdminEvent.java
new file mode 100644
index 0000000..bba84ef
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/WireAdminEvent.java
@@ -0,0 +1,266 @@
+/*
+ * Copyright (c) OSGi Alliance (2002, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.wireadmin;
+
+import org.osgi.framework.ServiceReference;
+
+/**
+ * A Wire Admin Event.
+ * 
+ * <p>
+ * <code>WireAdminEvent</code> objects are delivered to all registered
+ * <code>WireAdminListener</code> service objects which specify an interest in the
+ * <code>WireAdminEvent</code> type. Events must be delivered in chronological
+ * order with respect to each listener. For example, a <code>WireAdminEvent</code>
+ * of type {@link #WIRE_CONNECTED} must be delivered before a
+ * <code>WireAdminEvent</code> of type {@link #WIRE_DISCONNECTED} for a particular
+ * <code>Wire</code> object.
+ * 
+ * <p>
+ * A type code is used to identify the type of event. The following event types
+ * are defined:
+ * <ul>
+ * <li>{@link #WIRE_CREATED}
+ * <li>{@link #WIRE_CONNECTED}
+ * <li>{@link #WIRE_UPDATED}
+ * <li>{@link #WIRE_TRACE}
+ * <li>{@link #WIRE_DISCONNECTED}
+ * <li>{@link #WIRE_DELETED}
+ * <li>{@link #PRODUCER_EXCEPTION}
+ * <li>{@link #CONSUMER_EXCEPTION}
+ * </ul>
+ * Additional event types may be defined in the future.
+ * 
+ * <p>
+ * Event type values must be unique and disjoint bit values. Event types must be
+ * defined as a bit in a 32 bit integer and can thus be bitwise OR'ed together.
+ * <p>
+ * Security Considerations. <code>WireAdminEvent</code> objects contain
+ * <code>Wire</code> objects. Care must be taken in the sharing of <code>Wire</code>
+ * objects with other bundles.
+ * 
+ * @see WireAdminListener
+ * 
+ * @version $Revision: 5673 $
+ */
+public class WireAdminEvent {
+	/**
+	 * The WireAdmin service which created this event.
+	 */
+	private ServiceReference	reference;
+	/**
+	 * The <code>Wire</code> object associated with this event.
+	 */
+	private Wire				wire;
+	/**
+	 * Type of this event.
+	 * 
+	 * @see #getType
+	 */
+	private int					type;
+	/**
+	 * Exception associates with this the event.
+	 */
+	private Throwable			throwable;
+	/**
+	 * A Producer service method has thrown an exception.
+	 * 
+	 * <p>
+	 * This <code>WireAdminEvent</code> type indicates that a Producer service
+	 * method has thrown an exception. The {@link WireAdminEvent#getThrowable}
+	 * method will return the exception that the Producer service method raised.
+	 * 
+	 * <p>
+	 * The value of <code>PRODUCER_EXCEPTION</code> is 0x00000001.
+	 */
+	public final static int		PRODUCER_EXCEPTION	= 0x00000001;
+	/**
+	 * A Consumer service method has thrown an exception.
+	 * 
+	 * <p>
+	 * This <code>WireAdminEvent</code> type indicates that a Consumer service
+	 * method has thrown an exception. The {@link WireAdminEvent#getThrowable}
+	 * method will return the exception that the Consumer service method raised.
+	 * 
+	 * <p>
+	 * The value of <code>CONSUMER_EXCEPTION</code> is 0x00000002.
+	 */
+	public final static int		CONSUMER_EXCEPTION	= 0x00000002;
+	/**
+	 * A <code>Wire</code> has been created.
+	 * 
+	 * <p>
+	 * This <code>WireAdminEvent</code> type that indicates that a new
+	 * <code>Wire</code> object has been created.
+	 * 
+	 * An event is broadcast when {@link WireAdmin#createWire} is called. The
+	 * {@link WireAdminEvent#getWire} method will return the <code>Wire</code>
+	 * object that has just been created.
+	 * 
+	 * <p>
+	 * The value of <code>WIRE_CREATED</code> is 0x00000004.
+	 */
+	public final static int		WIRE_CREATED		= 0x00000004;
+	/**
+	 * A <code>Wire</code> has been updated.
+	 * 
+	 * <p>
+	 * This <code>WireAdminEvent</code> type that indicates that an existing
+	 * <code>Wire</code> object has been updated with new properties.
+	 * 
+	 * An event is broadcast when {@link WireAdmin#updateWire} is called with a
+	 * valid wire. The {@link WireAdminEvent#getWire} method will return the
+	 * <code>Wire</code> object that has just been updated.
+	 * 
+	 * <p>
+	 * The value of <code>WIRE_UPDATED</code> is 0x00000008.
+	 */
+	public final static int		WIRE_UPDATED		= 0x00000008;
+	/**
+	 * A <code>Wire</code> has been deleted.
+	 * 
+	 * <p>
+	 * This <code>WireAdminEvent</code> type that indicates that an existing wire
+	 * has been deleted.
+	 * 
+	 * An event is broadcast when {@link WireAdmin#deleteWire} is called with a
+	 * valid wire. {@link WireAdminEvent#getWire} will return the <code>Wire</code>
+	 * object that has just been deleted.
+	 * 
+	 * <p>
+	 * The value of <code>WIRE_DELETED</code> is 0x00000010.
+	 */
+	public final static int		WIRE_DELETED		= 0x00000010;
+	/**
+	 * The <code>WireAdminEvent</code> type that indicates that an existing
+	 * <code>Wire</code> object has become connected.
+	 * 
+	 * The Consumer object and the Producer object that are associated with the
+	 * <code>Wire</code> object have both been registered and the <code>Wire</code>
+	 * object is connected. See {@link Wire#isConnected} for a description of
+	 * the connected state. This event may come before the
+	 * <code>producersConnected</code> and <code>consumersConnected</code> method
+	 * have returned or called to allow synchronous delivery of the events. Both
+	 * methods can cause other <code>WireAdminEvent</code> s to take place and
+	 * requiring this event to be send before these methods are returned would
+	 * mandate asynchronous delivery.
+	 * 
+	 * <p>
+	 * The value of <code>WIRE_CONNECTED</code> is 0x00000020.
+	 */
+	public final static int		WIRE_CONNECTED		= 0x00000020;
+	/**
+	 * The <code>WireAdminEvent</code> type that indicates that an existing
+	 * <code>Wire</code> object has become disconnected.
+	 * 
+	 * The Consumer object or/and Producer object is/are unregistered breaking
+	 * the connection between the two. See {@link Wire#isConnected} for a
+	 * description of the connected state.
+	 * 
+	 * <p>
+	 * The value of <code>WIRE_DISCONNECTED</code> is 0x00000040.
+	 */
+	public final static int		WIRE_DISCONNECTED	= 0x00000040;
+	/**
+	 * The <code>WireAdminEvent</code> type that indicates that a new value is
+	 * transferred over the <code>Wire</code> object.
+	 * 
+	 * This event is sent after the Consumer service has been notified by
+	 * calling the {@link Consumer#updated} method or the Consumer service
+	 * requested a new value with the {@link Wire#poll} method. This is an
+	 * advisory event meaning that when this event is received, another update
+	 * may already have occurred and this the {@link Wire#getLastValue} method
+	 * returns a newer value then the value that was communicated for this
+	 * event.
+	 * 
+	 * <p>
+	 * The value of <code>WIRE_TRACE</code> is 0x00000080.
+	 */
+	public final static int		WIRE_TRACE			= 0x00000080;
+
+	/**
+	 * Constructs a <code>WireAdminEvent</code> object from the given
+	 * <code>ServiceReference</code> object, event type, <code>Wire</code> object
+	 * and exception.
+	 * 
+	 * @param reference The <code>ServiceReference</code> object of the Wire Admin
+	 *        service that created this event.
+	 * @param type The event type. See {@link #getType}.
+	 * @param wire The <code>Wire</code> object associated with this event.
+	 * @param exception An exception associated with this event. This may be
+	 *        <code>null</code> if no exception is associated with this event.
+	 */
+	public WireAdminEvent(ServiceReference reference, int type, Wire wire,
+			Throwable exception) {
+		this.reference = reference;
+		this.wire = wire;
+		this.type = type;
+		this.throwable = exception;
+	}
+
+	/**
+	 * Return the <code>ServiceReference</code> object of the Wire Admin service
+	 * that created this event.
+	 * 
+	 * @return The <code>ServiceReference</code> object for the Wire Admin service
+	 *         that created this event.
+	 */
+	public ServiceReference getServiceReference() {
+		return reference;
+	}
+
+	/**
+	 * Return the <code>Wire</code> object associated with this event.
+	 * 
+	 * @return The <code>Wire</code> object associated with this event or
+	 *         <code>null</code> when no <code>Wire</code> object is associated with
+	 *         the event.
+	 */
+	public Wire getWire() {
+		return wire;
+	}
+
+	/**
+	 * Return the type of this event.
+	 * <p>
+	 * The type values are:
+	 * <ul>
+	 * <li>{@link #WIRE_CREATED}
+	 * <li>{@link #WIRE_CONNECTED}
+	 * <li>{@link #WIRE_UPDATED}
+	 * <li>{@link #WIRE_TRACE}
+	 * <li>{@link #WIRE_DISCONNECTED}
+	 * <li>{@link #WIRE_DELETED}
+	 * <li>{@link #PRODUCER_EXCEPTION}
+	 * <li>{@link #CONSUMER_EXCEPTION}
+	 * </ul>
+	 * 
+	 * @return The type of this event.
+	 */
+	public int getType() {
+		return type;
+	}
+
+	/**
+	 * Returns the exception associated with the event, if any.
+	 * 
+	 * @return An exception or <code>null</code> if no exception is associated
+	 *         with this event.
+	 */
+	public Throwable getThrowable() {
+		return throwable;
+	}
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/WireAdminListener.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/WireAdminListener.java
new file mode 100644
index 0000000..e741dd9
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/WireAdminListener.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) OSGi Alliance (2002, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.wireadmin;
+
+/**
+ * Listener for Wire Admin Events.
+ * 
+ * <p>
+ * <code>WireAdminListener</code> objects are registered with the Framework
+ * service registry and are notified with a <code>WireAdminEvent</code> object
+ * when an event is broadcast.
+ * <p>
+ * <code>WireAdminListener</code> objects can inspect the received
+ * <code>WireAdminEvent</code> object to determine its type, the <code>Wire</code>
+ * object with which it is associated, and the Wire Admin service that
+ * broadcasts the event.
+ * 
+ * <p>
+ * <code>WireAdminListener</code> objects must be registered with a service
+ * property {@link WireConstants#WIREADMIN_EVENTS} whose value is a bitwise OR
+ * of all the event types the listener is interested in receiving.
+ * <p>
+ * For example:
+ * 
+ * <pre>
+ * Integer mask = new Integer(WIRE_TRACE | WIRE_CONNECTED | WIRE_DISCONNECTED);
+ * Hashtable ht = new Hashtable();
+ * ht.put(WIREADMIN_EVENTS, mask);
+ * context.registerService(WireAdminListener.class.getName(), this, ht);
+ * </pre>
+ * 
+ * If a <code>WireAdminListener</code> object is registered without a service
+ * property {@link WireConstants#WIREADMIN_EVENTS}, then the
+ * <code>WireAdminListener</code> will receive no events.
+ * 
+ * <p>
+ * Security Considerations. Bundles wishing to monitor <code>WireAdminEvent</code>
+ * objects will require <code>ServicePermission[WireAdminListener,REGISTER]</code>
+ * to register a <code>WireAdminListener</code> service. Since
+ * <code>WireAdminEvent</code> objects contain <code>Wire</code> objects, care must
+ * be taken in assigning permission to register a <code>WireAdminListener</code>
+ * service.
+ * 
+ * @see WireAdminEvent
+ * 
+ * @version $Revision: 5673 $
+ */
+public interface WireAdminListener {
+	/**
+	 * Receives notification of a broadcast <code>WireAdminEvent</code> object.
+	 * 
+	 * The event object will be of an event type specified in this
+	 * <code>WireAdminListener</code> service's
+	 * {@link WireConstants#WIREADMIN_EVENTS} service property.
+	 * 
+	 * @param event The <code>WireAdminEvent</code> object.
+	 */
+	void wireAdminEvent(WireAdminEvent event);
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/WireConstants.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/WireConstants.java
new file mode 100644
index 0000000..b616a4f
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/WireConstants.java
@@ -0,0 +1,225 @@
+/*
+ * Copyright (c) OSGi Alliance (2002, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.wireadmin;
+
+/**
+ * Defines standard names for <code>Wire</code> properties, wire filter
+ * attributes, Consumer and Producer service properties.
+ * 
+ * @version $Revision: 5673 $
+ */
+public interface WireConstants {
+	/**
+	 * <code>Wire</code> property key (named <code>wireadmin.pid</code>) specifying
+	 * the persistent identity (PID) of this <code>Wire</code> object.
+	 * 
+	 * <p>
+	 * Each <code>Wire</code> object has a PID to allow unique and persistent
+	 * identification of a specific <code>Wire</code> object. The PID must be
+	 * generated by the {@link WireAdmin} service when the <code>Wire</code>
+	 * object is created.
+	 * 
+	 * <p>
+	 * This wire property is automatically set by the Wire Admin service. The
+	 * value of the property must be of type <code>String</code>.
+	 */
+	public final static String	WIREADMIN_PID					= "wireadmin.pid";
+	/**
+	 * A service registration property for a Producer service that is composite.
+	 * It contains the names of the composite Consumer services it can
+	 * inter-operate with. Inter-operability exists when any name in this array
+	 * matches any name in the array set by the Consumer service. The type of
+	 * this property must be <code>String[]</code>.
+	 */
+	public final static String	WIREADMIN_PRODUCER_COMPOSITE	= "wireadmin.producer.composite";
+	/**
+	 * A service registration property for a Consumer service that is composite.
+	 * It contains the names of the composite Producer services it can cooperate
+	 * with. Inter-operability exists when any name in this array matches any
+	 * name in the array set by the Producer service. The type of this property
+	 * must be <code>String[]</code>.
+	 */
+	public final static String	WIREADMIN_CONSUMER_COMPOSITE	= "wireadmin.consumer.composite";
+	/**
+	 * Service registration property key (named
+	 * <code>wireadmin.producer.scope</code>) specifying a list of names that may
+	 * be used to define the scope of this <code>Wire</code> object. A Producer
+	 * service should set this service property when it can produce more than
+	 * one kind of value. This property is only used during registration,
+	 * modifying the property must not have any effect of the <code>Wire</code>
+	 * object's scope. Each name in the given list mist have
+	 * <code>WirePermission[name,PRODUCE]</code> or else is ignored. The type of
+	 * this service registration property must be <code>String[]</code>.
+	 * 
+	 * @see Wire#getScope
+	 * @see #WIREADMIN_CONSUMER_SCOPE
+	 */
+	public final static String	WIREADMIN_PRODUCER_SCOPE		= "wireadmin.producer.scope";
+	/**
+	 * Service registration property key (named
+	 * <code>wireadmin.consumer.scope</code>) specifying a list of names that may
+	 * be used to define the scope of this <code>Wire</code> object. A
+	 * <code>Consumer</code> service should set this service property when it can
+	 * produce more than one kind of value. This property is only used during
+	 * registration, modifying the property must not have any effect of the
+	 * <code>Wire</code> object's scope. Each name in the given list mist have
+	 * <code>WirePermission[name,CONSUME]</code> or else is ignored. The type of this
+	 * service registration property must be <code>String[]</code>.
+	 * 
+	 * @see Wire#getScope
+	 * @see #WIREADMIN_PRODUCER_SCOPE
+	 */
+	public final static String	WIREADMIN_CONSUMER_SCOPE		= "wireadmin.consumer.scope";
+	/**
+	 * Matches all scope names.
+	 */
+	public final static String	WIREADMIN_SCOPE_ALL[]			= {"*"};
+	/**
+	 * <code>Wire</code> property key (named <code>wireadmin.producer.pid</code>)
+	 * specifying the <code>service.pid</code> of the associated Producer service.
+	 * 
+	 * <p>
+	 * This wire property is automatically set by the WireAdmin service. The
+	 * value of the property must be of type <code>String</code>.
+	 */
+	public final static String	WIREADMIN_PRODUCER_PID			= "wireadmin.producer.pid";
+	/**
+	 * <code>Wire</code> property key (named <code>wireadmin.consumer.pid</code>)
+	 * specifying the <code>service.pid</code> of the associated Consumer service.
+	 * 
+	 * <p>
+	 * This wire property is automatically set by the Wire Admin service. The
+	 * value of the property must be of type <code>String</code>.
+	 */
+	public final static String	WIREADMIN_CONSUMER_PID			= "wireadmin.consumer.pid";
+	/**
+	 * <code>Wire</code> property key (named <code>wireadmin.filter</code>)
+	 * specifying a filter used to control the delivery rate of data between the
+	 * Producer and the Consumer service.
+	 * 
+	 * <p>
+	 * This property should contain a filter as described in the <code>Filter</code>
+	 * class. The filter can be used to specify when an updated value from the
+	 * Producer service should be delivered to the Consumer service. In many
+	 * cases the Consumer service does not need to receive the data with the
+	 * same rate that the Producer service can generate data. This property can
+	 * be used to control the delivery rate.
+	 * <p>
+	 * The filter can use a number of pre-defined attributes that can be used to
+	 * control the delivery of new data values. If the filter produces a match
+	 * upon the wire filter attributes, the Consumer service should be notifed
+	 * of the updated data value.
+	 * <p>
+	 * If the Producer service was registered with the
+	 * {@link #WIREADMIN_PRODUCER_FILTERS} service property indicating that the
+	 * Producer service will perform the data filtering then the <code>Wire</code>
+	 * object will not perform data filtering. Otherwise, the <code>Wire</code>
+	 * object must perform basic filtering. Basic filtering includes supporting
+	 * the following standard wire filter attributes:
+	 * <ul>
+	 * <li>{@link #WIREVALUE_CURRENT}- Current value
+	 * <li>{@link #WIREVALUE_PREVIOUS}- Previous value
+	 * <li>{@link #WIREVALUE_DELTA_ABSOLUTE}- Absolute delta
+	 * <li>{@link #WIREVALUE_DELTA_RELATIVE}- Relative delta
+	 * <li>{@link #WIREVALUE_ELAPSED}- Elapsed time
+	 * </ul>
+	 * 
+	 * @see org.osgi.framework.Filter
+	 */
+	public final static String	WIREADMIN_FILTER				= "wireadmin.filter";
+	/* Wire filter attribute names. */
+	/**
+	 * <code>Wire</code> object's filter attribute (named
+	 * <code>wirevalue.current</code>) representing the current value.
+	 */
+	public final static String	WIREVALUE_CURRENT				= "wirevalue.current";
+	/**
+	 * <code>Wire</code> object's filter attribute (named
+	 * <code>wirevalue.previous</code>) representing the previous value.
+	 */
+	public final static String	WIREVALUE_PREVIOUS				= "wirevalue.previous";
+	/**
+	 * <code>Wire</code> object's filter attribute (named
+	 * <code>wirevalue.delta.absolute</code>) representing the absolute delta.
+	 * The absolute (always positive) difference between the last update and the
+	 * current value (only when numeric). This attribute must not be used when
+	 * the values are not numeric.
+	 */
+	public final static String	WIREVALUE_DELTA_ABSOLUTE		= "wirevalue.delta.absolute";
+	/**
+	 * <code>Wire</code> object's filter attribute (named
+	 * <code>wirevalue.delta.relative</code>) representing the relative delta.
+	 * The relative difference is |<code>previous</code>-<code>current</code> |/|
+	 * <code>current</code>| (only when numeric). This attribute must not be used
+	 * when the values are not numeric.
+	 */
+	public final static String	WIREVALUE_DELTA_RELATIVE		= "wirevalue.delta.relative";
+	/**
+	 * <code>Wire</code> object's filter attribute (named
+	 * <code>wirevalue.elapsed</code>) representing the elapsed time, in ms,
+	 * between this filter evaluation and the last update of the
+	 * <code>Consumer</code> service.
+	 */
+	public final static String	WIREVALUE_ELAPSED				= "wirevalue.elapsed";
+	/* Service registration property key names. */
+	/**
+	 * Service Registration property (named <code>wireadmin.producer.filters</code>).
+	 * A <code>Producer</code> service registered with this property indicates to
+	 * the Wire Admin service that the Producer service implements at least the
+	 * filtering as described for the {@link #WIREADMIN_FILTER} property. If the
+	 * Producer service is not registered with this property, the <code>Wire</code>
+	 * object must perform the basic filtering as described in
+	 * {@link #WIREADMIN_FILTER}.
+	 * 
+	 * <p>
+	 * The type of the property value is not relevant. Only its presence is
+	 * relevant.
+	 */
+	public final static String	WIREADMIN_PRODUCER_FILTERS		= "wireadmin.producer.filters";
+	/**
+	 * Service Registration property (named <code>wireadmin.consumer.flavors</code>)
+	 * specifying the list of data types understood by this Consumer service.
+	 * 
+	 * <p>
+	 * The Consumer service object must be registered with this service
+	 * property. The list must be in the order of preference with the first type
+	 * being the most preferred. The value of the property must be of type
+	 * <code>Class[]</code>.
+	 */
+	public final static String	WIREADMIN_CONSUMER_FLAVORS		= "wireadmin.consumer.flavors";
+	/**
+	 * Service Registration property (named <code>wireadmin.producer.flavors</code>)
+	 * specifying the list of data types available from this Producer service.
+	 * 
+	 * <p>
+	 * The Producer service object should be registered with this service
+	 * property.
+	 * 
+	 * <p>
+	 * The value of the property must be of type <code>Class[]</code>.
+	 */
+	public final static String	WIREADMIN_PRODUCER_FLAVORS		= "wireadmin.producer.flavors";
+	/**
+	 * Service Registration property (named <code>wireadmin.events</code>)
+	 * specifying the <code>WireAdminEvent</code> type of interest to a Wire Admin
+	 * Listener service. The value of the property is a bitwise OR of all the
+	 * <code>WireAdminEvent</code> types the Wire Admin Listener service wishes to
+	 * receive and must be of type <code>Integer</code>.
+	 * 
+	 * @see WireAdminEvent
+	 */
+	public final static String	WIREADMIN_EVENTS				= "wireadmin.events";
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/WirePermission.java b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/WirePermission.java
new file mode 100644
index 0000000..6073466
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/WirePermission.java
@@ -0,0 +1,485 @@
+/*
+ * Copyright (c) OSGi Alliance (2002, 2009). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.service.wireadmin;
+
+import java.io.IOException;
+import java.security.BasicPermission;
+import java.security.Permission;
+import java.security.PermissionCollection;
+import java.util.Enumeration;
+import java.util.Hashtable;
+
+/**
+ * Permission for the scope of a <code>Wire</code> object. When a
+ * <code>Envelope</code> object is used for communication with the
+ * <code>poll</code> or <code>update</code> method, and the scope is set, then
+ * the <code>Wire</code> object must verify that the Consumer service has
+ * <code>WirePermission[name,CONSUME]</code> and the Producer service has
+ * <code>WirePermission[name,PRODUCE]</code> for all names in the scope.
+ * <p>
+ * The names are compared with the normal rules for permission names. This means
+ * that they may end with a "*" to indicate wildcards. E.g. Door.* indicates all
+ * scope names starting with the string "Door". The last period is required due
+ * to the implementations of the <code>BasicPermission</code> class.
+ * 
+ * @ThreadSafe
+ * @version $Revision: 6381 $
+ */
+final public class WirePermission extends BasicPermission {
+	static final long			serialVersionUID	= -5583709391516569321L;
+	/**
+	 * The action string for the <code>produce</code> action.
+	 */
+	public static final String	PRODUCE				= "produce";
+	/**
+	 * The action string for the <code>consume</code> action.
+	 */
+	public static final String	CONSUME				= "consume";
+	private final static int	ACTION_PRODUCE		= 0x00000001;
+	private final static int	ACTION_CONSUME		= 0x00000002;
+	private final static int	ACTION_ALL			= ACTION_PRODUCE
+															| ACTION_CONSUME;
+	private final static int	ACTION_NONE			= 0;
+	/**
+	 * The actions mask.
+	 */
+	private transient int		action_mask;
+	/**
+	 * The actions in canonical form.
+	 * 
+	 * @serial
+	 */
+	private volatile String		actions				= null;
+
+	/**
+	 * Create a new WirePermission with the given name (may be wildcard) and
+	 * actions.
+	 * 
+	 * @param name Wire name.
+	 * @param actions <code>produce</code>, <code>consume</code> (canonical
+	 *        order).
+	 */
+	public WirePermission(String name, String actions) {
+		this(name, parseActions(actions));
+	}
+
+	/**
+	 * Package private constructor used by WirePermissionCollection.
+	 * 
+	 * @param name class name
+	 * @param mask action mask
+	 */
+	WirePermission(String name, int mask) {
+		super(name);
+		setTransients(mask);
+	}
+
+	/**
+	 * Called by constructors and when deserialized.
+	 * 
+	 * @param mask action mask
+	 */
+	private synchronized void setTransients(int mask) {
+		if ((mask == ACTION_NONE) || ((mask & ACTION_ALL) != mask)) {
+			throw new IllegalArgumentException("invalid action string");
+		}
+		action_mask = mask;
+	}
+
+	/**
+	 * Returns the current action mask. Used by the WirePermissionCollection
+	 * object.
+	 * 
+	 * @return The actions mask.
+	 */
+	synchronized int getActionsMask() {
+		return action_mask;
+	}
+
+	/**
+	 * Parse action string into action mask.
+	 * 
+	 * @param actions Action string.
+	 * @return action mask.
+	 */
+	private static int parseActions(String actions) {
+		boolean seencomma = false;
+		int mask = ACTION_NONE;
+		if (actions == null) {
+			return mask;
+		}
+		char[] a = actions.toCharArray();
+		int i = a.length - 1;
+		if (i < 0)
+			return mask;
+		while (i != -1) {
+			char c;
+			// skip whitespace
+			while ((i != -1)
+					&& ((c = a[i]) == ' ' || c == '\r' || c == '\n'
+							|| c == '\f' || c == '\t'))
+				i--;
+			// check for the known strings
+			int matchlen;
+			if (i >= 6 && (a[i - 6] == 'p' || a[i - 6] == 'P')
+					&& (a[i - 5] == 'r' || a[i - 5] == 'R')
+					&& (a[i - 4] == 'o' || a[i - 4] == 'O')
+					&& (a[i - 3] == 'd' || a[i - 3] == 'D')
+					&& (a[i - 2] == 'u' || a[i - 2] == 'U')
+					&& (a[i - 1] == 'c' || a[i - 1] == 'C')
+					&& (a[i] == 'e' || a[i] == 'E')) {
+				matchlen = 7;
+				mask |= ACTION_PRODUCE;
+			}
+			else
+				if (i >= 6 && (a[i - 6] == 'c' || a[i - 6] == 'C')
+						&& (a[i - 5] == 'o' || a[i - 5] == 'O')
+						&& (a[i - 4] == 'n' || a[i - 4] == 'N')
+						&& (a[i - 3] == 's' || a[i - 3] == 'S')
+						&& (a[i - 2] == 'u' || a[i - 2] == 'U')
+						&& (a[i - 1] == 'm' || a[i - 1] == 'M')
+						&& (a[i] == 'e' || a[i] == 'E')) {
+					matchlen = 7;
+					mask |= ACTION_CONSUME;
+				}
+				else {
+					// parse error
+					throw new IllegalArgumentException("invalid permission: "
+							+ actions);
+				}
+			// make sure we didn't just match the tail of a word
+			// like "ackbarfregister". Also, skip to the comma.
+			seencomma = false;
+			while (i >= matchlen && !seencomma) {
+				switch (a[i - matchlen]) {
+					case ',' :
+						seencomma = true;
+						/* FALLTHROUGH */
+					case ' ' :
+					case '\r' :
+					case '\n' :
+					case '\f' :
+					case '\t' :
+						break;
+					default :
+						throw new IllegalArgumentException(
+								"invalid permission: " + actions);
+				}
+				i--;
+			}
+			// point i at the location of the comma minus one (or -1).
+			i -= matchlen;
+		}
+		if (seencomma) {
+			throw new IllegalArgumentException("invalid permission: " + actions);
+		}
+		return mask;
+	}
+
+	/**
+	 * Checks if this <code>WirePermission</code> object <code>implies</code>
+	 * the specified permission.
+	 * <P>
+	 * More specifically, this method returns <code>true</code> if:
+	 * <p>
+	 * <ul>
+	 * <li><i>p </i> is an instanceof the <code>WirePermission</code> class,
+	 * <li><i>p </i>'s actions are a proper subset of this object's actions, and
+	 * <li><i>p </i>'s name is implied by this object's name. For example,
+	 * <code>java.*</code> implies <code>java.home</code>.
+	 * </ul>
+	 * 
+	 * @param p The permission to check against.
+	 * 
+	 * @return <code>true</code> if the specified permission is implied by this
+	 *         object; <code>false</code> otherwise.
+	 */
+	public boolean implies(Permission p) {
+		if (p instanceof WirePermission) {
+			WirePermission requested = (WirePermission) p;
+			int requestedMask = requested.getActionsMask();
+			return ((getActionsMask() & requestedMask) == requestedMask)
+					&& super.implies(p);
+		}
+		return false;
+	}
+
+	/**
+	 * Returns the canonical string representation of the actions. Always
+	 * returns present actions in the following order: <code>produce</code>,
+	 * <code>consume</code>.
+	 * 
+	 * @return The canonical string representation of the actions.
+	 */
+	public String getActions() {
+		String result = actions;
+		if (result == null) {
+			StringBuffer sb = new StringBuffer();
+			boolean comma = false;
+			int mask = getActionsMask();
+			if ((mask & ACTION_PRODUCE) == ACTION_PRODUCE) {
+				sb.append(PRODUCE);
+				comma = true;
+			}
+			if ((mask & ACTION_CONSUME) == ACTION_CONSUME) {
+				if (comma)
+					sb.append(',');
+				sb.append(CONSUME);
+			}
+			actions = result = sb.toString();
+		}
+		return result;
+	}
+
+	/**
+	 * Returns a new <code>PermissionCollection</code> object for storing
+	 * <code>WirePermission</code> objects.
+	 * 
+	 * @return A new <code>PermissionCollection</code> object suitable for
+	 *         storing <code>WirePermission</code> objects.
+	 */
+	public PermissionCollection newPermissionCollection() {
+		return new WirePermissionCollection();
+	}
+
+	/**
+	 * Determines the equalty of two <code>WirePermission</code> objects.
+	 * 
+	 * Checks that specified object has the same name and actions as this
+	 * <code>WirePermission</code> object.
+	 * 
+	 * @param obj The object to test for equality.
+	 * @return true if <code>obj</code> is a <code>WirePermission</code>, and
+	 *         has the same name and actions as this <code>WirePermission</code>
+	 *         object; <code>false</code> otherwise.
+	 */
+	public boolean equals(Object obj) {
+		if (obj == this) {
+			return true;
+		}
+		if (!(obj instanceof WirePermission)) {
+			return false;
+		}
+		WirePermission wp = (WirePermission) obj;
+		return (getActionsMask() == wp.getActionsMask())
+				&& getName().equals(wp.getName());
+	}
+
+	/**
+	 * Returns the hash code value for this object.
+	 * 
+	 * @return Hash code value for this object.
+	 */
+	public int hashCode() {
+		int h = 31 * 17 + getName().hashCode();
+		h = 31 * h + getActions().hashCode();
+		return h;
+	}
+
+	/**
+	 * Returns a string describing this <code>WirePermission</code>. The
+	 * convention is to specify the class name, the permission name, and the
+	 * actions in the following format:
+	 * '(org.osgi.service.wireadmin.WirePermission &quot;name&quot;
+	 * &quot;actions&quot;)'.
+	 * 
+	 * @return information about this <code>Permission</code> object.
+	 */
+	public String toString() {
+		StringBuffer sb = new StringBuffer();
+		sb.append('(');
+		sb.append(getClass().getName());
+		sb.append(" \"");
+		sb.append(getName());
+		String a = getActions();
+		if (a.length() > 0) {
+			sb.append("\" \"");
+			sb.append(a);
+		}
+		sb.append("\")");
+		return sb.toString();
+	}
+
+	/**
+	 * WriteObject is called to save the state of the ServicePermission to a
+	 * stream. The actions are serialized, and the superclass takes care of the
+	 * name.
+	 */
+	private synchronized void writeObject(java.io.ObjectOutputStream s)
+			throws IOException {
+		// Write out the actions. The superclass takes care of the name
+		// call getActions to make sure actions field is initialized
+		if (actions == null)
+			getActions();
+		s.defaultWriteObject();
+	}
+
+	/**
+	 * readObject is called to restore the state of the ServicePermission from a
+	 * stream.
+	 */
+	private synchronized void readObject(java.io.ObjectInputStream s)
+			throws IOException, ClassNotFoundException {
+		// Read in the action, then initialize the rest
+		s.defaultReadObject();
+		setTransients(parseActions(actions));
+	}
+}
+
+/**
+ * A <code>WirePermissionCollection</code> stores a set of
+ * <code>WirePermission</code> permissions.
+ */
+
+final class WirePermissionCollection extends PermissionCollection {
+	static final long		serialVersionUID	= 2617521094909826016L;
+	/**
+	 * Table of permissions.
+	 * 
+	 * @GuardedBy this
+	 * @serial
+	 */
+	private final Hashtable	permissions;
+	/**
+	 * Boolean saying if "*" is in the collection.
+	 * 
+	 * @GuardedBy this
+	 * @serial
+	 */
+	private boolean			all_allowed;
+
+	/**
+	 * Creates an empty WirePermissionCollection object.
+	 * 
+	 */
+	public WirePermissionCollection() {
+		permissions = new Hashtable();
+		all_allowed = false;
+	}
+
+	/**
+	 * Adds a permission to this PermissionCollection.
+	 * 
+	 * @param permission The Permission object to add.
+	 * 
+	 * @throws IllegalArgumentException If the permission is not a
+	 *         WirePermission object.
+	 * 
+	 * @throws SecurityException If this PermissionCollection has been marked
+	 *         read-only.
+	 */
+	public void add(Permission permission) {
+		if (!(permission instanceof WirePermission)) {
+			throw new IllegalArgumentException("invalid permission: "
+					+ permission);
+		}
+		if (isReadOnly()) {
+			throw new SecurityException("attempt to add a Permission to a "
+					+ "readonly PermissionCollection");
+		}
+		WirePermission wp = (WirePermission) permission;
+		String name = wp.getName();
+		synchronized (this) {
+			WirePermission existing = (WirePermission) permissions.get(name);
+			if (existing != null) {
+				int oldMask = existing.getActionsMask();
+				int newMask = wp.getActionsMask();
+				if (oldMask != newMask) {
+					permissions.put(name, new WirePermission(name, oldMask
+							| newMask));
+				}
+			}
+			else {
+				permissions.put(name, wp);
+			}
+			if (!all_allowed) {
+				if (name.equals("*")) {
+					all_allowed = true;
+				}
+			}
+		}
+	}
+
+	/**
+	 * Determines if a set of permissions implies the permissions expressed in
+	 * <code>permission</code>.
+	 * 
+	 * @param permission The Permission object to compare.
+	 * 
+	 * @return <code>true</code> if <code>permission</code> is a proper subset
+	 *         of a permission in the set; <code>false</code> otherwise.
+	 */
+	public boolean implies(Permission permission) {
+		if (!(permission instanceof WirePermission)) {
+			return false;
+		}
+		WirePermission requested = (WirePermission) permission;
+		WirePermission x;
+		int desired = requested.getActionsMask();
+		int effective = 0;
+		String name = requested.getName();
+		synchronized (this) {
+			// short circuit if the "*" Permission was added
+			if (all_allowed) {
+				x = (WirePermission) permissions.get("*");
+				if (x != null) {
+					effective |= x.getActionsMask();
+					if ((effective & desired) == desired)
+						return true;
+				}
+			}
+			// strategy:
+			// Check for full match first. Then work our way up the
+			// name looking for matches on a.b.*
+			x = (WirePermission) permissions.get(name);
+		}
+		if (x != null) {
+			// we have a direct hit!
+			effective |= x.getActionsMask();
+			if ((effective & desired) == desired) {
+				return true;
+			}
+		}
+		// work our way up the tree...
+		int last;
+		int offset = name.length() - 1;
+		while ((last = name.lastIndexOf(".", offset)) != -1) {
+			name = name.substring(0, last + 1) + "*";
+			synchronized (this) {
+				x = (WirePermission) permissions.get(name);
+			}
+			if (x != null) {
+				effective |= x.getActionsMask();
+				if ((effective & desired) == desired) {
+					return (true);
+				}
+			}
+			offset = last - 1;
+		}
+		// we don't have to check for "*" as it was already checked
+		// at the top (all_allowed), so we just return false
+		return false;
+	}
+
+	/**
+	 * Returns an enumeration of all the Permission objects in the container.
+	 * 
+	 * @return Enumeration of all the Permission objects.
+	 */
+	public Enumeration elements() {
+		return permissions.elements();
+	}
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/package.html b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/package.html
new file mode 100644
index 0000000..36d1d82
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/package.html
@@ -0,0 +1,11 @@
+<!-- $Revision: 6204 $ -->
+<BODY>
+<p>Wire Admin Package Version 1.0.
+<p>Bundles wishing to use this package must list the package
+in the Import-Package header of the bundle's manifest.
+For example:
+<pre>
+Import-Package: org.osgi.service.wireadmin; version=&quot;[1.0,2.0)&quot;
+</pre>
+</BODY>
+
diff --git a/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/packageinfo b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/packageinfo
new file mode 100644
index 0000000..7c8de03
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.services/src/org/osgi/service/wireadmin/packageinfo
@@ -0,0 +1 @@
+version 1.0
diff --git a/eclipse/plugins/org.eclipse.osgi.util/org/osgi/util/measurement/Measurement.class b/eclipse/plugins/org.eclipse.osgi.util/org/osgi/util/measurement/Measurement.class
deleted file mode 100644
index 87566ff..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.util/org/osgi/util/measurement/Measurement.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.util/org/osgi/util/measurement/State.class b/eclipse/plugins/org.eclipse.osgi.util/org/osgi/util/measurement/State.class
deleted file mode 100644
index 38e90d6..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.util/org/osgi/util/measurement/State.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.util/org/osgi/util/measurement/Unit.class b/eclipse/plugins/org.eclipse.osgi.util/org/osgi/util/measurement/Unit.class
deleted file mode 100644
index 83487e2..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.util/org/osgi/util/measurement/Unit.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.util/org/osgi/util/position/Position.class b/eclipse/plugins/org.eclipse.osgi.util/org/osgi/util/position/Position.class
deleted file mode 100644
index 1475b2c..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.util/org/osgi/util/position/Position.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.util/org/osgi/util/xml/XMLParserActivator.class b/eclipse/plugins/org.eclipse.osgi.util/org/osgi/util/xml/XMLParserActivator.class
deleted file mode 100644
index e215e38..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.util/org/osgi/util/xml/XMLParserActivator.class and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.util/src.zip b/eclipse/plugins/org.eclipse.osgi.util/src.zip
deleted file mode 100644
index 8f64acb..0000000
Binary files a/eclipse/plugins/org.eclipse.osgi.util/src.zip and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/measurement/Measurement.java b/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/measurement/Measurement.java
new file mode 100644
index 0000000..82779cc
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/measurement/Measurement.java
@@ -0,0 +1,484 @@
+/*
+ * Copyright (c) OSGi Alliance (2002, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.util.measurement;
+
+/**
+ * Represents a value with an error, a unit and a time-stamp.
+ * 
+ * <p>
+ * A <code>Measurement</code> object is used for maintaining the tuple of value,
+ * error, unit and time-stamp. The value and error are represented as doubles
+ * and the time is measured in milliseconds since midnight, January 1, 1970 UTC.
+ * 
+ * <p>
+ * Mathematic methods are provided that correctly calculate taking the error
+ * into account. A runtime error will occur when two measurements are used in an
+ * incompatible way. E.g., when a speed (m/s) is added to a distance (m). The
+ * measurement class will correctly track changes in unit during multiplication
+ * and division, always coercing the result to the most simple form. See
+ * {@link Unit} for more information on the supported units.
+ * 
+ * <p>
+ * Errors in the measurement class are absolute errors. Measurement errors
+ * should use the P95 rule. Actual values must fall in the range value +/- error
+ * 95% or more of the time.
+ * 
+ * <p>
+ * A <code>Measurement</code> object is immutable in order to be easily shared.
+ * 
+ * <p>
+ * Note: This class has a natural ordering that is inconsistent with equals. See
+ * {@link #compareTo}.
+ * 
+ * @Immutable
+ * @version $Revision: 5715 $
+ */
+public class Measurement implements Comparable {
+	private final double				value;
+	private final double				error;
+	private final long					time;
+	private final Unit					unit;
+	private transient volatile String	name;
+	private transient volatile int		hashCode;
+
+	/**
+	 * Create a new <code>Measurement</code> object.
+	 * 
+	 * @param value The value of the <code>Measurement</code>.
+	 * @param error The error of the <code>Measurement</code>.
+	 * @param unit The <code>Unit</code> object in which the value is measured. If
+	 *        this argument is <code>null</code>, then the unit will be set to
+	 *        {@link Unit#unity}.
+	 * @param time The time measured in milliseconds since midnight, January 1,
+	 *        1970 UTC.
+	 */
+	public Measurement(double value, double error, Unit unit, long time) {
+		this.value = value;
+		this.error = Math.abs(error);
+		this.unit = (unit != null) ? unit : Unit.unity;
+		this.time = time;
+	}
+
+	/**
+	 * Create a new <code>Measurement</code> object with a time of zero.
+	 * 
+	 * @param value The value of the <code>Measurement</code>.
+	 * @param error The error of the <code>Measurement</code>.
+	 * @param unit The <code>Unit</code> object in which the value is measured. If
+	 *        this argument is <code>null</code>, then the unit will be set to
+	 *        {@link Unit#unity}.
+	 */
+	public Measurement(double value, double error, Unit unit) {
+		this(value, error, unit, 0l);
+	}
+
+	/**
+	 * Create a new <code>Measurement</code> object with an error of 0.0 and a
+	 * time of zero.
+	 * 
+	 * @param value The value of the <code>Measurement</code>.
+	 * @param unit The <code>Unit</code> in which the value is measured. If this
+	 *        argument is <code>null</code>, then the unit will be set to
+	 *        {@link Unit#unity}.
+	 */
+	public Measurement(double value, Unit unit) {
+		this(value, 0.0d, unit, 0l);
+	}
+
+	/**
+	 * Create a new <code>Measurement</code> object with an error of 0.0, a unit
+	 * of {@link Unit#unity} and a time of zero.
+	 * 
+	 * @param value The value of the <code>Measurement</code>.
+	 */
+	public Measurement(double value) {
+		this(value, 0.0d, null, 0l);
+	}
+
+	/**
+	 * Returns the value of this <code>Measurement</code> object.
+	 * 
+	 * @return The value of this <code>Measurement</code> object as a double.
+	 */
+	public final double getValue() {
+		return value;
+	}
+
+	/**
+	 * Returns the error of this <code>Measurement</code> object. The error is
+	 * always a positive value.
+	 * 
+	 * @return The error of this <code>Measurement</code> as a double.
+	 */
+	public final double getError() {
+		return error;
+	}
+
+	/**
+	 * Returns the <code>Unit</code> object of this <code>Measurement</code> object.
+	 * 
+	 * @return The <code>Unit</code> object of this <code>Measurement</code> object.
+	 * 
+	 * @see Unit
+	 */
+	public final Unit getUnit() {
+		return unit;
+	}
+
+	/**
+	 * Returns the time at which this <code>Measurement</code> object was taken.
+	 * The time is measured in milliseconds since midnight, January 1, 1970 UTC,
+	 * or zero when not defined.
+	 * 
+	 * @return The time at which this <code>Measurement</code> object was taken or
+	 *         zero.
+	 */
+	public final long getTime() {
+		return time;
+	}
+
+	/**
+	 * Returns a new <code>Measurement</code> object that is the product of this
+	 * object multiplied by the specified object.
+	 * 
+	 * @param m The <code>Measurement</code> object that will be multiplied with
+	 *        this object.
+	 * @return A new <code>Measurement</code> that is the product of this object
+	 *         multiplied by the specified object. The error and unit of the new
+	 *         object are computed. The time of the new object is set to the
+	 *         time of this object.
+	 * @throws ArithmeticException If the <code>Unit</code> objects of this object
+	 *         and the specified object cannot be multiplied.
+	 * @see Unit
+	 */
+	public Measurement mul(Measurement m) {
+		double mvalue = m.value;
+		return new Measurement(value * mvalue, Math.abs(value) * m.error
+				+ error * Math.abs(mvalue), unit.mul(m.unit), time);
+	}
+
+	/**
+	 * Returns a new <code>Measurement</code> object that is the product of this
+	 * object multiplied by the specified value.
+	 * 
+	 * @param d The value that will be multiplied with this object.
+	 * @param u The <code>Unit</code> of the specified value.
+	 * @return A new <code>Measurement</code> object that is the product of this
+	 *         object multiplied by the specified value. The error and unit of
+	 *         the new object are computed. The time of the new object is set to
+	 *         the time of this object.
+	 * @throws ArithmeticException If the units of this object and the specified
+	 *         value cannot be multiplied.
+	 * @see Unit
+	 */
+	public Measurement mul(double d, Unit u) {
+		return new Measurement(value * d, error * Math.abs(d), unit.mul(u),
+				time);
+	}
+
+	/**
+	 * Returns a new <code>Measurement</code> object that is the product of this
+	 * object multiplied by the specified value.
+	 * 
+	 * @param d The value that will be multiplied with this object.
+	 * @return A new <code>Measurement</code> object that is the product of this
+	 *         object multiplied by the specified value. The error of the new
+	 *         object is computed. The unit and time of the new object is set to
+	 *         the unit and time of this object.
+	 */
+	public Measurement mul(double d) {
+		return new Measurement(value * d, error * Math.abs(d), unit, time);
+	}
+
+	/**
+	 * Returns a new <code>Measurement</code> object that is the quotient of this
+	 * object divided by the specified object.
+	 * 
+	 * @param m The <code>Measurement</code> object that will be the divisor of
+	 *        this object.
+	 * @return A new <code>Measurement</code> object that is the quotient of this
+	 *         object divided by the specified object. The error and unit of the
+	 *         new object are computed. The time of the new object is set to the
+	 *         time of this object.
+	 * @throws ArithmeticException If the <code>Unit</code> objects of this object
+	 *         and the specified object cannot be divided.
+	 * @see Unit
+	 */
+	public Measurement div(Measurement m) {
+		double mvalue = m.value;
+		return new Measurement(value / mvalue,
+				(Math.abs(value) * m.error + error * Math.abs(mvalue))
+						/ (mvalue * mvalue), unit.div(m.unit), time);
+	}
+
+	/**
+	 * Returns a new <code>Measurement</code> object that is the quotient of this
+	 * object divided by the specified value.
+	 * 
+	 * @param d The value that will be the divisor of this object.
+	 * @param u The <code>Unit</code> object of the specified value.
+	 * @return A new <code>Measurement</code> that is the quotient of this object
+	 *         divided by the specified value. The error and unit of the new
+	 *         object are computed. The time of the new object is set to the
+	 *         time of this object.
+	 * @throws ArithmeticException If the <code>Unit</code> objects of this object
+	 *         and the specified object cannot be divided.
+	 * @see Unit
+	 */
+	public Measurement div(double d, Unit u) {
+		return new Measurement(value / d, error / Math.abs(d), unit.div(u),
+				time);
+	}
+
+	/**
+	 * Returns a new <code>Measurement</code> object that is the quotient of this
+	 * object divided by the specified value.
+	 * 
+	 * @param d The value that will be the divisor of this object.
+	 * @return A new <code>Measurement</code> object that is the quotient of this
+	 *         object divided by the specified value. The error of the new
+	 *         object is computed. The unit and time of the new object is set to
+	 *         the <code>Unit</code> and time of this object.
+	 */
+	public Measurement div(double d) {
+		return new Measurement(value / d, error / Math.abs(d), unit, time);
+	}
+
+	/**
+	 * Returns a new <code>Measurement</code> object that is the sum of this
+	 * object added to the specified object.
+	 * 
+	 * The error and unit of the new object are computed. The time of the new
+	 * object is set to the time of this object.
+	 * 
+	 * @param m The <code>Measurement</code> object that will be added with this
+	 *        object.
+	 * @return A new <code>Measurement</code> object that is the sum of this and
+	 *         m.
+	 * @see Unit
+	 * @throws ArithmeticException If the <code>Unit</code> objects of this object
+	 *         and the specified object cannot be added.
+	 */
+	public Measurement add(Measurement m) {
+		return new Measurement(value + m.value, error + m.error, unit
+				.add(m.unit), time);
+	}
+
+	/**
+	 * Returns a new <code>Measurement</code> object that is the sum of this
+	 * object added to the specified value.
+	 * 
+	 * @param d The value that will be added with this object.
+	 * @param u The <code>Unit</code> object of the specified value.
+	 * @return A new <code>Measurement</code> object that is the sum of this
+	 *         object added to the specified value. The unit of the new object
+	 *         is computed. The error and time of the new object is set to the
+	 *         error and time of this object.
+	 * @throws ArithmeticException If the <code>Unit</code> objects of this object
+	 *         and the specified value cannot be added.
+	 * @see Unit
+	 */
+	public Measurement add(double d, Unit u) {
+		return new Measurement(value + d, error, unit.add(u), time);
+	}
+
+	/**
+	 * Returns a new <code>Measurement</code> object that is the sum of this
+	 * object added to the specified value.
+	 * 
+	 * @param d The value that will be added with this object.
+	 * @return A new <code>Measurement</code> object that is the sum of this
+	 *         object added to the specified value. The error, unit, and time of
+	 *         the new object is set to the error, <code>Unit</code> and time of
+	 *         this object.
+	 */
+	public Measurement add(double d) {
+		return new Measurement(value + d, error, unit, time);
+	}
+
+	/**
+	 * Returns a new <code>Measurement</code> object that is the subtraction of
+	 * the specified object from this object.
+	 * 
+	 * @param m The <code>Measurement</code> object that will be subtracted from
+	 *        this object.
+	 * @return A new <code>Measurement</code> object that is the subtraction of
+	 *         the specified object from this object. The error and unit of the
+	 *         new object are computed. The time of the new object is set to the
+	 *         time of this object.
+	 * @throws ArithmeticException If the <code>Unit</code> objects of this object
+	 *         and the specified object cannot be subtracted.
+	 * @see Unit
+	 */
+	public Measurement sub(Measurement m) {
+		return new Measurement(value - m.value, error + m.error, unit
+				.sub(m.unit), time);
+	}
+
+	/**
+	 * Returns a new <code>Measurement</code> object that is the subtraction of
+	 * the specified value from this object.
+	 * 
+	 * @param d The value that will be subtracted from this object.
+	 * @param u The <code>Unit</code> object of the specified value.
+	 * @return A new <code>Measurement</code> object that is the subtraction of
+	 *         the specified value from this object. The unit of the new object
+	 *         is computed. The error and time of the new object is set to the
+	 *         error and time of this object.
+	 * @throws ArithmeticException If the <code>Unit</code> objects of this object
+	 *         and the specified object cannot be subtracted.
+	 * @see Unit
+	 */
+	public Measurement sub(double d, Unit u) {
+		return new Measurement(value - d, error, unit.sub(u), time);
+	}
+
+	/**
+	 * Returns a new <code>Measurement</code> object that is the subtraction of
+	 * the specified value from this object.
+	 * 
+	 * @param d The value that will be subtracted from this object.
+	 * @return A new <code>Measurement</code> object that is the subtraction of
+	 *         the specified value from this object. The error, unit and time of
+	 *         the new object is set to the error, <code>Unit</code> object and
+	 *         time of this object.
+	 */
+	public Measurement sub(double d) {
+		return new Measurement(value - d, error, unit, time);
+	}
+
+	/**
+	 * Returns a <code>String</code> object representing this <code>Measurement</code>
+	 * object.
+	 * 
+	 * @return a <code>String</code> object representing this <code>Measurement</code>
+	 *         object.
+	 */
+	public String toString() {
+		String result = name;
+		if (result == null) {
+			StringBuffer sb = new StringBuffer();
+			sb.append(value);
+			if (error != 0.0d) {
+				sb.append(" +/- ");
+				sb.append(error);
+			}
+			String u = unit.toString();
+			if (u.length() > 0) {
+				sb.append(" ");
+				sb.append(u);
+			}
+			result = sb.toString();
+			name = result;
+		}
+		return result;
+	}
+
+	/**
+	 * Compares this object with the specified object for order. Returns a
+	 * negative integer, zero, or a positive integer if this object is less
+	 * than, equal to, or greater than the specified object.
+	 * 
+	 * <p>
+	 * Note: This class has a natural ordering that is inconsistent with equals.
+	 * For this method, another <code>Measurement</code> object is considered
+	 * equal if there is some <code>x</code> such that
+	 * 
+	 * <pre>
+	 * getValue() - getError() &lt;= x &lt;= getValue() + getError()
+	 * </pre>
+	 * 
+	 * for both <code>Measurement</code> objects being compared.
+	 * 
+	 * @param obj The object to be compared.
+	 * @return A negative integer, zero, or a positive integer if this object is
+	 *         less than, equal to, or greater than the specified object.
+	 * 
+	 * @throws ClassCastException If the specified object is not of type
+	 *         <code>Measurement</code>.
+	 * @throws ArithmeticException If the unit of the specified
+	 *         <code>Measurement</code> object is not equal to the <code>Unit</code>
+	 *         object of this object.
+	 */
+	public int compareTo(Object obj) {
+		if (this == obj) {
+			return 0;
+		}
+		Measurement that = (Measurement) obj;
+		if (!unit.equals(that.unit)) {
+			throw new ArithmeticException("Cannot compare " + this + " and "
+					+ that);
+		}
+		int result = Double.compare(value, that.value);
+		if (result == 0) {
+			return 0;
+		}
+		if (result < 0) {
+			if (Double.compare(value + error, that.value - that.error) >= 0) {
+				return 0;
+			}
+			return -1;
+		}
+		if (Double.compare(value - error, that.value + that.error) <= 0) {
+			return 0;
+		}
+		return 1;
+	}
+
+	/**
+	 * Returns a hash code value for this object.
+	 * 
+	 * @return A hash code value for this object.
+	 */
+	public int hashCode() {
+		int h = hashCode;
+		if (h == 0) {
+			long bits = Double.doubleToLongBits(value);
+			h = 31 * 17 + ((int) (bits ^ (bits >>> 32)));
+			bits = Double.doubleToLongBits(error);
+			h = 31 * h + ((int) (bits ^ (bits >>> 32)));
+			h = 31 * h + unit.hashCode();
+			hashCode = h;
+		}
+		return h;
+	}
+
+	/**
+	 * Returns whether the specified object is equal to this object. Two
+	 * <code>Measurement</code> objects are equal if they have same value, error
+	 * and <code>Unit</code>.
+	 * 
+	 * <p>
+	 * Note: This class has a natural ordering that is inconsistent with equals.
+	 * See {@link #compareTo}.
+	 * 
+	 * @param obj The object to compare with this object.
+	 * @return <code>true</code> if this object is equal to the specified object;
+	 *         <code>false</code> otherwise.
+	 */
+	public boolean equals(Object obj) {
+		if (this == obj) {
+			return true;
+		}
+		if (!(obj instanceof Measurement)) {
+			return false;
+		}
+		Measurement that = (Measurement) obj;
+		return (Double.compare(value, that.value) == 0)
+				&& (Double.compare(error, that.error) == 0)
+				&& unit.equals(that.unit);
+	}
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/measurement/State.java b/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/measurement/State.java
new file mode 100644
index 0000000..7fcc469
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/measurement/State.java
@@ -0,0 +1,144 @@
+/*
+ * Copyright (c) OSGi Alliance (2002, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.util.measurement;
+
+/**
+ * Groups a state name, value and timestamp.
+ * 
+ * <p>
+ * The state itself is represented as an integer and the time is measured in
+ * milliseconds since midnight, January 1, 1970 UTC.
+ * 
+ * <p>
+ * A <code>State</code> object is immutable so that it may be easily shared.
+ * 
+ * @Immutable
+ * @version $Revision: 5715 $
+ */
+public class State {
+	private final int		value;
+	private final long		time;
+	private final String	name;
+
+	/**
+	 * Create a new <code>State</code> object.
+	 * 
+	 * @param value The value of the state.
+	 * @param name The name of the state.
+	 * @param time The time measured in milliseconds since midnight, January 1,
+	 *        1970 UTC.
+	 */
+	public State(int value, String name, long time) {
+		this.value = value;
+		this.name = name;
+		this.time = time;
+	}
+
+	/**
+	 * Create a new <code>State</code> object with a time of 0.
+	 * 
+	 * @param value The value of the state.
+	 * @param name The name of the state.
+	 */
+	public State(int value, String name) {
+		this(value, name, 0);
+	}
+
+	/**
+	 * Returns the value of this <code>State</code>.
+	 * 
+	 * @return The value of this <code>State</code> object.
+	 */
+	public final int getValue() {
+		return value;
+	}
+
+	/**
+	 * Returns the time with which this <code>State</code> was created.
+	 * 
+	 * @return The time with which this <code>State</code> was created. The time
+	 *         is measured in milliseconds since midnight, January 1, 1970 UTC.
+	 */
+	public final long getTime() {
+		return time;
+	}
+
+	/**
+	 * Returns the name of this <code>State</code>.
+	 * 
+	 * @return The name of this <code>State</code> object.
+	 */
+	public final String getName() {
+		return name;
+	}
+
+	/**
+	 * Returns a <code>String</code> object representing this object.
+	 * 
+	 * @return a <code>String</code> object representing this object.
+	 */
+	public String toString() {
+		StringBuffer sb = new StringBuffer();
+		sb.append(value);
+		if (name != null) {
+			sb.append(" \"");
+			sb.append(name);
+			sb.append("\"");
+		}
+		return (sb.toString());
+	}
+
+	/**
+	 * Returns a hash code value for this object.
+	 * 
+	 * @return A hash code value for this object.
+	 */
+	public int hashCode() {
+		int hash = 31 * 17 + value;
+		if (name != null) {
+			hash = 31 * hash + name.hashCode();
+		}
+		return hash;
+	}
+
+	/**
+	 * Return whether the specified object is equal to this object. Two
+	 * <code>State</code> objects are equal if they have same value and name.
+	 * 
+	 * @param obj The object to compare with this object.
+	 * @return <code>true</code> if this object is equal to the specified object;
+	 *         <code>false</code> otherwise.
+	 */
+	public boolean equals(Object obj) {
+		if (this == obj) {
+			return true;
+		}
+		if (!(obj instanceof State)) {
+			return false;
+		}
+		State that = (State) obj;
+		if (value != that.value) {
+			return false;
+		}
+		if (name == that.name) {
+			return true;
+		}
+		if (name == null) {
+			return false;
+		}
+		return name.equals(that.name);
+	}
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/measurement/Unit.java b/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/measurement/Unit.java
new file mode 100644
index 0000000..5bea0c1
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/measurement/Unit.java
@@ -0,0 +1,521 @@
+/*
+ * Copyright (c) OSGi Alliance (2002, 2008). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.util.measurement;
+
+import java.util.Hashtable;
+
+/**
+ * A unit system for measurements.
+ * 
+ * This class contains definitions of the most common SI units.
+ * <p>
+ * 
+ * <p>
+ * This class only support exponents for the base SI units in the range -64 to
+ * +63. Any operation which produces an exponent outside of this range will
+ * result in a <code>Unit</code> object with undefined exponents.
+ * 
+ * @Immutable
+ * @version $Revision: 5715 $
+ */
+/*
+ * This local class maintains the information about units. It can calculate new
+ * units when two values are multiplied, divided, added or subtracted. <p> The
+ * unit works with the 7 basic SI types + rad + up to 2^6 custom types. For each
+ * type, the unit keeps a bit mask with the exponents of the basic types. Eg.
+ * m/s is m = 1, s = -1. Multiplying one unit with another means that the bit
+ * masks are added, dividing means that the bit masks are subtracted. <p> This
+ * class can handle any reasonable combination of SI units. However, it will
+ * always try to coerce results back into the basic set. E.g. when you do V*A
+ * you should get W and not m2.kg/s3 . Only when the existing types do not match
+ * does the unit fallback to the expanded form. <p> This class uses offset
+ * arithmetic. This means that the exponents are stored in an long. The special
+ * field is used for units that should not be arithmetically divided or
+ * multiplied, like longitude and lattitude. These special units can however, be
+ * divided and multiplied by the basic 7 constants of the SI, e.g. deg/s.
+ */
+public class Unit {
+	private final static long	UNITY		= createType(0, 0, 0, 0, 0, 0, 0,
+													0, 0);
+	private final static long	ZERO		= 0x40L;
+	private final static long	MASK		= 0x7fL;
+	private final static int	m_SHIFT		= 0;
+	private final static int	s_SHIFT		= 7;
+	private final static int	kg_SHIFT	= 14;
+	private final static int	K_SHIFT		= 21;
+	private final static int	A_SHIFT		= 28;
+	private final static int	mol_SHIFT	= 35;
+	private final static int	cd_SHIFT	= 42;
+	private final static int	rad_SHIFT	= 49;
+	private final static int	x_SHIFT		= 56;
+	private final static long	x_MASK		= MASK << x_SHIFT;
+	/** No Unit (Unity) */
+	public final static Unit	unity		= new Unit("", UNITY);					// Unity
+	/* SI Base Units */
+	/** The length unit meter (m) */
+	public final static Unit	m			= new Unit("m", createType(0, 0, 0,
+													0, 0, 0, 0, 0, 1));			// Distance
+	// meter
+	/** The time unit second (s) */
+	public final static Unit	s			= new Unit("s", createType(0, 0, 0,
+													0, 0, 0, 0, 1, 0));			// Time
+	// Seconds
+	// s
+	/** The mass unit kilogram (kg) */
+	public final static Unit	kg			= new Unit("kg", createType(0, 0,
+													0, 0, 0, 0, 1, 0, 0));			// Mass
+	// kilogram
+	// kg
+	/** The temperature unit kelvin (K) */
+	public final static Unit	K			= new Unit("K", createType(0, 0, 0,
+													0, 0, 1, 0, 0, 0));			// Temperature
+	// kelvin
+	// K
+	/** The electric current unit ampere (A) */
+	public final static Unit	A			= new Unit("A", createType(0, 0, 0,
+													0, 1, 0, 0, 0, 0));			// Current
+	// ampere
+	// A
+	/** The amount of substance unit mole (mol) */
+	public final static Unit	mol			= new Unit("mol", createType(0, 0,
+													0, 1, 0, 0, 0, 0, 0));			// Substance
+	// mole
+	// mol
+	/** The luminous intensity unit candela (cd) */
+	public final static Unit	cd			= new Unit("cd", createType(0, 0,
+													1, 0, 0, 0, 0, 0, 0));			// Light
+	// candela
+	// cd
+	/* SI Derived Units */
+	/** The speed unit meter per second (m/s) */
+	public final static Unit	m_s			= new Unit("m/s", createType(0, 0,
+													0, 0, 0, 0, 0, -1, 1));		// Speed
+	// m/s
+	/** The acceleration unit meter per second squared (m/s <sup>2 </sup>) */
+	public final static Unit	m_s2		= new Unit("m/s2", createType(0, 0,
+													0, 0, 0, 0, 0, -2, 1));		// Acceleration
+	// m/s^2
+	/** The area unit square meter(m <sup>2 </sup>) */
+	public final static Unit	m2			= new Unit("m2", createType(0, 0,
+													0, 0, 0, 0, 0, 0, 2));			// Surface
+	// m^2
+	/** The volume unit cubic meter (m <sup>3 </sup>) */
+	public final static Unit	m3			= new Unit("m3", createType(0, 0,
+													0, 0, 0, 0, 0, 0, 3));			// Volume
+	// m^3
+	/**
+	 * The frequency unit hertz (Hz).
+	 * <p>
+	 * hertz is expressed in SI units as 1/s
+	 */
+	public final static Unit	Hz			= new Unit("Hz", createType(0, 0,
+													0, 0, 0, 0, 0, -1, 0));		// Frequency
+	// 1/s
+	/**
+	 * The force unit newton (N).
+	 * <p>
+	 * N is expressed in SI units as m&#183;kg/s <sup>2 </sup>
+	 */
+	public final static Unit	N			= new Unit("N", createType(0, 0, 0,
+													0, 0, 0, 1, -2, 1));			// Force
+	// newton
+	// (m*kg)/s^2
+	/**
+	 * The pressure unit pascal (Pa).
+	 * <p>
+	 * Pa is equal to N/m <sup>2 </sup> or is expressed in SI units as
+	 * kg/m&#183;s <sup>2 </sup>
+	 */
+	public final static Unit	Pa			= new Unit("Pa", createType(0, 0,
+													0, 0, 0, 0, 1, -2, -1));		// Pressure
+	// pascal
+	// kg/(m*s^2)
+	/**
+	 * The energy unit joule (J).
+	 * <p>
+	 * joule is equal to N&#183;m or is expressed in SI units as m <sup>2
+	 * </sup>&#183;kg/s <sup>2
+	 */
+	public final static Unit	J			= new Unit("J", createType(0, 0, 0,
+													0, 0, 0, 1, -2, 2));			// Energy
+	// joule
+	// (m^2*kg)/s^2
+	/**
+	 * The power unit watt (W).
+	 * <p>
+	 * watt is equal to J/s or is expressed in SI units as m <sup>2
+	 * </sup>&#183;kg/s <sup>3 </sup>
+	 */
+	public final static Unit	W			= new Unit("W", createType(0, 0, 0,
+													0, 0, 0, 1, -3, 2));			// Power
+	// watt
+	// (m^2*kg)/s^3
+	/**
+	 * The electric charge unit coulomb (C).
+	 * <p>
+	 * coulomb is expressed in SI units as s&#183;A
+	 */
+	public final static Unit	C			= new Unit("C", createType(0, 0, 0,
+													0, 1, 0, 0, 1, 0));			// Charge
+	// coulumb
+	// s*A
+	/**
+	 * The electric potential difference unit volt (V).
+	 * <p>
+	 * volt is equal to W/A or is expressed in SI units as m <sup>2
+	 * </sup>&#183;kg/s <sup>3 </sup>&#183;A
+	 */
+	public final static Unit	V			= new Unit("V", createType(0, 0, 0,
+													0, -1, 0, 1, -3, 2));			// El.
+	// Potent.
+	// volt
+	// (m^2*kg)/(s^3*A)
+	/**
+	 * The capacitance unit farad (F).
+	 * <p>
+	 * farad is equal to C/V or is expressed in SI units as s <sup>4
+	 * </sup>&#183;A <sup>2 </sup>/m <sup>2 </sup>&#183;kg
+	 */
+	public final static Unit	F			= new Unit("F", createType(0, 0, 0,
+													0, 2, 0, -1, 4, -2));			// Capacitance
+	// farad
+	// (s^4*A^2)/(m^2*kg)
+	/**
+	 * The electric resistance unit ohm.
+	 * <p>
+	 * ohm is equal to V/A or is expressed in SI units as m <sup>2
+	 * </sup>&#183;kg/s <sup>3 </sup>&#183;A <sup>2 </sup>
+	 */
+	public final static Unit	Ohm			= new Unit("Ohm", createType(0, 0,
+													0, 0, -2, 0, 1, -3, 2));		// Resistance
+	// ohm
+	// (m^2*kg)/(s^3*A^2)
+	/**
+	 * The electric conductance unit siemens (S).
+	 * <p>
+	 * siemens is equal to A/V or is expressed in SI units as s <sup>3
+	 * </sup>&#183;A <sup>2 </sup>/m <sup>2 </sup>&#183;kg
+	 */
+	public final static Unit	S			= new Unit("S", createType(0, 0, 0,
+													0, 2, 0, -1, 3, -2));			// Conductance
+	// siemens
+	// (s^3*A^2)/(m^2*kg)
+	/**
+	 * The magnetic flux unit weber (Wb).
+	 * <p>
+	 * weber is equal to V&#183;s or is expressed in SI units as m <sup>2
+	 * </sup>&#183;kg/s <sup>2 </sup>&#183;A
+	 */
+	public final static Unit	Wb			= new Unit("Wb", createType(0, 0,
+													0, 0, -1, 0, 1, -2, 2));		// Magn.
+	// Flux
+	// weber
+	// (m^2*kg)/(s^2*A)
+	/**
+	 * The magnetic flux density unit tesla (T).
+	 * <p>
+	 * tesla is equal to Wb/m <sup>2 </sup> or is expressed in SI units as kg/s
+	 * <sup>2 </sup>&#183;A
+	 */
+	public final static Unit	T			= new Unit("T", createType(0, 0, 0,
+													0, -1, 0, 1, -2, 0));			// Magn.
+	// Flux
+	// Dens.
+	// tesla
+	// kg/(s^2*A)
+	/**
+	 * The illuminance unit lux (lx).
+	 * <p>
+	 * lux is expressed in SI units as cd/m <sup>2 </sup>
+	 */
+	public final static Unit	lx			= new Unit("lx", createType(0, 0,
+													1, 0, 0, 0, 0, 0, -2));		// Illuminace
+	// lux
+	// cd/m^2
+	/**
+	 * The absorbed dose unit gray (Gy).
+	 * <p>
+	 * Gy is equal to J/kg or is expressed in SI units as m <sup>2 </sup>/s
+	 * <sup>2 </sup>
+	 */
+	public final static Unit	Gy			= new Unit("Gy", createType(0, 0,
+													0, 0, 0, 0, 0, -2, 2));		// Absorbed
+	// dose
+	// gray
+	// m^2/s^2
+	/**
+	 * The catalytic activity unit katal (kat).
+	 * <p>
+	 * katal is expressed in SI units as mol/s
+	 */
+	public final static Unit	kat			= new Unit("kat", createType(0, 0,
+													0, 1, 0, 0, 0, -1, 0));		// Catalytic
+	// Act.
+	// katal
+	// mol/s
+	/** The angle unit radians (rad) */
+	public final static Unit	rad			= new Unit("rad", createType(0, 1,
+													0, 0, 0, 0, 0, 0, 0));			// Angle
+	// radians
+	// rad
+	/**
+	 * An array containing all units defined. The first seven items must be m,
+	 * s, kg, K, A, mol, cd, rad in this order!
+	 */
+	private final static Unit[]	allUnits	= new Unit[] {m, s, kg, K, A, mol,
+			cd, rad, m_s, m_s2, m2, m3, Hz, N, Pa, J, W, C, V, F, Ohm, S, Wb,
+			T, lx, Gy, kat, unity			};
+	
+	/* @GuardedBy("this") */
+	private static Hashtable	base;
+	private final String		name;
+	private final long			type;
+
+	/**
+	 * Creates a new <code>Unit</code> instance.
+	 * 
+	 * @param name the name of the <code>Unit</code>
+	 * @param type the type of the <code>Unit</code>
+	 */
+	private Unit(String name, long type) {
+		if (name == null) {
+			name = computeName(type);
+		}
+		this.name = name;
+		this.type = type;
+		//System.out.println( name + " " + Long.toHexString( type ) );
+	}
+
+	/**
+	 * Create a type field from the base SI unit exponent values.
+	 *  
+	 */
+	private static long createType(int x, int rad, int cd, int mol, int A,
+			int K, int kg, int s, int m) {
+		return (((ZERO + m) & MASK) << m_SHIFT)
+				| (((ZERO + s) & MASK) << s_SHIFT)
+				| (((ZERO + kg) & MASK) << kg_SHIFT)
+				| (((ZERO + K) & MASK) << K_SHIFT)
+				| (((ZERO + A) & MASK) << A_SHIFT)
+				| (((ZERO + mol) & MASK) << mol_SHIFT)
+				| (((ZERO + cd) & MASK) << cd_SHIFT)
+				| (((ZERO + rad) & MASK) << rad_SHIFT)
+				| (((long) x) << x_SHIFT);
+	}
+
+	/**
+	 * Checks whether this <code>Unit</code> object is equal to the specified
+	 * <code>Unit</code> object. The <code>Unit</code> objects are considered equal
+	 * if their exponents are equal.
+	 * 
+	 * @param obj the <code>Unit</code> object that should be checked for equality
+	 * 
+	 * @return true if the specified <code>Unit</code> object is equal to this
+	 *         <code>Unit</code> object.
+	 */
+	public boolean equals(Object obj) {
+		if (this == obj) {
+			return true;
+		}
+		if (!(obj instanceof Unit)) {
+			return false;
+		}
+		return ((Unit) obj).type == type;
+	}
+
+	/**
+	 * Returns the hash code for this object.
+	 * 
+	 * @return This object's hash code.
+	 */
+	public int hashCode() {
+		return 31 * 17 + (int) (type ^ (type >>> 32));
+	}
+
+	/**
+	 * Returns a new <code>Unit</code> that is the multiplication of this
+	 * <code>Unit</code> and the <code>Unit</code> specified
+	 * 
+	 * @param that the <code>Unit</code> that will be multiplied with this
+	 *        <code>Unit</code>
+	 * 
+	 * @return a new <code>Unit</code> that is the multiplication of this
+	 *         <code>Unit</code> and the <code>Unit</code> specified
+	 * 
+	 * @throws RuntimeException if both <code>Unit</code> s are special
+	 * 
+	 * @see Unit#isSpecial
+	 */
+	Unit mul(Unit that) {
+		if (this.isSpecial() && that.isSpecial()) {
+			throw new ArithmeticException("Cannot multiply " + this + " with "
+					+ that);
+		}
+		return find(this.type - UNITY + that.type);
+	}
+
+	/**
+	 * Returns a new <code>Unit</code> that is the division of this <code>Unit</code>
+	 * and the <code>Unit</code> specified
+	 * 
+	 * @param that the <code>Unit</code> that this <code>Unit</code> will be divided
+	 *        with
+	 * @return a new <code>Unit</code> that is the division of this <code>Unit</code>
+	 *         and the <code>Unit</code> specified
+	 * 
+	 * @throws RuntimeException if both <code>Unit</code> s are special
+	 * 
+	 * @see Unit#isSpecial
+	 */
+	Unit div(Unit that) {
+		if (this.isSpecial() && that.isSpecial()) {
+			if (this.type == that.type) {
+				return Unit.unity;
+			}
+			throw new ArithmeticException("Cannot divide " + this + " by "
+					+ that);
+		}
+		return find(this.type - that.type + UNITY);
+	}
+
+	/**
+	 * Returns a new <code>Unit</code> that is the addition of this <code>Unit</code>
+	 * and the <code>Unit</code> specified.
+	 * 
+	 * @param that the <code>Unit</code> that should be added to this
+	 *        <code>Unit</code>
+	 * 
+	 * @return a new <code>Unit</code> that is the addition of this <code>Unit</code>
+	 *         and the <code>Unit</code> specified.
+	 * 
+	 * @throws RuntimeException if the two <code>Unit</code> s are not the same
+	 */
+	Unit add(Unit that) {
+		if (!this.equals(that)) {
+			throw new ArithmeticException("Cannot add " + this + " to " + that);
+		}
+		return this;
+	}
+
+	/**
+	 * Returns a new <code>Unit</code> that is the subtraction between this
+	 * <code>Unit</code> and the <code>Unit</code> specified.
+	 * 
+	 * @param that the <code>Unit</code> that will be subtracted from this
+	 *        <code>Unit</code>
+	 * @return a new <code>Unit</code> that is the subtraction between this
+	 *         <code>Unit</code> and the <code>Unit</code> specified.
+	 * 
+	 * @throws RuntimeException if the <code>Unit</code> specified is not the same
+	 *         as this <code>Unit</code>
+	 */
+	Unit sub(Unit that) {
+		if (!this.equals(that)) {
+			throw new ArithmeticException("Cannot subtract " + that + " from "
+					+ this);
+		}
+		return this;
+	}
+
+	/**
+	 * Finds a <code>Unit</code> based on a type. If the <code>Unit</code> is not
+	 * found, it will be created and added to the list of all units under a null
+	 * name.
+	 * 
+	 * @param type the type of the <code>Unit</code> to find
+	 * 
+	 * @return the <code>Unit</code>
+	 */
+	static synchronized Unit find(long type) {
+		if (base == null) {
+			int size = allUnits.length;
+			base = new Hashtable(size << 1);
+			for (int i = 0; i < size; i++) {
+				base.put(allUnits[i], allUnits[i]);
+			}
+		}
+		Unit unit = new Unit(null, type);
+		Unit out = (Unit) base.get(unit);
+		if (out == null) {
+			base.put(unit, unit);
+			out = unit;
+		}
+		return out;
+	}
+
+	/**
+	 * Returns a <code>String</code> object representing the <code>Unit</code>
+	 * 
+	 * @return A <code>String</code> object representing the <code>Unit</code>
+	 */
+	public String toString() {
+		return name;
+	}
+
+	private static String computeName(long type) {
+		int m = (int) (((type >> m_SHIFT) & MASK) - ZERO);
+		int s = (int) (((type >> s_SHIFT) & MASK) - ZERO);
+		int kg = (int) (((type >> kg_SHIFT) & MASK) - ZERO);
+		int K = (int) (((type >> K_SHIFT) & MASK) - ZERO);
+		int A = (int) (((type >> A_SHIFT) & MASK) - ZERO);
+		int mol = (int) (((type >> mol_SHIFT) & MASK) - ZERO);
+		int cd = (int) (((type >> cd_SHIFT) & MASK) - ZERO);
+		int rad = (int) (((type >> rad_SHIFT) & MASK) - ZERO);
+		StringBuffer numerator = new StringBuffer();
+		StringBuffer denominator = new StringBuffer();
+		addSIname(m, "m", numerator, denominator);
+		addSIname(s, "s", numerator, denominator);
+		addSIname(kg, "kg", numerator, denominator);
+		addSIname(K, "K", numerator, denominator);
+		addSIname(A, "A", numerator, denominator);
+		addSIname(mol, "mol", numerator, denominator);
+		addSIname(cd, "cd", numerator, denominator);
+		addSIname(rad, "rad", numerator, denominator);
+		if (denominator.length() > 0) {
+			if (numerator.length() == 0) {
+				numerator.append("1");
+			}
+			numerator.append("/");
+			numerator.append(denominator.toString()); 
+		}
+		return numerator.toString();
+	}
+	
+	private static void addSIname(int si, String name, StringBuffer numerator,
+			StringBuffer denominator) {
+		if (si != 0) {
+			StringBuffer sb = (si > 0) ? numerator : denominator;
+			if (sb.length() > 0) {
+				sb.append("*");
+			}
+			sb.append(name);
+			int power = Math.abs(si);
+			if (power > 1) {
+				sb.append("^");
+				sb.append(power);
+			}
+		}
+	}
+
+	/**
+	 * Checks whether the unit has a special type, i.e. not a SI unit.
+	 * 
+	 * @return true if the type is special, otherwise false.
+	 */
+	private boolean isSpecial() {
+		return (type & x_MASK) != 0;
+	}
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/measurement/package.html b/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/measurement/package.html
new file mode 100644
index 0000000..2eb3a8c
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/measurement/package.html
@@ -0,0 +1,10 @@
+<!-- $Revision: 6204 $ -->
+<BODY>
+<p>Measurement Package Version 1.0.
+<p>Bundles wishing to use this package must list the package
+in the Import-Package header of the bundle's manifest.
+For example:
+<pre>
+Import-Package: org.osgi.util.measurement; version=&quot;[1.0,2.0)&quot;
+</pre>
+</BODY>
diff --git a/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/measurement/packageinfo b/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/measurement/packageinfo
new file mode 100644
index 0000000..c266447
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/measurement/packageinfo
@@ -0,0 +1 @@
+version 1.0.1
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/position/Position.java b/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/position/Position.java
new file mode 100644
index 0000000..5fe3e0f
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/position/Position.java
@@ -0,0 +1,240 @@
+/*
+ * Copyright (c) OSGi Alliance (2002, 2009). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.osgi.util.position;
+
+import org.osgi.util.measurement.Measurement;
+import org.osgi.util.measurement.Unit;
+
+/**
+ * Position represents a geographic location, based on the WGS84 System (World
+ * Geodetic System 1984).
+ * <p>
+ * The <code>org.osgi.util.measurement.Measurement</code> class is used to
+ * represent the values that make up a position.
+ * <p>
+ * <p>
+ * A given position object may lack any of it's components, i.e. the altitude
+ * may not be known. Such missing values will be represented by null.
+ * <p>
+ * Position does not override the implementation of either equals() or
+ * hashCode() because it is not clear how missing values should be handled. It
+ * is up to the user of a position to determine how best to compare two position
+ * objects. A <code>Position</code> object is immutable.
+ * 
+ * @Immutable
+ * @version $Revision: 6860 $
+ */
+public class Position {
+	private final Measurement	altitude;
+	private final Measurement	longitude;
+	private final Measurement	latitude;
+	private final Measurement	speed;
+	private final Measurement	track;
+
+	/**
+	 * Constructs a <code>Position</code> object with the given values.
+	 * 
+	 * @param lat a <code>Measurement</code> object specifying the latitude in
+	 *        radians, or null
+	 * @param lon a <code>Measurement</code> object specifying the longitude in
+	 *        radians, or null
+	 * @param alt a <code>Measurement</code> object specifying the altitude in
+	 *        meters, or null
+	 * @param speed a <code>Measurement</code> object specifying the speed in
+	 *        meters per second, or null
+	 * @param track a <code>Measurement</code> object specifying the track in
+	 *        radians, or null
+	 */
+	public Position(Measurement lat, Measurement lon, Measurement alt,
+			Measurement speed, Measurement track) {
+		if (lat != null) {
+			if (!Unit.rad.equals(lat.getUnit())) {
+				throw new IllegalArgumentException("Invalid Latitude");
+			}
+		}
+		if (lon != null) {
+			if (!Unit.rad.equals(lon.getUnit())) {
+				throw new IllegalArgumentException("Invalid Longitude");
+			}
+		}
+		if (alt != null) {
+			if (!Unit.m.equals(alt.getUnit())) {
+				throw new IllegalArgumentException("Invalid Altitude");
+			}
+		}
+		if (speed != null) {
+			if (!Unit.m_s.equals(speed.getUnit())) {
+				throw new IllegalArgumentException("Invalid Speed");
+			}
+		}
+		if (track != null) {
+			if (!Unit.rad.equals(track.getUnit())) {
+				throw new IllegalArgumentException("Invalid Track");
+			}
+		}
+
+		/*
+		 * Verify the longitude and latitude parameters so they fit the normal
+		 * coordinate system. A latitude is between -90 (south) and +90 (north).
+		 * A longitude is between -180 (Western hemisphere) and +180 (eastern
+		 * hemisphere). This method first normalizes the latitude and longitude
+		 * between +/- 180. If the |latitude| > 90, then the longitude is added
+		 * 180 and the latitude is normalized to fit +/-90. (Example are with
+		 * degrees though radians are used) <br> No normalization takes place
+		 * when either lon or lat is null.
+		 */
+		normalizeLatLon: {
+			if (lat == null || lon == null) {
+				break normalizeLatLon;
+			}
+			double dlat = lat.getValue();
+			double dlon = lon.getValue();
+			if (dlon >= -LON_RANGE && dlon < LON_RANGE && dlat >= -LAT_RANGE
+					&& dlat <= LAT_RANGE) {
+				break normalizeLatLon;
+			}
+			dlon = normalize(dlon, LON_RANGE);
+			dlat = normalize(dlat, LAT_RANGE * 2.0D); // First over 180 degree
+			// Check if we have to move to other side of the earth
+			if (dlat > LAT_RANGE || dlat < -LAT_RANGE) {
+				dlon = normalize(dlon - LON_RANGE, LON_RANGE);
+				dlat = normalize((LAT_RANGE * 2.0D) - dlat, LAT_RANGE);
+			}
+			lon = new Measurement(dlon, lon.getError(), lon.getUnit(), lon
+					.getTime());
+			lat = new Measurement(dlat, lat.getError(), lat.getUnit(), lat
+					.getTime());
+		}
+
+		/*
+		 * Normalize track to be a value such that: 0 <= value < +2PI. This
+		 * corresponds to 0 deg to +360 deg. 0 is North, 0.5PI is East, PI is
+		 * South, 1.5PI is West
+		 */
+		normalizeTrack: {
+			if (track == null) {
+				break normalizeTrack;
+			}
+			double dtrack = track.getValue();
+			if ((0.0D <= dtrack) && (dtrack < TRACK_RANGE)) {
+				break normalizeTrack; /* value is already normalized */
+			}
+			dtrack %= TRACK_RANGE;
+			if (dtrack < 0.0D) {
+				dtrack += TRACK_RANGE;
+			}
+			track = new Measurement(dtrack, track.getError(), track.getUnit(),
+					track.getTime());
+		}
+
+		this.latitude = lat;
+		this.longitude = lon;
+		this.altitude = alt;
+		this.speed = speed;
+		this.track = track;
+	}
+
+	/**
+	 * Returns the altitude of this position in meters.
+	 * 
+	 * @return a <code>Measurement</code> object in <code>Unit.m</code> representing
+	 *         the altitude in meters above the ellipsoid <code>null</code> if the
+	 *         altitude is not known.
+	 */
+	public Measurement getAltitude() {
+		return altitude;
+	}
+
+	/**
+	 * Returns the longitude of this position in radians.
+	 * 
+	 * @return a <code>Measurement</code> object in <code>Unit.rad</code>
+	 *         representing the longitude, or <code>null</code> if the longitude
+	 *         is not known.
+	 */
+	public Measurement getLongitude() {
+		return longitude;
+	}
+
+	/**
+	 * Returns the latitude of this position in radians.
+	 * 
+	 * @return a <code>Measurement</code> object in <code>Unit.rad</code>
+	 *         representing the latitude, or <code>null</code> if the latitude is
+	 *         not known..
+	 */
+	public Measurement getLatitude() {
+		return latitude;
+	}
+
+	/**
+	 * Returns the ground speed of this position in meters per second.
+	 * 
+	 * @return a <code>Measurement</code> object in <code>Unit.m_s</code>
+	 *         representing the speed, or <code>null</code> if the speed is not
+	 *         known..
+	 */
+	public Measurement getSpeed() {
+		return speed;
+	}
+
+	/**
+	 * Returns the track of this position in radians as a compass heading. The
+	 * track is the extrapolation of previous previously measured positions to a
+	 * future position.
+	 * 
+	 * @return a <code>Measurement</code> object in <code>Unit.rad</code>
+	 *         representing the track, or <code>null</code> if the track is not
+	 *         known..
+	 */
+	public Measurement getTrack() {
+		return track;
+	}
+
+	private static final double	LON_RANGE	= Math.PI;
+	private static final double	LAT_RANGE	= Math.PI / 2.0D;
+
+	/**
+	 * This function normalizes the a value according to a range. This is not
+	 * simple modulo (as I thought when I started), but requires some special
+	 * handling. For positive numbers we subtract 2*range from the number so
+	 * that end up between -/+ range. For negative numbers we add this value.
+	 * For example, if the value is 270 and the range is +/- 180. Then sign=1 so
+	 * the (int) factor becomes 270+180/360 = 1. This means that 270-360=-90 is
+	 * the result. (degrees are only used to make it easier to understand, this
+	 * function is agnostic for radians/degrees). The result will be in
+	 * [range,range&gt; The algorithm is not very fast, but it handling the
+	 * [&gt; ranges made it very messy using integer arithmetic, and this is
+	 * very readable. Note that it is highly unlikely that this method is called
+	 * in normal situations. Normally input values to position are already
+	 * normalized because they come from a GPS. And this is much more readable.
+	 * 
+	 * @param value The value that needs adjusting
+	 * @param range -range = < value < range
+	 */
+	private static double normalize(double value, double range) {
+		double twiceRange = 2.0D * range;
+		while (value >= range) {
+			value -= twiceRange;
+		}
+		while (value < -range) {
+			value += twiceRange;
+		}
+		return value;
+	}
+
+	private static final double	TRACK_RANGE	= Math.PI * 2.0D;
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/position/package.html b/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/position/package.html
new file mode 100644
index 0000000..d0d745f
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/position/package.html
@@ -0,0 +1,10 @@
+<!-- $Revision: 6204 $ -->
+<BODY>
+<p>Position Package Version 1.0.
+<p>Bundles wishing to use this package must list the package
+in the Import-Package header of the bundle's manifest.
+For example:
+<pre>
+Import-Package: org.osgi.util.position; version=&quot;[1.0,2.0)&quot;
+</pre>
+</BODY>
diff --git a/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/position/packageinfo b/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/position/packageinfo
new file mode 100644
index 0000000..c266447
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/position/packageinfo
@@ -0,0 +1 @@
+version 1.0.1
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/xml/XMLParserActivator.java b/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/xml/XMLParserActivator.java
new file mode 100644
index 0000000..963c092
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/xml/XMLParserActivator.java
@@ -0,0 +1,513 @@
+/*
+ * Copyright (c) OSGi Alliance (2002, 2008). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.util.xml;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.FactoryConfigurationError;
+import javax.xml.parsers.SAXParserFactory;
+
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
+import org.osgi.framework.ServiceFactory;
+import org.osgi.framework.ServiceReference;
+import org.osgi.framework.ServiceRegistration;
+
+/**
+ * A BundleActivator class that allows any JAXP compliant XML Parser to register
+ * itself as an OSGi parser service.
+ * 
+ * Multiple JAXP compliant parsers can concurrently register by using this
+ * BundleActivator class. Bundles who wish to use an XML parser can then use the
+ * framework's service registry to locate available XML Parsers with the desired
+ * characteristics such as validating and namespace-aware.
+ * 
+ * <p>
+ * The services that this bundle activator enables a bundle to provide are:
+ * <ul>
+ * <li><code>javax.xml.parsers.SAXParserFactory</code>({@link #SAXFACTORYNAME})
+ * <li><code>javax.xml.parsers.DocumentBuilderFactory</code>(
+ * {@link #DOMFACTORYNAME})
+ * </ul>
+ * 
+ * <p>
+ * The algorithm to find the implementations of the abstract parsers is derived
+ * from the JAR file specifications, specifically the Services API.
+ * <p>
+ * An XMLParserActivator assumes that it can find the class file names of the
+ * factory classes in the following files:
+ * <ul>
+ * <li><code>/META-INF/services/javax.xml.parsers.SAXParserFactory</code> is a
+ * file contained in a jar available to the runtime which contains the
+ * implementation class name(s) of the SAXParserFactory.
+ * <li><code>/META-INF/services/javax.xml.parsers.DocumentBuilderFactory</code>
+ * is a file contained in a jar available to the runtime which contains the
+ * implementation class name(s) of the <code>DocumentBuilderFactory</code>
+ * </ul>
+ * <p>
+ * If either of the files does not exist, <code>XMLParserActivator</code>
+ * assumes that the parser does not support that parser type.
+ * 
+ * <p>
+ * <code>XMLParserActivator</code> attempts to instantiate both the
+ * <code>SAXParserFactory</code> and the <code>DocumentBuilderFactory</code>. It
+ * registers each factory with the framework along with service properties:
+ * <ul>
+ * <li>{@link #PARSER_VALIDATING}- indicates if this factory supports validating
+ * parsers. It's value is a <code>Boolean</code>.
+ * <li>{@link #PARSER_NAMESPACEAWARE}- indicates if this factory supports
+ * namespace aware parsers It's value is a <code>Boolean</code>.
+ * </ul>
+ * <p>
+ * Individual parser implementations may have additional features, properties,
+ * or attributes which could be used to select a parser with a filter. These can
+ * be added by extending this class and overriding the
+ * <code>setSAXProperties</code> and <code>setDOMProperties</code> methods.
+ * 
+ * @ThreadSafe
+ * @version $Revision: 5900 $
+ */
+public class XMLParserActivator implements BundleActivator, ServiceFactory {
+	/** Context of this bundle */
+	private volatile BundleContext	context;
+	/**
+	 * Filename containing the SAX Parser Factory Class name. Also used as the
+	 * basis for the <code>SERVICE_PID<code> registration property.
+	 */
+	public static final String		SAXFACTORYNAME			= "javax.xml.parsers.SAXParserFactory";
+	/**
+	 * Filename containing the DOM Parser Factory Class name. Also used as the
+	 * basis for the <code>SERVICE_PID</code> registration property.
+	 */
+	public static final String		DOMFACTORYNAME			= "javax.xml.parsers.DocumentBuilderFactory";
+	/** Path to the factory class name files */
+	private static final String		PARSERCLASSFILEPATH		= "/META-INF/services/";
+	/** Fully qualified path name of SAX Parser Factory Class Name file */
+	public static final String		SAXCLASSFILE			= PARSERCLASSFILEPATH
+																	+ SAXFACTORYNAME;
+	/** Fully qualified path name of DOM Parser Factory Class Name file */
+	public static final String		DOMCLASSFILE			= PARSERCLASSFILEPATH
+																	+ DOMFACTORYNAME;
+	/** SAX Factory Service Description */
+	private static final String		SAXFACTORYDESCRIPTION	= "A JAXP Compliant SAX Parser";
+	/** DOM Factory Service Description */
+	private static final String		DOMFACTORYDESCRIPTION	= "A JAXP Compliant DOM Parser";
+	/**
+	 * Service property specifying if factory is configured to support
+	 * validating parsers. The value is of type <code>Boolean</code>.
+	 */
+	public static final String		PARSER_VALIDATING		= "parser.validating";
+	/**
+	 * Service property specifying if factory is configured to support namespace
+	 * aware parsers. The value is of type <code>Boolean</code>.
+	 */
+	public static final String		PARSER_NAMESPACEAWARE	= "parser.namespaceAware";
+	/**
+	 * Key for parser factory name property - this must be saved in the parsers
+	 * properties hashtable so that the parser factory can be instantiated from
+	 * a ServiceReference
+	 */
+	private static final String		FACTORYNAMEKEY			= "parser.factoryname";
+
+	/**
+	 * Called when this bundle is started so the Framework can perform the
+	 * bundle-specific activities necessary to start this bundle. This method
+	 * can be used to register services or to allocate any resources that this
+	 * bundle needs.
+	 * 
+	 * <p>
+	 * This method must complete and return to its caller in a timely manner.
+	 * 
+	 * <p>
+	 * This method attempts to register a SAX and DOM parser with the
+	 * Framework's service registry.
+	 * 
+	 * @param context The execution context of the bundle being started.
+	 * @throws java.lang.Exception If this method throws an exception, this
+	 *         bundle is marked as stopped and the Framework will remove this
+	 *         bundle's listeners, unregister all services registered by this
+	 *         bundle, and release all services used by this bundle.
+	 */
+	public void start(BundleContext context) throws Exception {
+		this.context = context;
+		Bundle parserBundle = context.getBundle();
+		// check for sax parsers
+		registerSAXParsers(getParserFactoryClassNames(parserBundle
+				.getResource(SAXCLASSFILE)));
+		// check for dom parsers
+		registerDOMParsers(getParserFactoryClassNames(parserBundle
+				.getResource(DOMCLASSFILE)));
+	}
+
+	/**
+	 * This method has nothing to do as all active service registrations will
+	 * automatically get unregistered when the bundle stops.
+	 * 
+	 * @param context The execution context of the bundle being stopped.
+	 * @throws java.lang.Exception If this method throws an exception, the
+	 *         bundle is still marked as stopped, and the Framework will remove
+	 *         the bundle's listeners, unregister all services registered by the
+	 *         bundle, and release all services used by the bundle.
+	 */
+	public void stop(BundleContext context) throws Exception {
+		// framework will automatically unregister the parser services
+	}
+
+	/**
+	 * Given the URL for a file, reads and returns the parser class names. There
+	 * may be multiple classes specified in this file, one per line. There may
+	 * also be comment lines in the file, which begin with "#".
+	 * 
+	 * @param parserUrl The URL of the service file containing the parser class
+	 *        names
+	 * @return A List of strings containing the parser class names.
+	 * @throws IOException if there is a problem reading the URL input stream
+	 */
+	private List getParserFactoryClassNames(URL parserUrl) throws IOException {
+		if (parserUrl == null) {
+			return Collections.EMPTY_LIST;
+		}
+		List v = new ArrayList(1);
+		String parserFactoryClassName = null;
+		InputStream is = parserUrl.openStream();
+		BufferedReader br = new BufferedReader(new InputStreamReader(is));
+		while (true) {
+			parserFactoryClassName = br.readLine();
+			if (parserFactoryClassName == null) {
+				break; // end of file reached
+			}
+			String pfcName = parserFactoryClassName.trim();
+			if (pfcName.length() == 0) {
+				continue; // blank line
+			}
+			int commentIdx = pfcName.indexOf("#");
+			if (commentIdx == 0) { // comment line
+				continue;
+			}
+			else
+				if (commentIdx < 0) { // no comment on this line
+					v.add(pfcName);
+				}
+				else {
+					v.add(pfcName.substring(0, commentIdx).trim());
+				}
+		}
+		return v;
+	}
+
+	/**
+	 * Register SAX Parser Factory Services with the framework.
+	 * 
+	 * @param parserFactoryClassNames - a <code>List</code> of
+	 *        <code>String</code> objects containing the names of the parser
+	 *        Factory Classes
+	 * @throws FactoryConfigurationError if thrown from <code>getFactory</code>
+	 */
+	private void registerSAXParsers(List parserFactoryClassNames)
+			throws FactoryConfigurationError {
+		Iterator e = parserFactoryClassNames.iterator();
+		int index = 0;
+		while (e.hasNext()) {
+			String parserFactoryClassName = (String) e.next();
+			// create a sax parser factory just to get it's default
+			// properties. It will never be used since
+			// this class will operate as a service factory and give each
+			// service requestor it's own SaxParserFactory
+			SAXParserFactory factory = (SAXParserFactory) getFactory(parserFactoryClassName);
+			Hashtable properties = new Hashtable(7);
+			// figure out the default properties of the parser
+			setDefaultSAXProperties(factory, properties, index);
+			// store the parser factory class name in the properties so that
+			// it can be retrieved when getService is called
+			// to return a parser factory
+			properties.put(FACTORYNAMEKEY, parserFactoryClassName);
+			// register the factory as a service
+			context.registerService(SAXFACTORYNAME, this, properties);
+			index++;
+		}
+	}
+
+	/**
+	 * <p>
+	 * Set the SAX Parser Service Properties. By default, the following
+	 * properties are set:
+	 * <ul>
+	 * <li><code>SERVICE_DESCRIPTION</code>
+	 * <li><code>SERVICE_PID</code>
+	 * <li><code>PARSER_VALIDATING</code>- instantiates a parser and queries
+	 * it to find out whether it is validating or not
+	 * <li><code>PARSER_NAMESPACEAWARE</code>- instantiates a parser and
+	 * queries it to find out whether it is namespace aware or not
+	 * <ul>
+	 * 
+	 * @param factory The <code>SAXParserFactory</code> object
+	 * @param props <code>Hashtable</code> of service properties.
+	 */
+	private void setDefaultSAXProperties(SAXParserFactory factory,
+			Hashtable props, int index) {
+		props.put(Constants.SERVICE_DESCRIPTION, SAXFACTORYDESCRIPTION);
+		props.put(Constants.SERVICE_PID, SAXFACTORYNAME + "."
+				+ context.getBundle().getBundleId() + "." + index);
+		setSAXProperties(factory, props);
+	}
+
+	/**
+	 * <p>
+	 * Set the customizable SAX Parser Service Properties.
+	 * 
+	 * <p>
+	 * This method attempts to instantiate a validating parser and a namespace
+	 * aware parser to determine if the parser can support those features. The
+	 * appropriate properties are then set in the specified properties object.
+	 * 
+	 * <p>
+	 * This method can be overridden to add additional SAX2 features and
+	 * properties. If you want to be able to filter searches of the OSGi service
+	 * registry, this method must put a key, value pair into the properties
+	 * object for each feature or property. For example,
+	 * 
+	 * properties.put("http://www.acme.com/features/foo", Boolean.TRUE);
+	 * 
+	 * @param factory - the SAXParserFactory object
+	 * @param properties - the properties object for the service
+	 */
+	public void setSAXProperties(SAXParserFactory factory, Hashtable properties) {
+		// check if this parser can be configured to validate
+		boolean validating = true;
+		factory.setValidating(true);
+		factory.setNamespaceAware(false);
+		try {
+			factory.newSAXParser();
+		}
+		catch (Exception pce_val) {
+			validating = false;
+		}
+		// check if this parser can be configured to be namespaceaware
+		boolean namespaceaware = true;
+		factory.setValidating(false);
+		factory.setNamespaceAware(true);
+		try {
+			factory.newSAXParser();
+		}
+		catch (Exception pce_nsa) {
+			namespaceaware = false;
+		}
+		// set the factory values
+		factory.setValidating(validating);
+		factory.setNamespaceAware(namespaceaware);
+		// set the OSGi service properties
+		properties.put(PARSER_NAMESPACEAWARE, new Boolean(namespaceaware));
+		properties.put(PARSER_VALIDATING, new Boolean(validating));
+	}
+
+	/**
+	 * Register DOM Parser Factory Services with the framework.
+	 * 
+	 * @param parserFactoryClassNames - a <code>List</code> of
+	 *        <code>String</code> objects containing the names of the parser
+	 *        Factory Classes
+	 * @throws FactoryConfigurationError if thrown from <code>getFactory</code>
+	 */
+	private void registerDOMParsers(List parserFactoryClassNames)
+			throws FactoryConfigurationError {
+		Iterator e = parserFactoryClassNames.iterator();
+		int index = 0;
+		while (e.hasNext()) {
+			String parserFactoryClassName = (String) e.next();
+			// create a dom parser factory just to get it's default
+			// properties. It will never be used since
+			// this class will operate as a service factory and give each
+			// service requestor it's own DocumentBuilderFactory
+			DocumentBuilderFactory factory = (DocumentBuilderFactory) getFactory(parserFactoryClassName);
+			Hashtable properties = new Hashtable(7);
+			// figure out the default properties of the parser
+			setDefaultDOMProperties(factory, properties, index);
+			// store the parser factory class name in the properties so that
+			// it can be retrieved when getService is called
+			// to return a parser factory
+			properties.put(FACTORYNAMEKEY, parserFactoryClassName);
+			// register the factory as a service
+			context.registerService(DOMFACTORYNAME, this, properties);
+			index++;
+		}
+	}
+
+	/**
+	 * Set the DOM parser service properties.
+	 * 
+	 * By default, the following properties are set:
+	 * <ul>
+	 * <li><code>SERVICE_DESCRIPTION</code>
+	 * <li><code>SERVICE_PID</code>
+	 * <li><code>PARSER_VALIDATING</code>
+	 * <li><code>PARSER_NAMESPACEAWARE</code>
+	 * <ul>
+	 * 
+	 * @param factory The <code>DocumentBuilderFactory</code> object
+	 * @param props <code>Hashtable</code> of service properties.
+	 */
+	private void setDefaultDOMProperties(DocumentBuilderFactory factory,
+			Hashtable props, int index) {
+		props.put(Constants.SERVICE_DESCRIPTION, DOMFACTORYDESCRIPTION);
+		props.put(Constants.SERVICE_PID, DOMFACTORYNAME + "."
+				+ context.getBundle().getBundleId() + "." + index);
+		setDOMProperties(factory, props);
+	}
+
+	/**
+	 * <p>
+	 * Set the customizable DOM Parser Service Properties.
+	 * 
+	 * <p>
+	 * This method attempts to instantiate a validating parser and a namespace
+	 * aware parser to determine if the parser can support those features. The
+	 * appropriate properties are then set in the specified props object.
+	 * 
+	 * <p>
+	 * This method can be overridden to add additional DOM2 features and
+	 * properties. If you want to be able to filter searches of the OSGi service
+	 * registry, this method must put a key, value pair into the properties
+	 * object for each feature or property. For example,
+	 * 
+	 * properties.put("http://www.acme.com/features/foo", Boolean.TRUE);
+	 * 
+	 * @param factory - the DocumentBuilderFactory object
+	 * @param props - Hashtable of service properties.
+	 */
+	public void setDOMProperties(DocumentBuilderFactory factory, Hashtable props) {
+		// check if this parser can be configured to validate
+		boolean validating = true;
+		factory.setValidating(true);
+		factory.setNamespaceAware(false);
+		try {
+			factory.newDocumentBuilder();
+		}
+		catch (Exception pce_val) {
+			validating = false;
+		}
+		// check if this parser can be configured to be namespaceaware
+		boolean namespaceaware = true;
+		factory.setValidating(false);
+		factory.setNamespaceAware(true);
+		try {
+			factory.newDocumentBuilder();
+		}
+		catch (Exception pce_nsa) {
+			namespaceaware = false;
+		}
+		// set the factory values
+		factory.setValidating(validating);
+		factory.setNamespaceAware(namespaceaware);
+		// set the OSGi service properties
+		props.put(PARSER_VALIDATING, new Boolean(validating));
+		props.put(PARSER_NAMESPACEAWARE, new Boolean(namespaceaware));
+	}
+
+	/**
+	 * Given a parser factory class name, instantiate that class.
+	 * 
+	 * @param parserFactoryClassName A <code>String</code> object containing
+	 *        the name of the parser factory class
+	 * @return a parserFactoryClass Object
+	 * @pre parserFactoryClassName!=null
+	 */
+	private Object getFactory(String parserFactoryClassName)
+			throws FactoryConfigurationError {
+		try {
+			return context.getBundle().loadClass(parserFactoryClassName)
+					.newInstance();
+		}
+		catch (RuntimeException e) {
+			throw e;
+		}
+		catch (Exception e) {
+			throw new FactoryConfigurationError(e);
+		}
+	}
+
+	/**
+	 * Creates a new XML Parser Factory object.
+	 * 
+	 * <p>
+	 * A unique XML Parser Factory object is returned for each call to this
+	 * method.
+	 * 
+	 * <p>
+	 * The returned XML Parser Factory object will be configured for validating
+	 * and namespace aware support as specified in the service properties of the
+	 * specified ServiceRegistration object.
+	 * 
+	 * This method can be overridden to configure additional features in the
+	 * returned XML Parser Factory object.
+	 * 
+	 * @param bundle The bundle using the service.
+	 * @param registration The <code>ServiceRegistration</code> object for the
+	 *        service.
+	 * @return A new, configured XML Parser Factory object or null if a
+	 *         configuration error was encountered
+	 */
+	public Object getService(Bundle bundle, ServiceRegistration registration) {
+		ServiceReference sref = registration.getReference();
+		String parserFactoryClassName = (String) sref
+				.getProperty(FACTORYNAMEKEY);
+		// need to set factory properties
+		Object factory = getFactory(parserFactoryClassName);
+		if (factory instanceof SAXParserFactory) {
+			((SAXParserFactory) factory).setValidating(((Boolean) sref
+					.getProperty(PARSER_VALIDATING)).booleanValue());
+			((SAXParserFactory) factory).setNamespaceAware(((Boolean) sref
+					.getProperty(PARSER_NAMESPACEAWARE)).booleanValue());
+		}
+		else {
+			if (factory instanceof DocumentBuilderFactory) {
+				((DocumentBuilderFactory) factory)
+						.setValidating(((Boolean) sref
+								.getProperty(PARSER_VALIDATING)).booleanValue());
+				((DocumentBuilderFactory) factory)
+						.setNamespaceAware(((Boolean) sref
+								.getProperty(PARSER_NAMESPACEAWARE))
+								.booleanValue());
+			}
+		}
+		return factory;
+	}
+
+	/**
+	 * Releases a XML Parser Factory object.
+	 * 
+	 * @param bundle The bundle releasing the service.
+	 * @param registration The <code>ServiceRegistration</code> object for the
+	 *        service.
+	 * @param service The XML Parser Factory object returned by a previous call
+	 *        to the <code>getService</code> method.
+	 */
+	public void ungetService(Bundle bundle, ServiceRegistration registration,
+			Object service) {
+	}
+}
diff --git a/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/xml/package.html b/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/xml/package.html
new file mode 100644
index 0000000..e153322
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/xml/package.html
@@ -0,0 +1,10 @@
+<!-- $Revision: 6204 $ -->
+<BODY>
+<p>XML Parser Package Version 1.0.
+<p>Bundles wishing to use this package must list the package
+in the Import-Package header of the bundle's manifest.
+For example:
+<pre>
+Import-Package: org.osgi.util.xml; version=&quot;[1.0,2.0)&quot;
+</pre>
+</BODY>
diff --git a/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/xml/packageinfo b/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/xml/packageinfo
new file mode 100644
index 0000000..c266447
--- /dev/null
+++ b/eclipse/plugins/org.eclipse.osgi.util/src/org/osgi/util/xml/packageinfo
@@ -0,0 +1 @@
+version 1.0.1
\ No newline at end of file
diff --git a/eclipse/plugins/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/FilteredServiceListener.java b/eclipse/plugins/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/FilteredServiceListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceReferenceImpl.java b/eclipse/plugins/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceReferenceImpl.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceRegistrationImpl.java b/eclipse/plugins/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceRegistrationImpl.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceRegistry.java b/eclipse/plugins/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceRegistry.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceUse.java b/eclipse/plugins/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceUse.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools.ee.cdcfoundation10/src/org/eclipse/pde/api/tools/internal/api_stubs/CDC-1.0_Foundation-1.0.zip b/eclipse/plugins/org.eclipse.pde.api.tools.ee.cdcfoundation10/src/org/eclipse/pde/api/tools/internal/api_stubs/CDC-1.0_Foundation-1.0.zip
deleted file mode 100644
index 33b588d..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.api.tools.ee.cdcfoundation10/src/org/eclipse/pde/api/tools/internal/api_stubs/CDC-1.0_Foundation-1.0.zip and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools.ee.cdcfoundation11/src/org/eclipse/pde/api/tools/internal/api_stubs/CDC-1.1_Foundation-1.1.zip b/eclipse/plugins/org.eclipse.pde.api.tools.ee.cdcfoundation11/src/org/eclipse/pde/api/tools/internal/api_stubs/CDC-1.1_Foundation-1.1.zip
deleted file mode 100644
index 951ebde..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.api.tools.ee.cdcfoundation11/src/org/eclipse/pde/api/tools/internal/api_stubs/CDC-1.1_Foundation-1.1.zip and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools.ee.j2se12/src/org/eclipse/pde/api/tools/internal/api_stubs/J2SE-1.2.zip b/eclipse/plugins/org.eclipse.pde.api.tools.ee.j2se12/src/org/eclipse/pde/api/tools/internal/api_stubs/J2SE-1.2.zip
deleted file mode 100644
index 6adbaf6..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.api.tools.ee.j2se12/src/org/eclipse/pde/api/tools/internal/api_stubs/J2SE-1.2.zip and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools.ee.j2se13/src/org/eclipse/pde/api/tools/internal/api_stubs/J2SE-1.3.zip b/eclipse/plugins/org.eclipse.pde.api.tools.ee.j2se13/src/org/eclipse/pde/api/tools/internal/api_stubs/J2SE-1.3.zip
deleted file mode 100644
index 3705220..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.api.tools.ee.j2se13/src/org/eclipse/pde/api/tools/internal/api_stubs/J2SE-1.3.zip and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools.ee.j2se14/src/org/eclipse/pde/api/tools/internal/api_stubs/J2SE-1.4.zip b/eclipse/plugins/org.eclipse.pde.api.tools.ee.j2se14/src/org/eclipse/pde/api/tools/internal/api_stubs/J2SE-1.4.zip
deleted file mode 100644
index a15354d..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.api.tools.ee.j2se14/src/org/eclipse/pde/api/tools/internal/api_stubs/J2SE-1.4.zip and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools.ee.j2se15/src/org/eclipse/pde/api/tools/internal/api_stubs/J2SE-1.5.zip b/eclipse/plugins/org.eclipse.pde.api.tools.ee.j2se15/src/org/eclipse/pde/api/tools/internal/api_stubs/J2SE-1.5.zip
deleted file mode 100644
index 53ebebb..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.api.tools.ee.j2se15/src/org/eclipse/pde/api/tools/internal/api_stubs/J2SE-1.5.zip and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools.ee.javase16/src/org/eclipse/pde/api/tools/internal/api_stubs/JavaSE-1.6.zip b/eclipse/plugins/org.eclipse.pde.api.tools.ee.javase16/src/org/eclipse/pde/api/tools/internal/api_stubs/JavaSE-1.6.zip
deleted file mode 100644
index 7760505..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.api.tools.ee.javase16/src/org/eclipse/pde/api/tools/internal/api_stubs/JavaSE-1.6.zip and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools.ee.jre11/src/org/eclipse/pde/api/tools/internal/api_stubs/JRE-1.1.zip b/eclipse/plugins/org.eclipse.pde.api.tools.ee.jre11/src/org/eclipse/pde/api/tools/internal/api_stubs/JRE-1.1.zip
deleted file mode 100644
index 63f7098..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.api.tools.ee.jre11/src/org/eclipse/pde/api/tools/internal/api_stubs/JRE-1.1.zip and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools.ee.osgiminimum10/src/org/eclipse/pde/api/tools/internal/api_stubs/OSGi_Minimum-1.0.zip b/eclipse/plugins/org.eclipse.pde.api.tools.ee.osgiminimum10/src/org/eclipse/pde/api/tools/internal/api_stubs/OSGi_Minimum-1.0.zip
deleted file mode 100644
index dbf522a..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.api.tools.ee.osgiminimum10/src/org/eclipse/pde/api/tools/internal/api_stubs/OSGi_Minimum-1.0.zip and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools.ee.osgiminimum11/src/org/eclipse/pde/api/tools/internal/api_stubs/OSGi_Minimum-1.1.zip b/eclipse/plugins/org.eclipse.pde.api.tools.ee.osgiminimum11/src/org/eclipse/pde/api/tools/internal/api_stubs/OSGi_Minimum-1.1.zip
deleted file mode 100644
index 30f037d..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.api.tools.ee.osgiminimum11/src/org/eclipse/pde/api/tools/internal/api_stubs/OSGi_Minimum-1.1.zip and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools.ee.osgiminimum12/src/org/eclipse/pde/api/tools/internal/api_stubs/OSGi_Minimum-1.2.zip b/eclipse/plugins/org.eclipse.pde.api.tools.ee.osgiminimum12/src/org/eclipse/pde/api/tools/internal/api_stubs/OSGi_Minimum-1.2.zip
deleted file mode 100644
index 771dea4..0000000
Binary files a/eclipse/plugins/org.eclipse.pde.api.tools.ee.osgiminimum12/src/org/eclipse/pde/api/tools/internal/api_stubs/OSGi_Minimum-1.2.zip and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools.ui/icons/full/ovr16/warning_ovr.gif b/eclipse/plugins/org.eclipse.pde.api.tools.ui/icons/full/ovr16/warning_ovr.gif
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.api.tools/scripts/buildApiToolsAntSupportJar.xml b/eclipse/plugins/org.eclipse.pde.api.tools/scripts/buildApiToolsAntSupportJar.xml
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/AbstractBundleContainer.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/AbstractBundleContainer.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/AbstractTargetHandle.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/AbstractTargetHandle.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/DirectoryBundleContainer.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/DirectoryBundleContainer.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/FeatureBundleContainer.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/FeatureBundleContainer.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/LocalTargetHandle.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/LocalTargetHandle.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/Messages.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/Messages.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/Messages.properties b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/Messages.properties
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/ProfileBundleContainer.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/ProfileBundleContainer.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/ResolvedBundle.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/ResolvedBundle.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetDefinition.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetDefinition.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetDefinitionPersistenceHelper.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetDefinitionPersistenceHelper.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetPlatformService.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetPlatformService.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/WorkspaceFileTargetHandle.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/WorkspaceFileTargetHandle.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/util/VMUtil.java b/eclipse/plugins/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/util/VMUtil.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/concepts/target.htm b/eclipse/plugins/org.eclipse.pde.doc.user/concepts/target.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/category_editor/definition_page.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/category_editor/definition_page.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/product_editor/dependencies.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/product_editor/dependencies.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/product_editor/licensing.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/product_editor/licensing.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/target_editor/content_page.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/target_editor/content_page.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/target_editor/definition_page.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/target_editor/definition_page.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/target_editor/environment_page.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/target_editor/environment_page.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/target_editor/target_editor.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/editors/target_editor/target_editor.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/file_wizards/new_category.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/file_wizards/new_category.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/arguments.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/arguments.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/plugins.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/launchers/plugins.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/edit_target_arguments_tab.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/edit_target_arguments_tab.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/edit_target_content_tab.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/edit_target_content_tab.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/edit_target_environment_tab.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/edit_target_environment_tab.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/edit_target_implicit_tab.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/edit_target_implicit_tab.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/edit_target_locations_tab.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/edit_target_locations_tab.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/edit_target_wizard.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/edit_target_wizard.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/implicit_plugin_selection_dialog.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/implicit_plugin_selection_dialog.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/import_arguments_dialog.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/import_arguments_dialog.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/location_add_features_wizard.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/location_add_features_wizard.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/location_add_wizard.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/location_add_wizard.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/location_edit_directory_wizard.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/location_edit_directory_wizard.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/location_edit_feature_wizard.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/location_edit_feature_wizard.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/location_edit_installation_wizard.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/location_edit_installation_wizard.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/location_edit_site_wizard.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/location_edit_site_wizard.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/location_preview.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/location_preview.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/move_target_wizard.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/move_target_wizard.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/new_target_wizard.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/target_shared/new_target_wizard.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/views/target_platform_state.htm b/eclipse/plugins/org.eclipse.pde.doc.user/guide/tools/views/target_platform_state.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/apimigration-ant-task.htm b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/apimigration-ant-task.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/apimigration-reportconversion-ant-task.htm b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/apimigration-reportconversion-ant-task.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/deprecation-ant-task.htm b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/deprecation-ant-task.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/deprecation-reportconversion-ant-task.htm b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/ant-tasks/deprecation-reportconversion-ant-task.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/wizards/ref-apiuse-patterns-wizard.htm b/eclipse/plugins/org.eclipse.pde.doc.user/reference/api-tooling/wizards/ref-apiuse-patterns-wizard.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_compiler_options.htm b/eclipse/plugins/org.eclipse.pde.doc.user/tasks/pde_compiler_options.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ds.ui/icons/wizban/defcon_wiz.png b/eclipse/plugins/org.eclipse.pde.ds.ui/icons/wizban/defcon_wiz.png
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.runtime/icons/obj16/frgmt_obj.gif b/eclipse/plugins/org.eclipse.pde.runtime/icons/obj16/frgmt_obj.gif
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.runtime/icons/obj16/plugins_obj.gif b/eclipse/plugins/org.eclipse.pde.runtime/icons/obj16/plugins_obj.gif
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.core/.settings/org.eclipse.core.resources.prefs b/eclipse/plugins/org.eclipse.pde.ua.core/.settings/org.eclipse.core.resources.prefs
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.core/.settings/org.eclipse.pde.core.prefs b/eclipse/plugins/org.eclipse.pde.ua.core/.settings/org.eclipse.pde.core.prefs
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/.settings/org.eclipse.core.resources.prefs b/eclipse/plugins/org.eclipse.pde.ua.ui/.settings/org.eclipse.core.resources.prefs
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/.settings/org.eclipse.pde.core.prefs b/eclipse/plugins/org.eclipse.pde.ua.ui/.settings/org.eclipse.pde.core.prefs
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/icons/etool16/new_cheatsheet_wiz.gif b/eclipse/plugins/org.eclipse.pde.ua.ui/icons/etool16/new_cheatsheet_wiz.gif
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/icons/obj16/cheatsheet_composite_obj.gif b/eclipse/plugins/org.eclipse.pde.ua.ui/icons/obj16/cheatsheet_composite_obj.gif
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/icons/obj16/cheatsheet_conclusion_obj.gif b/eclipse/plugins/org.eclipse.pde.ua.ui/icons/obj16/cheatsheet_conclusion_obj.gif
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/icons/obj16/cheatsheet_intro_obj.gif b/eclipse/plugins/org.eclipse.pde.ua.ui/icons/obj16/cheatsheet_intro_obj.gif
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/icons/obj16/cheatsheet_item_obj.gif b/eclipse/plugins/org.eclipse.pde.ua.ui/icons/obj16/cheatsheet_item_obj.gif
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/icons/obj16/cheatsheet_obj.gif b/eclipse/plugins/org.eclipse.pde.ua.ui/icons/obj16/cheatsheet_obj.gif
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/icons/obj16/cheatsheet_simple_obj.gif b/eclipse/plugins/org.eclipse.pde.ua.ui/icons/obj16/cheatsheet_simple_obj.gif
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/icons/obj16/cheatsheet_subitem_obj.gif b/eclipse/plugins/org.eclipse.pde.ua.ui/icons/obj16/cheatsheet_subitem_obj.gif
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/icons/obj16/cheatsheet_taskgroup_obj.gif b/eclipse/plugins/org.eclipse.pde.ua.ui/icons/obj16/cheatsheet_taskgroup_obj.gif
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/icons/obj16/cheatsheet_unsupported_obj.gif b/eclipse/plugins/org.eclipse.pde.ua.ui/icons/obj16/cheatsheet_unsupported_obj.gif
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/icons/obj16/toc_anchor_obj.gif b/eclipse/plugins/org.eclipse.pde.ua.ui/icons/obj16/toc_anchor_obj.gif
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/icons/obj16/toc_leaftopic_obj.gif b/eclipse/plugins/org.eclipse.pde.ua.ui/icons/obj16/toc_leaftopic_obj.gif
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/icons/obj16/toc_link_obj.gif b/eclipse/plugins/org.eclipse.pde.ua.ui/icons/obj16/toc_link_obj.gif
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/icons/obj16/toc_obj.gif b/eclipse/plugins/org.eclipse.pde.ua.ui/icons/obj16/toc_obj.gif
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/icons/obj16/toc_topic_obj.gif b/eclipse/plugins/org.eclipse.pde.ua.ui/icons/obj16/toc_topic_obj.gif
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/CSAbstractDetails.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/CSAbstractDetails.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/CSAbstractSubDetails.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/CSAbstractSubDetails.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/ICSDetails.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/ICSDetails.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/ICSMaster.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/ICSMaster.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/CompCSBlock.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/CompCSBlock.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/CompCSContentProvider.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/CompCSContentProvider.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/CompCSEditor.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/CompCSEditor.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/CompCSEditorContributor.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/CompCSEditorContributor.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/CompCSFileValidator.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/CompCSFileValidator.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/CompCSFormOutlinePage.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/CompCSFormOutlinePage.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/CompCSGroupValidator.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/CompCSGroupValidator.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/CompCSInputContext.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/CompCSInputContext.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/CompCSInputContextManager.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/CompCSInputContextManager.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/CompCSMasterTreeSection.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/CompCSMasterTreeSection.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/CompCSPage.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/CompCSPage.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/actions/CompCSAbstractAddAction.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/actions/CompCSAbstractAddAction.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/actions/CompCSAddGroupAction.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/actions/CompCSAddGroupAction.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/actions/CompCSAddTaskAction.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/actions/CompCSAddTaskAction.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/actions/CompCSRemoveTaskObjectAction.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/actions/CompCSRemoveTaskObjectAction.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/details/CompCSConclusionTextListener.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/details/CompCSConclusionTextListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/details/CompCSDetails.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/details/CompCSDetails.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/details/CompCSEnclosingTextDetails.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/details/CompCSEnclosingTextDetails.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/details/CompCSIntroductionTextListener.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/details/CompCSIntroductionTextListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/details/CompCSTaskDetails.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/details/CompCSTaskDetails.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/details/CompCSTaskGroupDetails.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/comp/details/CompCSTaskGroupDetails.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/ISimpleCSCommandKeyListener.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/ISimpleCSCommandKeyListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/NewCommandKeyEvent.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/NewCommandKeyEvent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/SimpleCSBlock.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/SimpleCSBlock.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/SimpleCSCommandManager.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/SimpleCSCommandManager.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/SimpleCSContentProvider.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/SimpleCSContentProvider.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/SimpleCSDefinitionPage.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/SimpleCSDefinitionPage.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/SimpleCSEditor.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/SimpleCSEditor.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/SimpleCSEditorContributor.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/SimpleCSEditorContributor.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/SimpleCSFormOutlinePage.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/SimpleCSFormOutlinePage.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/SimpleCSInputContext.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/SimpleCSInputContext.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/SimpleCSInputContextManager.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/SimpleCSInputContextManager.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/SimpleCSMasterTreeSection.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/SimpleCSMasterTreeSection.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/SimpleCSSourcePage.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/SimpleCSSourcePage.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/actions/SimpleCSAddStepAction.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/actions/SimpleCSAddStepAction.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/actions/SimpleCSAddSubStepAction.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/actions/SimpleCSAddSubStepAction.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/actions/SimpleCSPreviewAction.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/actions/SimpleCSPreviewAction.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/actions/SimpleCSRemoveRunObjectAction.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/actions/SimpleCSRemoveRunObjectAction.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/actions/SimpleCSRemoveStepAction.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/actions/SimpleCSRemoveStepAction.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/actions/SimpleCSRemoveSubStepAction.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/actions/SimpleCSRemoveSubStepAction.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/details/SimpleCSCommandComboPart.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/details/SimpleCSCommandComboPart.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/details/SimpleCSCommandDetails.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/details/SimpleCSCommandDetails.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/details/SimpleCSDetails.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/details/SimpleCSDetails.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/details/SimpleCSHelpDetails.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/details/SimpleCSHelpDetails.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/details/SimpleCSIntroDetails.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/details/SimpleCSIntroDetails.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/details/SimpleCSItemDetails.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/details/SimpleCSItemDetails.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/details/SimpleCSSubItemDetails.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/cheatsheet/simple/details/SimpleCSSubItemDetails.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocBlock.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocBlock.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocContentProvider.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocContentProvider.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocDragAdapter.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocDragAdapter.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocDropAdapter.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocDropAdapter.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocEditor.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocEditor.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocEditorContributor.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocEditorContributor.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocFileValidator.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocFileValidator.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocFoldingStructureProvider.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocFoldingStructureProvider.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocFormOutlinePage.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocFormOutlinePage.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocHTMLTitleUtil.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocHTMLTitleUtil.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocHyperlinkDetector.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocHyperlinkDetector.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocInputContext.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocInputContext.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocInputContextManager.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocInputContextManager.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocPage.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocPage.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocSourcePage.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocSourcePage.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocTreeSection.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/TocTreeSection.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/actions/TocAddAnchorAction.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/actions/TocAddAnchorAction.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/actions/TocAddLinkAction.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/actions/TocAddLinkAction.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/actions/TocAddObjectAction.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/actions/TocAddObjectAction.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/actions/TocAddTopicAction.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/actions/TocAddTopicAction.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/actions/TocRemoveObjectAction.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/actions/TocRemoveObjectAction.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/details/TocAbstractDetails.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/details/TocAbstractDetails.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/details/TocAnchorDetails.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/details/TocAnchorDetails.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/details/TocDetails.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/details/TocDetails.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/details/TocLinkDetails.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/details/TocLinkDetails.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/details/TocTopicDetails.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/editor/toc/details/TocTopicDetails.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/cheatsheet/BaseCSCreationOperation.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/cheatsheet/BaseCSCreationOperation.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/cheatsheet/CSCategoryTrackerUtil.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/cheatsheet/CSCategoryTrackerUtil.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/cheatsheet/CSFileWizardPage.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/cheatsheet/CSFileWizardPage.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/cheatsheet/CompCSCreationOperation.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/cheatsheet/CompCSCreationOperation.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/cheatsheet/IRegisterCSData.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/cheatsheet/IRegisterCSData.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/cheatsheet/NewCSFileWizard.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/cheatsheet/NewCSFileWizard.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/cheatsheet/NewCategoryNameDialog.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/cheatsheet/NewCategoryNameDialog.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/cheatsheet/NewSimpleCSFileWizard.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/cheatsheet/NewSimpleCSFileWizard.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/cheatsheet/RegisterCSOperation.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/cheatsheet/RegisterCSOperation.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/cheatsheet/RegisterCSWizard.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/cheatsheet/RegisterCSWizard.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/cheatsheet/RegisterCSWizardPage.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/cheatsheet/RegisterCSWizardPage.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/cheatsheet/RegisterCompCSWizardPage.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/cheatsheet/RegisterCompCSWizardPage.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/cheatsheet/RegisterSimpleCSWizardPage.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/cheatsheet/RegisterSimpleCSWizardPage.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/cheatsheet/SimpleCSCreationOperation.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/cheatsheet/SimpleCSCreationOperation.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/cheatsheet/SimpleCSFileWizardPage.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/cheatsheet/SimpleCSFileWizardPage.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/toc/NewTocFileWizard.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/toc/NewTocFileWizard.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/toc/TocOperation.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/toc/TocOperation.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/toc/TocWizardPage.java b/eclipse/plugins/org.eclipse.pde.ua.ui/src/org/eclipse/pde/internal/ua/ui/wizards/toc/TocWizardPage.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ui.templates/templates_3.0/helloOSGiService/java/Dictionary.java b/eclipse/plugins/org.eclipse.pde.ui.templates/templates_3.0/helloOSGiService/java/Dictionary.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ui.templates/templates_3.0/helloOSGiService/java/DictionaryImpl.java b/eclipse/plugins/org.eclipse.pde.ui.templates/templates_3.0/helloOSGiService/java/DictionaryImpl.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ui.templates/templates_3.0/helloOSGiService/java/DictionaryService.java b/eclipse/plugins/org.eclipse.pde.ui.templates/templates_3.0/helloOSGiService/java/DictionaryService.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ui.templates/templates_3.0/helloOSGiService/java/DictionaryServiceImpl.java b/eclipse/plugins/org.eclipse.pde.ui.templates/templates_3.0/helloOSGiService/java/DictionaryServiceImpl.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ui.templates/templates_3.0/helloOSGiServiceComponent/java/$activator$.java b/eclipse/plugins/org.eclipse.pde.ui.templates/templates_3.0/helloOSGiServiceComponent/java/$activator$.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ui.templates/templates_3.0/helloOSGiServiceComponent/java/Dictionary.java b/eclipse/plugins/org.eclipse.pde.ui.templates/templates_3.0/helloOSGiServiceComponent/java/Dictionary.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ui.templates/templates_3.0/helloOSGiServiceComponent/java/DictionaryImpl.java b/eclipse/plugins/org.eclipse.pde.ui.templates/templates_3.0/helloOSGiServiceComponent/java/DictionaryImpl.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ui.templates/templates_3.0/helloOSGiServiceComponent/java/DictionaryService.java b/eclipse/plugins/org.eclipse.pde.ui.templates/templates_3.0/helloOSGiServiceComponent/java/DictionaryService.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ui.templates/templates_3.0/helloOSGiServiceComponent/java/DictionaryServiceImpl.java b/eclipse/plugins/org.eclipse.pde.ui.templates/templates_3.0/helloOSGiServiceComponent/java/DictionaryServiceImpl.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ui.templates/templates_3.5/OSGiEventAdmin/OSGI-INF/component.xml b/eclipse/plugins/org.eclipse.pde.ui.templates/templates_3.5/OSGiEventAdmin/OSGI-INF/component.xml
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ui.templates/templates_3.5/OSGiEventAdmin/build.properties b/eclipse/plugins/org.eclipse.pde.ui.templates/templates_3.5/OSGiEventAdmin/build.properties
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ui.templates/templates_3.5/OSGiEventAdmin/java/ServiceComponent.java b/eclipse/plugins/org.eclipse.pde.ui.templates/templates_3.5/OSGiEventAdmin/java/ServiceComponent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/dialogs/FeatureSelectionDialog.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/dialogs/FeatureSelectionDialog.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/dialogs/FolderSelectionDialog.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/dialogs/FolderSelectionDialog.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/dialogs/PluginSelectionDialog.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/dialogs/PluginSelectionDialog.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/targetdefinition/ArgumentsSection.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/targetdefinition/ArgumentsSection.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/targetdefinition/DefinitionPage.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/targetdefinition/DefinitionPage.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/targetdefinition/EnvironmentPage.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/targetdefinition/EnvironmentPage.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/targetdefinition/EnvironmentSection.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/targetdefinition/EnvironmentSection.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/targetdefinition/ImplicitDependenciesSection.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/targetdefinition/ImplicitDependenciesSection.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/targetdefinition/InformationSection.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/targetdefinition/InformationSection.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/targetdefinition/JRESection.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/targetdefinition/JRESection.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/targetdefinition/TargetEditorContributor.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/targetdefinition/TargetEditorContributor.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/views/target/StateViewPage.java b/eclipse/plugins/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/views/target/StateViewPage.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/images/readmeviewcommand.png b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/images/readmeviewcommand.png
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/product_open_file.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/product_open_file.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_cmd.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_cmd.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_cmd_bindings.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_cmd_bindings.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_cmd_commands.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_cmd_commands.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_cmd_expressions.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_cmd_expressions.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_cmd_handlers.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_cmd_handlers.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_cmd_menus.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/workbench_cmd_menus.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/wrkAdv_commands_handlers.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/wrkAdv_commands_handlers.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.platform.doc.isv/guide/wrkAdv_services.htm b/eclipse/plugins/org.eclipse.platform.doc.isv/guide/wrkAdv_services.htm
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.platform/3_1SplashPsd.zip b/eclipse/plugins/org.eclipse.platform/3_1SplashPsd.zip
deleted file mode 100644
index 8f00605..0000000
Binary files a/eclipse/plugins/org.eclipse.platform/3_1SplashPsd.zip and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform/3_6SplashHeliosPsd.zip b/eclipse/plugins/org.eclipse.platform/3_6SplashHeliosPsd.zip
deleted file mode 100644
index 889f8a0..0000000
Binary files a/eclipse/plugins/org.eclipse.platform/3_6SplashHeliosPsd.zip and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.platform/launchersrc.zip b/eclipse/plugins/org.eclipse.platform/launchersrc.zip
deleted file mode 100644
index 36066fd..0000000
Binary files a/eclipse/plugins/org.eclipse.platform/launchersrc.zip and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.swt.carbon.macosx/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.swt.carbon.macosx/META-INF/MANIFEST.MF
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt.carbon.macosx/about.html b/eclipse/plugins/org.eclipse.swt.carbon.macosx/about.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt.carbon.macosx/build.properties b/eclipse/plugins/org.eclipse.swt.carbon.macosx/build.properties
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt.carbon.macosx/build.xml b/eclipse/plugins/org.eclipse.swt.carbon.macosx/build.xml
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt.carbon.macosx/fragment.properties b/eclipse/plugins/org.eclipse.swt.carbon.macosx/fragment.properties
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt.cocoa.macosx.x86_64/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.swt.cocoa.macosx.x86_64/META-INF/MANIFEST.MF
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt.cocoa.macosx.x86_64/about.html b/eclipse/plugins/org.eclipse.swt.cocoa.macosx.x86_64/about.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt.cocoa.macosx.x86_64/about_files/IJG_README b/eclipse/plugins/org.eclipse.swt.cocoa.macosx.x86_64/about_files/IJG_README
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt.cocoa.macosx.x86_64/about_files/mpl-v11.txt b/eclipse/plugins/org.eclipse.swt.cocoa.macosx.x86_64/about_files/mpl-v11.txt
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt.cocoa.macosx.x86_64/build.properties b/eclipse/plugins/org.eclipse.swt.cocoa.macosx.x86_64/build.properties
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt.cocoa.macosx.x86_64/build.xml b/eclipse/plugins/org.eclipse.swt.cocoa.macosx.x86_64/build.xml
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt.cocoa.macosx.x86_64/fragment.properties b/eclipse/plugins/org.eclipse.swt.cocoa.macosx.x86_64/fragment.properties
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt.cocoa.macosx/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.swt.cocoa.macosx/META-INF/MANIFEST.MF
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt.cocoa.macosx/about.html b/eclipse/plugins/org.eclipse.swt.cocoa.macosx/about.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt.cocoa.macosx/about_files/IJG_README b/eclipse/plugins/org.eclipse.swt.cocoa.macosx/about_files/IJG_README
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt.cocoa.macosx/about_files/mpl-v11.txt b/eclipse/plugins/org.eclipse.swt.cocoa.macosx/about_files/mpl-v11.txt
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt.cocoa.macosx/build.properties b/eclipse/plugins/org.eclipse.swt.cocoa.macosx/build.properties
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt.cocoa.macosx/build.xml b/eclipse/plugins/org.eclipse.swt.cocoa.macosx/build.xml
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt.cocoa.macosx/fragment.properties b/eclipse/plugins/org.eclipse.swt.cocoa.macosx/fragment.properties
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt.gtk.linux.ppc64/META-INF/MANIFEST.MF b/eclipse/plugins/org.eclipse.swt.gtk.linux.ppc64/META-INF/MANIFEST.MF
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/.classpath_cocoa b/eclipse/plugins/org.eclipse.swt/.classpath_cocoa
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/.classpath_motif b/eclipse/plugins/org.eclipse.swt/.classpath_motif
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/.classpath_photon b/eclipse/plugins/org.eclipse.swt/.classpath_photon
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/.classpath_win32 b/eclipse/plugins/org.eclipse.swt/.classpath_win32
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/.project_classpath_builder b/eclipse/plugins/org.eclipse.swt/.project_classpath_builder
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/.project_normal b/eclipse/plugins/org.eclipse.swt/.project_normal
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT AWT/cocoa/org/eclipse/swt/awt/SWT_AWT.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT AWT/cocoa/org/eclipse/swt/awt/SWT_AWT.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/cocoa/org/eclipse/swt/accessibility/Accessible.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Accessibility/cocoa/org/eclipse/swt/accessibility/Accessible.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/carbon/org/eclipse/swt/browser/Safari.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/carbon/org/eclipse/swt/browser/Safari.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/cocoa/org/eclipse/swt/browser/Safari.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/cocoa/org/eclipse/swt/browser/Safari.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/Browser.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/Browser.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/photon/org/eclipse/swt/browser/Voyager.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Browser/photon/org/eclipse/swt/browser/Voyager.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/AnimatedProgress.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/AnimatedProgress.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/BusyIndicator.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/BusyIndicator.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CCombo.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CCombo.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CLabel.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CLabel.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolderAdapter.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolderAdapter.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolderEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolderEvent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolderListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolderListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabItem.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/ControlEditor.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/ControlEditor.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/DefaultContent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/DefaultContent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/ExtendedModifyEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/ExtendedModifyEvent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/ExtendedModifyListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/ExtendedModifyListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/LineBackgroundEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/LineBackgroundEvent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/LineBackgroundListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/LineBackgroundListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/LineStyleEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/LineStyleEvent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/LineStyleListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/LineStyleListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/PopupList.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/PopupList.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/ST.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/ST.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/SashForm.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/SashForm.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/ScrolledComposite.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/ScrolledComposite.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StackLayout.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StackLayout.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyleRange.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyleRange.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledTextContent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledTextContent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledTextEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledTextEvent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledTextListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledTextListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/TableEditor.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/TableEditor.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/TableTree.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/TableTree.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/TableTreeEditor.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/TableTreeEditor.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/TableTreeItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/TableTreeItem.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/TextChangeListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/TextChangeListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/TextChangedEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/TextChangedEvent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/TextChangingEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/TextChangingEvent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/TreeEditor.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/TreeEditor.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/VerifyKeyListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/VerifyKeyListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/ViewForm.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/ViewForm.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/package.html b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/package.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DND.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DND.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DNDEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DNDEvent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DNDListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DNDListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DragSourceAdapter.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DragSourceAdapter.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DragSourceEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DragSourceEvent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DragSourceListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DragSourceListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DropTargetAdapter.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DropTargetAdapter.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DropTargetEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DropTargetEvent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DropTargetListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DropTargetListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/package.html b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/package.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/motif/org/eclipse/swt/dnd/ByteArrayTransfer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/motif/org/eclipse/swt/dnd/ByteArrayTransfer.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/motif/org/eclipse/swt/dnd/Clipboard.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/motif/org/eclipse/swt/dnd/Clipboard.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/motif/org/eclipse/swt/dnd/DragSource.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/motif/org/eclipse/swt/dnd/DragSource.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/motif/org/eclipse/swt/dnd/DropTarget.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/motif/org/eclipse/swt/dnd/DropTarget.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/motif/org/eclipse/swt/dnd/FileTransfer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/motif/org/eclipse/swt/dnd/FileTransfer.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/motif/org/eclipse/swt/dnd/RTFTransfer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/motif/org/eclipse/swt/dnd/RTFTransfer.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/motif/org/eclipse/swt/dnd/TextTransfer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/motif/org/eclipse/swt/dnd/TextTransfer.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/motif/org/eclipse/swt/dnd/Transfer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/motif/org/eclipse/swt/dnd/Transfer.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/motif/org/eclipse/swt/dnd/TransferData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/motif/org/eclipse/swt/dnd/TransferData.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/photon/org/eclipse/swt/dnd/ByteArrayTransfer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/photon/org/eclipse/swt/dnd/ByteArrayTransfer.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/photon/org/eclipse/swt/dnd/Clipboard.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/photon/org/eclipse/swt/dnd/Clipboard.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/photon/org/eclipse/swt/dnd/DragSource.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/photon/org/eclipse/swt/dnd/DragSource.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/photon/org/eclipse/swt/dnd/DropTarget.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/photon/org/eclipse/swt/dnd/DropTarget.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/photon/org/eclipse/swt/dnd/FileTransfer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/photon/org/eclipse/swt/dnd/FileTransfer.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/photon/org/eclipse/swt/dnd/RTFTransfer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/photon/org/eclipse/swt/dnd/RTFTransfer.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/photon/org/eclipse/swt/dnd/TextTransfer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/photon/org/eclipse/swt/dnd/TextTransfer.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/photon/org/eclipse/swt/dnd/Transfer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/photon/org/eclipse/swt/dnd/Transfer.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/photon/org/eclipse/swt/dnd/TransferData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/photon/org/eclipse/swt/dnd/TransferData.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/ByteArrayTransfer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/ByteArrayTransfer.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/Clipboard.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/Clipboard.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/DragSource.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/DragSource.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/DropTarget.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/DropTarget.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/FileTransfer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/FileTransfer.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/OleEnumFORMATETC.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/OleEnumFORMATETC.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/RTFTransfer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/RTFTransfer.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/TextTransfer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/TextTransfer.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/Transfer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/Transfer.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/TransferData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/TransferData.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/cocoa/org/eclipse/swt/browser/MozillaDelegate.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/cocoa/org/eclipse/swt/browser/MozillaDelegate.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcominit.h b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/library/xpcominit.h
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIPrefBranch.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIPrefBranch.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIPrefLocalizedString.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIPrefLocalizedString.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIPrefService.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIPrefService.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/internal/ole/win32/COMObject.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/internal/ole/win32/COMObject.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OLE.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OLE.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleAutomation.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleAutomation.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleClientSite.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleClientSite.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleControlSite.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleControlSite.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleEvent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleEventSink.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleEventSink.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleEventTable.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleEventTable.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleFrame.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleFrame.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleFunctionDescription.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleFunctionDescription.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleParameterDescription.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleParameterDescription.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OlePropertyChangeSink.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OlePropertyChangeSink.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OlePropertyDescription.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OlePropertyDescription.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/Variant.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/Variant.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/package.html b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/package.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OpenGL/carbon/org/eclipse/swt/opengl/GLCanvas.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OpenGL/carbon/org/eclipse/swt/opengl/GLCanvas.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OpenGL/cocoa/org/eclipse/swt/opengl/GLCanvas.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OpenGL/cocoa/org/eclipse/swt/opengl/GLCanvas.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OpenGL/common/org/eclipse/swt/opengl/package.html b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OpenGL/common/org/eclipse/swt/opengl/package.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OpenGL/glx/org/eclipse/swt/internal/opengl/glx/GLX.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OpenGL/glx/org/eclipse/swt/internal/opengl/glx/GLX.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OpenGL/glx/org/eclipse/swt/internal/opengl/glx/XVisualInfo.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OpenGL/glx/org/eclipse/swt/internal/opengl/glx/XVisualInfo.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OpenGL/win32/org/eclipse/swt/internal/opengl/win32/LAYERPLANEDESCRIPTOR.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OpenGL/win32/org/eclipse/swt/internal/opengl/win32/LAYERPLANEDESCRIPTOR.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OpenGL/win32/org/eclipse/swt/internal/opengl/win32/PIXELFORMATDESCRIPTOR.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OpenGL/win32/org/eclipse/swt/internal/opengl/win32/PIXELFORMATDESCRIPTOR.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT OpenGL/win32/org/eclipse/swt/internal/opengl/win32/WGL.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT OpenGL/win32/org/eclipse/swt/internal/opengl/win32/WGL.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cairo/library/cairo_custom.h b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cairo/library/cairo_custom.h
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/build.sh b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/build.sh
old mode 100644
new mode 100755
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/cocoa_custom.c b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/cocoa_custom.c
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/cocoa_custom.h b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/library/cocoa_custom.h
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/org/eclipse/swt/internal/cocoa/Cocoa.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/org/eclipse/swt/internal/cocoa/Cocoa.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/org/eclipse/swt/internal/cocoa/NSSize.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/carbon/org/eclipse/swt/internal/cocoa/NSSize.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/make_macosx.mak b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/make_macosx.mak
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/os.h b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/os.h
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/os_custom.c b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/os_custom.c
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/os_custom.h b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/library/os_custom.h
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/Platform.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/Platform.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/NSPoint.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/NSPoint.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/NSRect.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/NSRect.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/NSSize.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/cocoa/org/eclipse/swt/internal/cocoa/NSSize.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/build.sh b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/build.sh
old mode 100644
new mode 100755
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/make_freebsd.mak b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/make_freebsd.mak
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/make_solaris_x86.mak b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/library/make_solaris_x86.mak
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/Lock.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/Lock.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/motif/library/build.sh b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/motif/library/build.sh
old mode 100644
new mode 100755
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/motif/org/eclipse/swt/internal/Lock.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/motif/org/eclipse/swt/internal/Lock.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/photon/library/build.sh b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/photon/library/build.sh
old mode 100644
new mode 100755
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/photon/org/eclipse/swt/internal/photon/PtWebClient2Data_t.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT PI/photon/org/eclipse/swt/internal/photon/PtWebClient2Data_t.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/cocoa/org/eclipse/swt/printing/PrintDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/cocoa/org/eclipse/swt/printing/PrintDialog.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/cocoa/org/eclipse/swt/printing/Printer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/cocoa/org/eclipse/swt/printing/Printer.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/common/org/eclipse/swt/printing/PrinterData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/common/org/eclipse/swt/printing/PrinterData.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/common/org/eclipse/swt/printing/package.html b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/common/org/eclipse/swt/printing/package.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/motif/org/eclipse/swt/printing/PrintDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/motif/org/eclipse/swt/printing/PrintDialog.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/motif/org/eclipse/swt/printing/Printer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/motif/org/eclipse/swt/printing/Printer.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/photon/org/eclipse/swt/printing/PrintDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/photon/org/eclipse/swt/printing/PrintDialog.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/photon/org/eclipse/swt/printing/Printer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/photon/org/eclipse/swt/printing/Printer.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/win32/org/eclipse/swt/printing/PrintDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/win32/org/eclipse/swt/printing/PrintDialog.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/win32/org/eclipse/swt/printing/Printer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Printing/win32/org/eclipse/swt/printing/Printer.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/cocoa/org/eclipse/swt/program/Program.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/cocoa/org/eclipse/swt/program/Program.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/common/org/eclipse/swt/program/package.html b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/common/org/eclipse/swt/program/package.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/motif/org/eclipse/swt/program/Program.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/motif/org/eclipse/swt/program/Program.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/photon/org/eclipse/swt/program/Program.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/photon/org/eclipse/swt/program/Program.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/win32/org/eclipse/swt/program/Program.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT Program/win32/org/eclipse/swt/program/Program.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT WebKit/gtk/library/webkitgtk.h b/eclipse/plugins/org.eclipse.swt/Eclipse SWT WebKit/gtk/library/webkitgtk.h
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/TrayItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/TrayItem.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Color.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Color.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Cursor.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Cursor.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Device.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Device.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/DeviceData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/DeviceData.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Font.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Font.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/FontData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/FontData.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/FontMetrics.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/FontMetrics.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/GC.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/GC.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/GCData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/GCData.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Image.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Image.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Path.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Path.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Pattern.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Pattern.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Region.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Region.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/TextLayout.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/TextLayout.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Transform.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Transform.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Button.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Button.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Canvas.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Canvas.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Caret.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Caret.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/ColorDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/ColorDialog.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Combo.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Combo.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Composite.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Composite.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Control.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Control.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/DateTime.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/DateTime.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Decorations.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Decorations.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/DirectoryDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/DirectoryDialog.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Display.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Display.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/FileDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/FileDialog.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/FontDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/FontDialog.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Group.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Group.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Label.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Label.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Link.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Link.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/List.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/List.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Menu.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Menu.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/MenuItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/MenuItem.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/MessageBox.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/MessageBox.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/ProgressBar.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/ProgressBar.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Sash.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Sash.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Scale.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Scale.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/ScrollBar.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/ScrollBar.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Scrollable.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Scrollable.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Shell.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Shell.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Slider.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Slider.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Spinner.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Spinner.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TabFolder.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TabFolder.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TabItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TabItem.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Table.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Table.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TableColumn.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TableColumn.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TableItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TableItem.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Text.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Text.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/ToolBar.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/ToolBar.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/ToolItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/ToolItem.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Tracker.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Tracker.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TrayItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TrayItem.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Tree.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Tree.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TreeColumn.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TreeColumn.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TreeItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/TreeItem.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Widget.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Widget.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/library/callback.c b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/library/callback.c
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/library/callback.h b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/library/callback.h
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/SWT.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/SWT.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/SWTError.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/SWTError.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/SWTException.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/SWTException.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ArmEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ArmEvent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ArmListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ArmListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ControlAdapter.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ControlAdapter.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ControlEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ControlEvent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ControlListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ControlListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/DisposeEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/DisposeEvent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/DisposeListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/DisposeListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/FocusAdapter.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/FocusAdapter.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/FocusEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/FocusEvent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/FocusListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/FocusListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/HelpEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/HelpEvent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/HelpListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/HelpListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/KeyAdapter.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/KeyAdapter.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/KeyEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/KeyEvent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/KeyListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/KeyListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MenuAdapter.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MenuAdapter.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MenuEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MenuEvent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MenuListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MenuListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ModifyEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ModifyEvent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ModifyListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ModifyListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseAdapter.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseAdapter.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseEvent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseMoveListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseMoveListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseTrackAdapter.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseTrackAdapter.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseTrackListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseTrackListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/PaintEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/PaintEvent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/PaintListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/PaintListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/SelectionAdapter.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/SelectionAdapter.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/SelectionEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/SelectionEvent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/SelectionListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/SelectionListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ShellAdapter.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ShellAdapter.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ShellEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ShellEvent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ShellListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ShellListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/TraverseEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/TraverseEvent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/TraverseListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/TraverseListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/TreeAdapter.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/TreeAdapter.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/TreeEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/TreeEvent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/TreeListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/TreeListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/TypedEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/TypedEvent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/VerifyEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/VerifyEvent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/VerifyListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/VerifyListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/package.html b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/package.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/Drawable.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/Drawable.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/ImageData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/ImageData.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/ImageLoader.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/ImageLoader.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/ImageLoaderEvent.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/ImageLoaderEvent.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/ImageLoaderListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/ImageLoaderListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/PaletteData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/PaletteData.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/Point.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/Point.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/RGB.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/RGB.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/Rectangle.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/Rectangle.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/package.html b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/package.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/Callback.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/Callback.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/FileFormat.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/FileFormat.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/GIFFileFormat.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/GIFFileFormat.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/JPEGAppn.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/JPEGAppn.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/JPEGArithmeticConditioningTable.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/JPEGArithmeticConditioningTable.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/JPEGComment.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/JPEGComment.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/JPEGEndOfImage.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/JPEGEndOfImage.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/JPEGFileFormat.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/JPEGFileFormat.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/JPEGFixedSizeSegment.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/JPEGFixedSizeSegment.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/JPEGFrameHeader.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/JPEGFrameHeader.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/JPEGHuffmanTable.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/JPEGHuffmanTable.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/JPEGQuantizationTable.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/JPEGQuantizationTable.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/JPEGRestartInterval.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/JPEGRestartInterval.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/JPEGScanHeader.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/JPEGScanHeader.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/JPEGSegment.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/JPEGSegment.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/JPEGStartOfImage.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/JPEGStartOfImage.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/JPEGVariableSizeSegment.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/JPEGVariableSizeSegment.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/LEDataInputStream.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/LEDataInputStream.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/LEDataOutputStream.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/LEDataOutputStream.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/LZWCodec.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/LZWCodec.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/LZWNode.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/LZWNode.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PNGFileFormat.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PNGFileFormat.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngChunk.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngChunk.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngChunkReader.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngChunkReader.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngDecodingDataStream.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngDecodingDataStream.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngFileReadState.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngFileReadState.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngHuffmanTable.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngHuffmanTable.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngHuffmanTables.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngHuffmanTables.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngIdatChunk.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngIdatChunk.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngIendChunk.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngIendChunk.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngIhdrChunk.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngIhdrChunk.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngLzBlockReader.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngLzBlockReader.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngPlteChunk.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngPlteChunk.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngTrnsChunk.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/PngTrnsChunk.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/WinBMPFileFormat.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/WinBMPFileFormat.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/WinICOFileFormat.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/WinICOFileFormat.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/package.html b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/image/package.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/package.html b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/package.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/layout/FillLayout.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/layout/FillLayout.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/layout/GridData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/layout/GridData.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/layout/GridLayout.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/layout/GridLayout.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/layout/RowData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/layout/RowData.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/layout/RowLayout.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/layout/RowLayout.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/layout/package.html b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/layout/package.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/package.html b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/package.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/Dialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/Dialog.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/Event.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/Event.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/EventTable.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/EventTable.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/Item.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/Item.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/Layout.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/Layout.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/Listener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/Listener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/RunnableLock.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/RunnableLock.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/Synchronizer.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/Synchronizer.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/TypedListener.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/TypedListener.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/package.html b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/package.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/version.txt b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/common/version.txt
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Color.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Color.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Cursor.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Cursor.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Device.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Device.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/DeviceData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/DeviceData.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Font.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Font.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/FontData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/FontData.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/FontMetrics.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/FontMetrics.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/GC.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/GC.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/GCData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/GCData.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Image.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Image.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Region.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/Region.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/internal/Converter.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/internal/Converter.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Button.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Button.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Canvas.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Canvas.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Caret.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Caret.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/ColorDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/ColorDialog.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Combo.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Combo.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Composite.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Composite.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Control.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Control.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Decorations.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Decorations.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/DirectoryDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/DirectoryDialog.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Display.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Display.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/FileDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/FileDialog.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/FontDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/FontDialog.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Group.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Group.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Label.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Label.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/List.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/List.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Menu.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Menu.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/MenuItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/MenuItem.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/MessageBox.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/MessageBox.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/ProgressBar.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/ProgressBar.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Sash.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Sash.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Scale.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Scale.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/ScrollBar.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/ScrollBar.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Scrollable.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Scrollable.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Shell.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Shell.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Slider.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Slider.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Text.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Text.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/ToolBar.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/ToolBar.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/ToolItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/ToolItem.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Tracker.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Tracker.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Widget.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Widget.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Color.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Color.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Cursor.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Cursor.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Device.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Device.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/DeviceData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/DeviceData.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Font.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Font.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/FontData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/FontData.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/FontMetrics.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/FontMetrics.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/GC.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/GC.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/GCData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/GCData.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Image.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Image.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Region.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/graphics/Region.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/internal/Converter.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/internal/Converter.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Button.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Button.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Canvas.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Canvas.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Caret.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Caret.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/ColorDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/ColorDialog.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Combo.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Combo.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Composite.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Composite.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Control.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Control.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Decorations.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Decorations.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/DirectoryDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/DirectoryDialog.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Display.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Display.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/FileDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/FileDialog.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/FontDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/FontDialog.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Group.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Group.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Label.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Label.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/List.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/List.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Menu.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Menu.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/MenuItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/MenuItem.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/MessageBox.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/MessageBox.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/ProgressBar.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/ProgressBar.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Sash.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Sash.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Scale.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Scale.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/ScrollBar.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/ScrollBar.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Scrollable.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Scrollable.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Shell.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Shell.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Slider.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Slider.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/TabFolder.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/TabFolder.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/TabItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/TabItem.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Text.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Text.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/ToolBar.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/ToolBar.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/ToolItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/ToolItem.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Tracker.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Tracker.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Widget.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/Widget.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/WidgetTable.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/photon/org/eclipse/swt/widgets/WidgetTable.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Color.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Color.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Cursor.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Cursor.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Device.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Device.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/DeviceData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/DeviceData.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Font.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Font.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/FontData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/FontData.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/FontMetrics.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/FontMetrics.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/GC.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/GC.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/GCData.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/GCData.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Image.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Image.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Region.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Region.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Button.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Button.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Canvas.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Canvas.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Caret.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Caret.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/ColorDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/ColorDialog.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Combo.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Combo.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Composite.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Composite.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Control.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Control.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/CoolBar.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/CoolBar.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/CoolItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/CoolItem.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Decorations.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Decorations.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/DirectoryDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/DirectoryDialog.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Display.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Display.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/FileDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/FileDialog.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/FontDialog.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/FontDialog.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Group.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Group.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Label.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Label.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/List.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/List.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Menu.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Menu.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/MenuItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/MenuItem.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/MessageBox.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/MessageBox.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/ProgressBar.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/ProgressBar.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Sash.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Sash.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Scale.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Scale.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/ScrollBar.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/ScrollBar.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Scrollable.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Scrollable.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Shell.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Shell.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Slider.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Slider.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TabFolder.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TabFolder.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TabItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TabItem.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Table.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Table.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TableColumn.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TableColumn.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TableItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TableItem.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Text.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Text.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/ToolBar.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/ToolBar.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/ToolItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/ToolItem.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Tracker.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Tracker.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Tree.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Tree.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TreeItem.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TreeItem.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Widget.java b/eclipse/plugins/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Widget.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/buildnotes_swt.html b/eclipse/plugins/org.eclipse.swt/buildnotes_swt.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.swt/components/external.xpt b/eclipse/plugins/org.eclipse.swt/components/external.xpt
deleted file mode 100644
index f57da7e..0000000
Binary files a/eclipse/plugins/org.eclipse.swt/components/external.xpt and /dev/null differ
diff --git a/eclipse/plugins/org.eclipse.swt/readme_swt.html b/eclipse/plugins/org.eclipse.swt/readme_swt.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.text/src/org/eclipse/jface/text/TreeLineTracker.java b/eclipse/plugins/org.eclipse.text/src/org/eclipse/jface/text/TreeLineTracker.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.carbon/src/org/eclipse/ui/internal/carbon/CarbonUIEnhancer.java b/eclipse/plugins/org.eclipse.ui.carbon/src/org/eclipse/ui/internal/carbon/CarbonUIEnhancer.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.carbon/src/org/eclipse/ui/internal/carbon/Messages.properties b/eclipse/plugins/org.eclipse.ui.carbon/src/org/eclipse/ui/internal/carbon/Messages.properties
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/text/LinkedModeConfigurationBlock.java b/eclipse/plugins/org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/text/LinkedModeConfigurationBlock.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/RulerMessages.java b/eclipse/plugins/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/RulerMessages.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/RulerMessages.properties b/eclipse/plugins/org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/RulerMessages.properties
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.ide.application/icons/full/elcl16/configs.gif b/eclipse/plugins/org.eclipse.ui.ide.application/icons/full/elcl16/configs.gif
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.ide.application/icons/full/elcl16/usearch_obj.gif b/eclipse/plugins/org.eclipse.ui.ide.application/icons/full/elcl16/usearch_obj.gif
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/ide/ResourceSelectionUtil.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/ide/ResourceSelectionUtil.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceFilterEditDialog.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceFilterEditDialog.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/handlers/OpenResourceHandler.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/handlers/OpenResourceHandler.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/misc/AndFileInfoMatcher.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/misc/AndFileInfoMatcher.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/misc/NotFileInfoMatcher.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/misc/NotFileInfoMatcher.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/misc/OrFileInfoMatcher.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/misc/OrFileInfoMatcher.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/misc/StringFileInfoMatcher.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/misc/StringFileInfoMatcher.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/undo/AbstractResourceDescription.java b/eclipse/plugins/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/undo/AbstractResourceDescription.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.navigator.resources/.settings/.api_filters b/eclipse/plugins/org.eclipse.ui.navigator.resources/.settings/.api_filters
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/ResourceToItemsMapper.java b/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/ResourceToItemsMapper.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/GotoActionProvider.java b/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/GotoActionProvider.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/GotoResourceAction.java b/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/GotoResourceAction.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/GotoResourceDialog.java b/eclipse/plugins/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/GotoResourceDialog.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/.options b/eclipse/plugins/org.eclipse.ui.navigator/.options
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/CommonNavigatorFrameSource.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/CommonNavigatorFrameSource.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/Policy.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/Policy.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/ExtensionSequenceNumberComparator.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/ExtensionSequenceNumberComparator.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/framelist/BackAction.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/framelist/BackAction.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/framelist/ForwardAction.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/framelist/ForwardAction.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/framelist/Frame.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/framelist/Frame.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/framelist/FrameAction.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/framelist/FrameAction.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/framelist/FrameList.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/framelist/FrameList.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/framelist/FrameListMessages.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/framelist/FrameListMessages.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/framelist/GoIntoAction.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/framelist/GoIntoAction.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/framelist/IFrameListHelpContextIds.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/framelist/IFrameListHelpContextIds.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/framelist/IFrameSource.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/framelist/IFrameSource.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/framelist/README b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/framelist/README
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/framelist/TreeFrame.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/framelist/TreeFrame.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/framelist/TreeViewerFrameSource.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/framelist/TreeViewerFrameSource.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/framelist/UpAction.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/framelist/UpAction.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/framelist/messages.properties b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/framelist/messages.properties
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/framelist/package.html b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/framelist/package.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/LinkHelperService.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/LinkHelperService.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/OverridePolicy.java b/eclipse/plugins/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/OverridePolicy.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/TabbedPropertyViewPlugin.java b/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/TabbedPropertyViewPlugin.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/TabbedPropertyViewStatusCodes.java b/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/TabbedPropertyViewStatusCodes.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/l10n/TabbedPropertyMessages.java b/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/l10n/TabbedPropertyMessages.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/l10n/TabbedPropertyMessages.properties b/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/l10n/TabbedPropertyMessages.properties
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/view/SectionDescriptor.java b/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/view/SectionDescriptor.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/view/TabDescriptor.java b/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/view/TabDescriptor.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/view/TabListContentProvider.java b/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/view/TabListContentProvider.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/view/TabbedPropertyComposite.java b/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/view/TabbedPropertyComposite.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/view/TabbedPropertyList.java b/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/view/TabbedPropertyList.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/view/TabbedPropertyRegistry.java b/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/view/TabbedPropertyRegistry.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/view/TabbedPropertyRegistryClassSectionFilter.java b/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/view/TabbedPropertyRegistryClassSectionFilter.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/view/TabbedPropertyRegistryFactory.java b/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/view/TabbedPropertyRegistryFactory.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/view/TabbedPropertyTitle.java b/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/view/TabbedPropertyTitle.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/view/TabbedPropertyViewer.java b/eclipse/plugins/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/view/TabbedPropertyViewer.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/rulers/RulerColumnDescriptor.java b/eclipse/plugins/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/rulers/RulerColumnDescriptor.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/rulers/package.html b/eclipse/plugins/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/rulers/package.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IAggregateWorkingSet.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IAggregateWorkingSet.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPersistableEditor.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/IPersistableEditor.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/branding/package.html b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/branding/package.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/package.html b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/commands/package.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/WorkingSetConfigurationBlock.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/dialogs/WorkingSetConfigurationBlock.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuPersistence.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuPersistence.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/WorkbenchMenuService.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/WorkbenchMenuService.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/testing/WorkbenchPartTestable.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/testing/WorkbenchPartTestable.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/AbstractContributionFactory.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/AbstractContributionFactory.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/CommandContributionItem.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/CommandContributionItem.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/UIElement.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/UIElement.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/package.html b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/package.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/package.html b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/services/package.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/testing/IWorkbenchPartTestable.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/testing/IWorkbenchPartTestable.java
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/testing/package.html b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/testing/package.html
old mode 100755
new mode 100644
diff --git a/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/ColorUtil.java b/eclipse/plugins/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/themes/ColorUtil.java
old mode 100755
new mode 100644


hooks/post-receive
-- 
eclipse - Powerful IDE written in java - Debian package.



More information about the pkg-java-commits mailing list