From e99eb001305b53510e2b1fae80e488946ca54837 Mon Sep 17 00:00:00 2001 From: Hannes Wellmann Date: Wed, 20 Apr 2022 00:28:31 +0200 Subject: [PATCH] Delete code of abandoned equinox plug-ins Delete the following projects that are abandoned (and not build) for a while: Part 1 (background https://bugs.eclipse.org/bugs/show_bug.cgi?id=533801) - bundles/org.eclipse.equinox.io - bundles/org.eclipse.equinox.ip - bundles/org.eclipse.equinox.util - bundles/org.eclipse.equinox.wireadmin Part 2 (background https://bugs.eclipse.org/bugs/show_bug.cgi?id=348045) - bundles/org.eclipse.equinox.servletbridge.extensionbundle - features/org.eclipse.equinox.server.servletbridge - bundles/org.eclipse.equinox.servletbridge.template Part 3: - bundles/org.eclipse.equinox.http.jetty.starter Signed-off-by: Hannes Wellmann --- .../.classpath | 7 - .../.project | 34 - .../.settings/org.eclipse.jdt.core.prefs | 526 ------ .../.settings/org.eclipse.jdt.ui.prefs | 56 - .../META-INF/MANIFEST.MF | 14 - .../about.html | 36 - .../build.properties | 20 - .../plugin.properties | 15 - .../pom.xml | 25 - .../jetty/starter/internal/Activator.java | 39 - bundles/org.eclipse.equinox.io/.classpath | 12 - bundles/org.eclipse.equinox.io/.project | 34 - .../.settings/org.eclipse.core.runtime.prefs | 2 - .../.settings/org.eclipse.jdt.core.prefs | 474 ----- .../.settings/org.eclipse.jdt.ui.prefs | 56 - .../.settings/org.eclipse.pde.core.prefs | 3 - .../META-INF/MANIFEST.MF | 27 - .../OSGI-INF/permissions.perm | 18 - bundles/org.eclipse.equinox.io/about.html | 36 - .../org.eclipse.equinox.io/build.properties | 23 - .../forceQualifierUpdate.txt | 2 - .../osgi/service/io/ConnectionFactory.java | 59 - .../org/osgi/service/io/ConnectorService.java | 165 -- .../org/osgi/service/io/package-info.java | 40 - .../osgi/org/osgi/service/io/packageinfo | 1 - .../org.eclipse.equinox.io/plugin.properties | 17 - bundles/org.eclipse.equinox.io/pom.xml | 38 - .../src/javax/microedition/io/Connection.java | 21 - .../io/ConnectionNotFoundException.java | 27 - .../src/javax/microedition/io/Connector.java | 56 - .../microedition/io/ContentConnection.java | 25 - .../src/javax/microedition/io/Datagram.java | 37 - .../microedition/io/DatagramConnection.java | 35 - .../javax/microedition/io/HttpConnection.java | 143 -- .../microedition/io/InputConnection.java | 23 - .../microedition/io/OutputConnection.java | 23 - .../microedition/io/StreamConnection.java | 19 - .../io/StreamConnectionNotifier.java | 21 - .../src/javax/microedition/io/package.html | 9 - .../internal/io/ConnectionListener.java | 53 - .../internal/io/ConnectionNotifier.java | 37 - .../internal/io/RandomAccessConnection.java | 45 - .../equinox/internal/io/impl/Activator.java | 67 - .../io/impl/ConnectionFactoryListener.java | 155 -- .../io/impl/ConnectionNotifierImpl.java | 120 -- .../io/impl/ConnectorServiceImpl.java | 404 ----- .../internal/io/impl/PrivilegedRunner.java | 197 --- .../io/impl/TracerConfigConnector.java | 57 - .../eclipse/equinox/internal/io/package.html | 10 - .../io/util/AbstractConnectionNotifier.java | 112 -- .../internal/io/util/AbstractDatagram.java | 437 ----- .../eclipse/equinox/internal/io/util/URI.java | 350 ---- bundles/org.eclipse.equinox.ip/.classpath | 7 - bundles/org.eclipse.equinox.ip/.project | 34 - .../.settings/org.eclipse.core.runtime.prefs | 2 - .../.settings/org.eclipse.jdt.core.prefs | 474 ----- .../.settings/org.eclipse.jdt.ui.prefs | 56 - .../.settings/org.eclipse.pde.core.prefs | 3 - .../META-INF/MANIFEST.MF | 43 - .../OSGI-INF/permissions.perm | 1 - bundles/org.eclipse.equinox.ip/about.html | 36 - .../org.eclipse.equinox.ip/build.properties | 22 - .../forceQualifierUpdate.txt | 2 - .../org.eclipse.equinox.ip/plugin.properties | 17 - bundles/org.eclipse.equinox.ip/pom.xml | 24 - bundles/org.eclipse.equinox.ip/props.txt | 16 - .../internal/ip/ProvisioningInfoProvider.java | 86 - .../internal/ip/ProvisioningStorage.java | 51 - .../internal/ip/dscagent/DiscoveryAgent.java | 272 --- .../eclipse/equinox/internal/ip/impl/Log.java | 173 -- .../internal/ip/impl/ProvisioningAgent.java | 1555 ----------------- .../internal/ip/impl/ProvisioningData.java | 155 -- .../eclipse/equinox/internal/ip/package.html | 9 - .../internal/ip/provider/BaseProvider.java | 93 - .../provider/env/EnvironmentInfoProvider.java | 130 -- .../ip/provider/file/FileProvider.java | 192 -- .../internal/ip/provider/http/Context.java | 66 - .../ip/provider/http/HttpProvider.java | 290 --- .../internal/ip/storage/cm/CMStorage.java | 242 --- .../internal/ip/storage/file/FileStorage.java | 188 -- .../.classpath | 6 - .../.project | 28 - .../.settings/org.eclipse.core.runtime.prefs | 2 - .../.settings/org.eclipse.jdt.core.prefs | 387 ---- .../.settings/org.eclipse.jdt.ui.prefs | 3 - .../.settings/org.eclipse.pde.prefs | 25 - .../META-INF/MANIFEST.MF | 13 - .../META-INF/p2.inf | 18 - .../about.html | 36 - .../build.properties | 3 - .../forceQualifierUpdate.txt | 2 - .../pom.xml | 24 - .../.classpath | 5 - .../.project | 29 - .../.settings/org.eclipse.core.runtime.prefs | 2 - .../.settings/org.eclipse.jdt.core.prefs | 387 ---- .../.settings/org.eclipse.jdt.ui.prefs | 3 - .../META-INF/MANIFEST.MF | 8 - .../build.properties | 2 - .../forceQualifierUpdate.txt | 2 - .../pom.xml | 28 - .../templates/build.properties | 5 - .../templates/feature.xml | 23 - .../templates/rootfiles/launch.ini | 11 - ....equinox.servletbridge_1.2.0.v20091026.jar | Bin 39796 -> 0 bytes .../templates/rootfiles/web.xml | 64 - .../templates/template.product | 33 - bundles/org.eclipse.equinox.util/.classpath | 7 - bundles/org.eclipse.equinox.util/.project | 34 - .../.settings/org.eclipse.core.runtime.prefs | 2 - .../.settings/org.eclipse.jdt.core.prefs | 528 ------ .../.settings/org.eclipse.jdt.ui.prefs | 65 - .../.settings/org.eclipse.pde.core.prefs | 4 - .../META-INF/MANIFEST.MF | 29 - .../OSGI-INF/permissions.perm | 1 - bundles/org.eclipse.equinox.util/about.html | 36 - .../org.eclipse.equinox.util/build.properties | 22 - .../forceQualifierUpdate.txt | 2 - .../plugin.properties | 17 - bundles/org.eclipse.equinox.util/pom.xml | 24 - .../equinox/internal/util/TracerMap.java | 53 - .../equinox/internal/util/UtilActivator.java | 200 --- .../internal/util/event/EventThread.java | 315 ---- .../equinox/internal/util/event/Queue.java | 100 -- .../internal/util/event/SystemListener.java | 43 - .../equinox/internal/util/event/package.html | 1 - .../internal/util/hash/HashIntObjNS.java | 276 --- .../internal/util/hash/HashIntObjS.java | 62 - .../internal/util/hash/HashLongObjNS.java | 276 --- .../internal/util/hash/HashLongObjS.java | 62 - .../internal/util/hash/HashObjIntNS.java | 298 ---- .../internal/util/hash/HashObjIntS.java | 62 - .../internal/util/hash/HashObjLongNS.java | 284 --- .../internal/util/hash/HashObjLongS.java | 62 - .../equinox/internal/util/hash/package.html | 9 - .../util/impl/tpt/ServiceFactoryImpl.java | 91 - .../util/impl/tpt/threadpool/Executor.java | 157 -- .../util/impl/tpt/threadpool/Job.java | 110 -- .../tpt/threadpool/ThreadPoolFactoryImpl.java | 168 -- .../tpt/threadpool/ThreadPoolManagerImpl.java | 267 --- .../util/impl/tpt/timer/TimerFactory.java | 95 - .../util/impl/tpt/timer/TimerImpl.java | 282 --- .../util/impl/tpt/timer/TimerQueue.java | 207 --- .../util/impl/tpt/timer/TimerQueueNode.java | 178 -- .../internal/util/pool/ObjectCreator.java | 25 - .../internal/util/pool/ObjectPool.java | 193 -- .../equinox/internal/util/pool/package.html | 9 - .../equinox/internal/util/ref/Log.java | 834 --------- .../internal/util/ref/LogInterface.java | 110 -- .../equinox/internal/util/ref/TimerRef.java | 43 - .../equinox/internal/util/ref/package.html | 36 - .../util/security/PrivilegedRunner.java | 172 -- .../internal/util/security/SecurityUtil.java | 756 -------- .../internal/util/security/package.html | 13 - .../util/threadpool/ThreadContext.java | 38 - .../util/threadpool/ThreadPoolFactory.java | 45 - .../util/threadpool/ThreadPoolManager.java | 68 - .../internal/util/threadpool/package.html | 165 -- .../equinox/internal/util/timer/Timer.java | 197 --- .../internal/util/timer/TimerListener.java | 39 - .../equinox/internal/util/timer/package.html | 174 -- .../org.eclipse.equinox.wireadmin/.classpath | 7 - .../org.eclipse.equinox.wireadmin/.project | 34 - .../.settings/org.eclipse.core.runtime.prefs | 2 - .../.settings/org.eclipse.jdt.core.prefs | 474 ----- .../.settings/org.eclipse.jdt.ui.prefs | 56 - .../.settings/org.eclipse.pde.core.prefs | 3 - .../META-INF/MANIFEST.MF | 19 - .../OSGI-INF/permissions.perm | 1 - .../org.eclipse.equinox.wireadmin/about.html | 36 - .../build.properties | 22 - .../forceQualifierUpdate.txt | 2 - .../plugin.properties | 17 - bundles/org.eclipse.equinox.wireadmin/pom.xml | 24 - .../equinox/internal/wireadmin/Activator.java | 150 -- .../internal/wireadmin/EventDispatcher.java | 268 --- .../internal/wireadmin/NotificationEvent.java | 41 - .../equinox/internal/wireadmin/TracerMap.java | 54 - .../internal/wireadmin/WireAdminImpl.java | 605 ------- .../equinox/internal/wireadmin/WireImpl.java | 858 --------- .../internal/wireadmin/WireProperties.java | 43 - .../internal/wireadmin/WireReDispatcher.java | 392 ----- .../.project | 17 - .../.settings/org.eclipse.core.runtime.prefs | 2 - .../build.properties | 17 - .../feature.properties | 39 - .../feature.xml | 40 - .../forceQualifierUpdate.txt | 4 - .../pom.xml | 24 - .../rootfiles/launch.ini | 12 - ....equinox.servletbridge_1.2.0.v20100201.jar | Bin 41162 -> 0 bytes .../rootfiles/web.xml | 65 - pom.xml | 17 - 193 files changed, 20341 deletions(-) delete mode 100644 bundles/org.eclipse.equinox.http.jetty.starter/.classpath delete mode 100644 bundles/org.eclipse.equinox.http.jetty.starter/.project delete mode 100644 bundles/org.eclipse.equinox.http.jetty.starter/.settings/org.eclipse.jdt.core.prefs delete mode 100644 bundles/org.eclipse.equinox.http.jetty.starter/.settings/org.eclipse.jdt.ui.prefs delete mode 100644 bundles/org.eclipse.equinox.http.jetty.starter/META-INF/MANIFEST.MF delete mode 100644 bundles/org.eclipse.equinox.http.jetty.starter/about.html delete mode 100644 bundles/org.eclipse.equinox.http.jetty.starter/build.properties delete mode 100644 bundles/org.eclipse.equinox.http.jetty.starter/plugin.properties delete mode 100644 bundles/org.eclipse.equinox.http.jetty.starter/pom.xml delete mode 100644 bundles/org.eclipse.equinox.http.jetty.starter/src/org/eclipse/equinox/http/jetty/starter/internal/Activator.java delete mode 100644 bundles/org.eclipse.equinox.io/.classpath delete mode 100644 bundles/org.eclipse.equinox.io/.project delete mode 100644 bundles/org.eclipse.equinox.io/.settings/org.eclipse.core.runtime.prefs delete mode 100644 bundles/org.eclipse.equinox.io/.settings/org.eclipse.jdt.core.prefs delete mode 100644 bundles/org.eclipse.equinox.io/.settings/org.eclipse.jdt.ui.prefs delete mode 100644 bundles/org.eclipse.equinox.io/.settings/org.eclipse.pde.core.prefs delete mode 100644 bundles/org.eclipse.equinox.io/META-INF/MANIFEST.MF delete mode 100644 bundles/org.eclipse.equinox.io/OSGI-INF/permissions.perm delete mode 100644 bundles/org.eclipse.equinox.io/about.html delete mode 100644 bundles/org.eclipse.equinox.io/build.properties delete mode 100644 bundles/org.eclipse.equinox.io/forceQualifierUpdate.txt delete mode 100644 bundles/org.eclipse.equinox.io/osgi/org/osgi/service/io/ConnectionFactory.java delete mode 100644 bundles/org.eclipse.equinox.io/osgi/org/osgi/service/io/ConnectorService.java delete mode 100644 bundles/org.eclipse.equinox.io/osgi/org/osgi/service/io/package-info.java delete mode 100644 bundles/org.eclipse.equinox.io/osgi/org/osgi/service/io/packageinfo delete mode 100644 bundles/org.eclipse.equinox.io/plugin.properties delete mode 100644 bundles/org.eclipse.equinox.io/pom.xml delete mode 100644 bundles/org.eclipse.equinox.io/src/javax/microedition/io/Connection.java delete mode 100644 bundles/org.eclipse.equinox.io/src/javax/microedition/io/ConnectionNotFoundException.java delete mode 100644 bundles/org.eclipse.equinox.io/src/javax/microedition/io/Connector.java delete mode 100644 bundles/org.eclipse.equinox.io/src/javax/microedition/io/ContentConnection.java delete mode 100644 bundles/org.eclipse.equinox.io/src/javax/microedition/io/Datagram.java delete mode 100644 bundles/org.eclipse.equinox.io/src/javax/microedition/io/DatagramConnection.java delete mode 100644 bundles/org.eclipse.equinox.io/src/javax/microedition/io/HttpConnection.java delete mode 100644 bundles/org.eclipse.equinox.io/src/javax/microedition/io/InputConnection.java delete mode 100644 bundles/org.eclipse.equinox.io/src/javax/microedition/io/OutputConnection.java delete mode 100644 bundles/org.eclipse.equinox.io/src/javax/microedition/io/StreamConnection.java delete mode 100644 bundles/org.eclipse.equinox.io/src/javax/microedition/io/StreamConnectionNotifier.java delete mode 100644 bundles/org.eclipse.equinox.io/src/javax/microedition/io/package.html delete mode 100644 bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/ConnectionListener.java delete mode 100644 bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/ConnectionNotifier.java delete mode 100644 bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/RandomAccessConnection.java delete mode 100644 bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/impl/Activator.java delete mode 100644 bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/impl/ConnectionFactoryListener.java delete mode 100644 bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/impl/ConnectionNotifierImpl.java delete mode 100644 bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/impl/ConnectorServiceImpl.java delete mode 100644 bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/impl/PrivilegedRunner.java delete mode 100644 bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/impl/TracerConfigConnector.java delete mode 100644 bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/package.html delete mode 100644 bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/util/AbstractConnectionNotifier.java delete mode 100644 bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/util/AbstractDatagram.java delete mode 100644 bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/util/URI.java delete mode 100644 bundles/org.eclipse.equinox.ip/.classpath delete mode 100644 bundles/org.eclipse.equinox.ip/.project delete mode 100644 bundles/org.eclipse.equinox.ip/.settings/org.eclipse.core.runtime.prefs delete mode 100644 bundles/org.eclipse.equinox.ip/.settings/org.eclipse.jdt.core.prefs delete mode 100644 bundles/org.eclipse.equinox.ip/.settings/org.eclipse.jdt.ui.prefs delete mode 100644 bundles/org.eclipse.equinox.ip/.settings/org.eclipse.pde.core.prefs delete mode 100644 bundles/org.eclipse.equinox.ip/META-INF/MANIFEST.MF delete mode 100644 bundles/org.eclipse.equinox.ip/OSGI-INF/permissions.perm delete mode 100644 bundles/org.eclipse.equinox.ip/about.html delete mode 100644 bundles/org.eclipse.equinox.ip/build.properties delete mode 100644 bundles/org.eclipse.equinox.ip/forceQualifierUpdate.txt delete mode 100644 bundles/org.eclipse.equinox.ip/plugin.properties delete mode 100644 bundles/org.eclipse.equinox.ip/pom.xml delete mode 100644 bundles/org.eclipse.equinox.ip/props.txt delete mode 100644 bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/ProvisioningInfoProvider.java delete mode 100644 bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/ProvisioningStorage.java delete mode 100644 bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/dscagent/DiscoveryAgent.java delete mode 100644 bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/impl/Log.java delete mode 100644 bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/impl/ProvisioningAgent.java delete mode 100644 bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/impl/ProvisioningData.java delete mode 100644 bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/package.html delete mode 100644 bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/provider/BaseProvider.java delete mode 100644 bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/provider/env/EnvironmentInfoProvider.java delete mode 100644 bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/provider/file/FileProvider.java delete mode 100644 bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/provider/http/Context.java delete mode 100644 bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/provider/http/HttpProvider.java delete mode 100644 bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/storage/cm/CMStorage.java delete mode 100644 bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/storage/file/FileStorage.java delete mode 100644 bundles/org.eclipse.equinox.servletbridge.extensionbundle/.classpath delete mode 100644 bundles/org.eclipse.equinox.servletbridge.extensionbundle/.project delete mode 100644 bundles/org.eclipse.equinox.servletbridge.extensionbundle/.settings/org.eclipse.core.runtime.prefs delete mode 100644 bundles/org.eclipse.equinox.servletbridge.extensionbundle/.settings/org.eclipse.jdt.core.prefs delete mode 100644 bundles/org.eclipse.equinox.servletbridge.extensionbundle/.settings/org.eclipse.jdt.ui.prefs delete mode 100644 bundles/org.eclipse.equinox.servletbridge.extensionbundle/.settings/org.eclipse.pde.prefs delete mode 100644 bundles/org.eclipse.equinox.servletbridge.extensionbundle/META-INF/MANIFEST.MF delete mode 100644 bundles/org.eclipse.equinox.servletbridge.extensionbundle/META-INF/p2.inf delete mode 100644 bundles/org.eclipse.equinox.servletbridge.extensionbundle/about.html delete mode 100644 bundles/org.eclipse.equinox.servletbridge.extensionbundle/build.properties delete mode 100644 bundles/org.eclipse.equinox.servletbridge.extensionbundle/forceQualifierUpdate.txt delete mode 100644 bundles/org.eclipse.equinox.servletbridge.extensionbundle/pom.xml delete mode 100644 bundles/org.eclipse.equinox.servletbridge.template/.classpath delete mode 100644 bundles/org.eclipse.equinox.servletbridge.template/.project delete mode 100644 bundles/org.eclipse.equinox.servletbridge.template/.settings/org.eclipse.core.runtime.prefs delete mode 100644 bundles/org.eclipse.equinox.servletbridge.template/.settings/org.eclipse.jdt.core.prefs delete mode 100644 bundles/org.eclipse.equinox.servletbridge.template/.settings/org.eclipse.jdt.ui.prefs delete mode 100644 bundles/org.eclipse.equinox.servletbridge.template/META-INF/MANIFEST.MF delete mode 100644 bundles/org.eclipse.equinox.servletbridge.template/build.properties delete mode 100644 bundles/org.eclipse.equinox.servletbridge.template/forceQualifierUpdate.txt delete mode 100644 bundles/org.eclipse.equinox.servletbridge.template/pom.xml delete mode 100644 bundles/org.eclipse.equinox.servletbridge.template/templates/build.properties delete mode 100644 bundles/org.eclipse.equinox.servletbridge.template/templates/feature.xml delete mode 100644 bundles/org.eclipse.equinox.servletbridge.template/templates/rootfiles/launch.ini delete mode 100644 bundles/org.eclipse.equinox.servletbridge.template/templates/rootfiles/lib/org.eclipse.equinox.servletbridge_1.2.0.v20091026.jar delete mode 100644 bundles/org.eclipse.equinox.servletbridge.template/templates/rootfiles/web.xml delete mode 100644 bundles/org.eclipse.equinox.servletbridge.template/templates/template.product delete mode 100644 bundles/org.eclipse.equinox.util/.classpath delete mode 100644 bundles/org.eclipse.equinox.util/.project delete mode 100644 bundles/org.eclipse.equinox.util/.settings/org.eclipse.core.runtime.prefs delete mode 100644 bundles/org.eclipse.equinox.util/.settings/org.eclipse.jdt.core.prefs delete mode 100644 bundles/org.eclipse.equinox.util/.settings/org.eclipse.jdt.ui.prefs delete mode 100644 bundles/org.eclipse.equinox.util/.settings/org.eclipse.pde.core.prefs delete mode 100644 bundles/org.eclipse.equinox.util/META-INF/MANIFEST.MF delete mode 100644 bundles/org.eclipse.equinox.util/OSGI-INF/permissions.perm delete mode 100644 bundles/org.eclipse.equinox.util/about.html delete mode 100644 bundles/org.eclipse.equinox.util/build.properties delete mode 100644 bundles/org.eclipse.equinox.util/forceQualifierUpdate.txt delete mode 100644 bundles/org.eclipse.equinox.util/plugin.properties delete mode 100644 bundles/org.eclipse.equinox.util/pom.xml delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/TracerMap.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/UtilActivator.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/event/EventThread.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/event/Queue.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/event/SystemListener.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/event/package.html delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashIntObjNS.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashIntObjS.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashLongObjNS.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashLongObjS.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashObjIntNS.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashObjIntS.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashObjLongNS.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashObjLongS.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/package.html delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/ServiceFactoryImpl.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/threadpool/Executor.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/threadpool/Job.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/threadpool/ThreadPoolFactoryImpl.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/threadpool/ThreadPoolManagerImpl.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/timer/TimerFactory.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/timer/TimerImpl.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/timer/TimerQueue.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/timer/TimerQueueNode.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/pool/ObjectCreator.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/pool/ObjectPool.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/pool/package.html delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/ref/Log.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/ref/LogInterface.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/ref/TimerRef.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/ref/package.html delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/security/PrivilegedRunner.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/security/SecurityUtil.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/security/package.html delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/threadpool/ThreadContext.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/threadpool/ThreadPoolFactory.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/threadpool/ThreadPoolManager.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/threadpool/package.html delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/timer/Timer.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/timer/TimerListener.java delete mode 100644 bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/timer/package.html delete mode 100644 bundles/org.eclipse.equinox.wireadmin/.classpath delete mode 100644 bundles/org.eclipse.equinox.wireadmin/.project delete mode 100644 bundles/org.eclipse.equinox.wireadmin/.settings/org.eclipse.core.runtime.prefs delete mode 100644 bundles/org.eclipse.equinox.wireadmin/.settings/org.eclipse.jdt.core.prefs delete mode 100644 bundles/org.eclipse.equinox.wireadmin/.settings/org.eclipse.jdt.ui.prefs delete mode 100644 bundles/org.eclipse.equinox.wireadmin/.settings/org.eclipse.pde.core.prefs delete mode 100644 bundles/org.eclipse.equinox.wireadmin/META-INF/MANIFEST.MF delete mode 100644 bundles/org.eclipse.equinox.wireadmin/OSGI-INF/permissions.perm delete mode 100644 bundles/org.eclipse.equinox.wireadmin/about.html delete mode 100644 bundles/org.eclipse.equinox.wireadmin/build.properties delete mode 100644 bundles/org.eclipse.equinox.wireadmin/forceQualifierUpdate.txt delete mode 100644 bundles/org.eclipse.equinox.wireadmin/plugin.properties delete mode 100644 bundles/org.eclipse.equinox.wireadmin/pom.xml delete mode 100644 bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/Activator.java delete mode 100644 bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/EventDispatcher.java delete mode 100644 bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/NotificationEvent.java delete mode 100644 bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/TracerMap.java delete mode 100644 bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/WireAdminImpl.java delete mode 100644 bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/WireImpl.java delete mode 100644 bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/WireProperties.java delete mode 100644 bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/WireReDispatcher.java delete mode 100644 features/org.eclipse.equinox.server.servletbridge/.project delete mode 100644 features/org.eclipse.equinox.server.servletbridge/.settings/org.eclipse.core.runtime.prefs delete mode 100644 features/org.eclipse.equinox.server.servletbridge/build.properties delete mode 100644 features/org.eclipse.equinox.server.servletbridge/feature.properties delete mode 100644 features/org.eclipse.equinox.server.servletbridge/feature.xml delete mode 100644 features/org.eclipse.equinox.server.servletbridge/forceQualifierUpdate.txt delete mode 100644 features/org.eclipse.equinox.server.servletbridge/pom.xml delete mode 100644 features/org.eclipse.equinox.server.servletbridge/rootfiles/launch.ini delete mode 100644 features/org.eclipse.equinox.server.servletbridge/rootfiles/lib/org.eclipse.equinox.servletbridge_1.2.0.v20100201.jar delete mode 100644 features/org.eclipse.equinox.server.servletbridge/rootfiles/web.xml diff --git a/bundles/org.eclipse.equinox.http.jetty.starter/.classpath b/bundles/org.eclipse.equinox.http.jetty.starter/.classpath deleted file mode 100644 index eca7bdba8f..0000000000 --- a/bundles/org.eclipse.equinox.http.jetty.starter/.classpath +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/bundles/org.eclipse.equinox.http.jetty.starter/.project b/bundles/org.eclipse.equinox.http.jetty.starter/.project deleted file mode 100644 index 4588e4eb42..0000000000 --- a/bundles/org.eclipse.equinox.http.jetty.starter/.project +++ /dev/null @@ -1,34 +0,0 @@ - - - org.eclipse.equinox.http.jetty.starter - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - org.eclipse.pde.api.tools.apiAnalysisBuilder - - - - - - org.eclipse.pde.PluginNature - org.eclipse.jdt.core.javanature - org.eclipse.pde.api.tools.apiAnalysisNature - - diff --git a/bundles/org.eclipse.equinox.http.jetty.starter/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.http.jetty.starter/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 47e288ed27..0000000000 --- a/bundles/org.eclipse.equinox.http.jetty.starter/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,526 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.builder.cleanOutputFolder=clean -org.eclipse.jdt.core.builder.duplicateResourceTask=warning -org.eclipse.jdt.core.builder.invalidClasspath=abort -org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch -org.eclipse.jdt.core.circularClasspath=error -org.eclipse.jdt.core.classpath.exclusionPatterns=enabled -org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled -org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled -org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore -org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull -org.eclipse.jdt.core.compiler.annotation.nonnull.secondary= -org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault -org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary= -org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable -org.eclipse.jdt.core.compiler.annotation.nullable.secondary= -org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.8 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.doc.comment.support=enabled -org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000 -org.eclipse.jdt.core.compiler.problem.APILeak=warning -org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.autoboxing=ignore -org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning -org.eclipse.jdt.core.compiler.problem.deadCode=warning -org.eclipse.jdt.core.compiler.problem.deprecation=warning -org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled -org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled -org.eclipse.jdt.core.compiler.problem.discouragedReference=error -org.eclipse.jdt.core.compiler.problem.emptyStatement=warning -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning -org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore -org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled -org.eclipse.jdt.core.compiler.problem.fieldHiding=warning -org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore -org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning -org.eclipse.jdt.core.compiler.problem.forbiddenReference=error -org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning -org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled -org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning -org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore -org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning -org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private -org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning -org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning -org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore -org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning -org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled -org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled -org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public -org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled -org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning -org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore -org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning -org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning -org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning -org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning -org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning -org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error -org.eclipse.jdt.core.compiler.problem.nullReference=warning -org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error -org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning -org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning -org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore -org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning -org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning -org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore -org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore -org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning -org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning -org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore -org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warning -org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning -org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore -org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore -org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled -org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning -org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled -org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled -org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled -org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning -org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning -org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning -org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled -org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning -org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning -org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning -org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning -org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning -org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled -org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info -org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning -org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning -org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled -org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedImport=error -org.eclipse.jdt.core.compiler.problem.unusedLabel=warning -org.eclipse.jdt.core.compiler.problem.unusedLocal=warning -org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled -org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error -org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning -org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning -org.eclipse.jdt.core.compiler.source=1.8 -org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false -org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 -org.eclipse.jdt.core.formatter.align_type_members_on_columns=false -org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false -org.eclipse.jdt.core.formatter.align_with_spaces=false -org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_enum_constant=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_local_variable=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_method=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_package=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_parameter=0 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_type=49 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_assertion_message=16 -org.eclipse.jdt.core.formatter.alignment_for_assignment=0 -org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain=0 -org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0 -org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 -org.eclipse.jdt.core.formatter.alignment_for_module_statements=16 -org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 -org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_record_components=16 -org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0 -org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 -org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_shift_operator=0 -org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16 -org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_record_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_type_annotations=0 -org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0 -org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0 -org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 -org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration=0 -org.eclipse.jdt.core.formatter.blank_lines_after_package=1 -org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method=1 -org.eclipse.jdt.core.formatter.blank_lines_before_field=0 -org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 -org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 -org.eclipse.jdt.core.formatter.blank_lines_before_method=1 -org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 -org.eclipse.jdt.core.formatter.blank_lines_before_package=0 -org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 -org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch=0 -org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 -org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_record_constructor=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_record_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true -org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false -org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true -org.eclipse.jdt.core.formatter.comment.format_block_comments=true -org.eclipse.jdt.core.formatter.comment.format_header=false -org.eclipse.jdt.core.formatter.comment.format_html=true -org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true -org.eclipse.jdt.core.formatter.comment.format_line_comments=true -org.eclipse.jdt.core.formatter.comment.format_source_code=true -org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false -org.eclipse.jdt.core.formatter.comment.indent_root_tags=false -org.eclipse.jdt.core.formatter.comment.indent_tag_description=false -org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags=do not insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert -org.eclipse.jdt.core.formatter.comment.line_length=80 -org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true -org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true -org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false -org.eclipse.jdt.core.formatter.compact_else_if=true -org.eclipse.jdt.core.formatter.continuation_indentation=2 -org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 -org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off -org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on -org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false -org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_record_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true -org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_empty_lines=false -org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true -org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false -org.eclipse.jdt.core.formatter.indentation.size=4 -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert -org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_record_components=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert -org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_not_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_record_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert -org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert -org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert -org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_record_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_record_components=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_constructor=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_record_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert -org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.join_lines_in_comments=true -org.eclipse.jdt.core.formatter.join_wrapped_lines=true -org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false -org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false -org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_record_constructor_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_record_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false -org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.lineSplit=120 -org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false -org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false -org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block=0 -org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 -org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_record_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines -org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true -org.eclipse.jdt.core.formatter.tabulation.char=tab -org.eclipse.jdt.core.formatter.tabulation.size=4 -org.eclipse.jdt.core.formatter.text_block_indentation=0 -org.eclipse.jdt.core.formatter.use_on_off_tags=true -org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false -org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true -org.eclipse.jdt.core.formatter.wrap_before_assertion_message_operator=true -org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false -org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true -org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true -org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true -org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true -org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true -org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true -org.eclipse.jdt.core.formatter.wrap_before_relational_operator=true -org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true -org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true -org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true -org.eclipse.jdt.core.incompatibleJDKLevel=ignore -org.eclipse.jdt.core.incompleteClasspath=error -org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter diff --git a/bundles/org.eclipse.equinox.http.jetty.starter/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.equinox.http.jetty.starter/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index 5e992a7ad7..0000000000 --- a/bundles/org.eclipse.equinox.http.jetty.starter/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,56 +0,0 @@ -eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true -formatter_profile=org.eclipse.jdt.ui.default.eclipse_profile -formatter_settings_version=21 -org.eclipse.jdt.ui.ignorelowercasenames=true -org.eclipse.jdt.ui.importorder=; -org.eclipse.jdt.ui.ondemandthreshold=3 -org.eclipse.jdt.ui.staticondemandthreshold=3 -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_serial_version_id=false -sp_cleanup.always_use_blocks=true -sp_cleanup.always_use_parentheses_in_expressions=false -sp_cleanup.always_use_this_for_non_static_field_access=false -sp_cleanup.always_use_this_for_non_static_method_access=false -sp_cleanup.convert_to_enhanced_for_loop=false -sp_cleanup.correct_indentation=false -sp_cleanup.format_source_code=true -sp_cleanup.make_local_variable_final=false -sp_cleanup.make_parameters_final=false -sp_cleanup.make_private_fields_final=true -sp_cleanup.make_variable_declarations_final=true -sp_cleanup.never_use_blocks=false -sp_cleanup.never_use_parentheses_in_expressions=true -sp_cleanup.on_save_use_additional_actions=false -sp_cleanup.organize_imports=true -sp_cleanup.qualify_static_field_accesses_with_declaring_class=false -sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_with_declaring_class=false -sp_cleanup.qualify_static_method_accesses_with_declaring_class=false -sp_cleanup.remove_private_constructors=true -sp_cleanup.remove_trailing_whitespaces=false -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -sp_cleanup.remove_unused_imports=false -sp_cleanup.remove_unused_local_variables=false -sp_cleanup.remove_unused_private_fields=true -sp_cleanup.remove_unused_private_members=false -sp_cleanup.remove_unused_private_methods=true -sp_cleanup.remove_unused_private_types=true -sp_cleanup.sort_members=false -sp_cleanup.sort_members_all=false -sp_cleanup.use_blocks=false -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_parentheses_in_expressions=false -sp_cleanup.use_this_for_non_static_field_access=false -sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true -sp_cleanup.use_this_for_non_static_method_access=false -sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true diff --git a/bundles/org.eclipse.equinox.http.jetty.starter/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.http.jetty.starter/META-INF/MANIFEST.MF deleted file mode 100644 index b83ea324c3..0000000000 --- a/bundles/org.eclipse.equinox.http.jetty.starter/META-INF/MANIFEST.MF +++ /dev/null @@ -1,14 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: %bundleName -Bundle-Vendor: %providerName -Bundle-Localization: plugin -Bundle-SymbolicName: org.eclipse.equinox.http.jetty.starter -Bundle-Version: 1.1.200.qualifier -Bundle-Activator: org.eclipse.equinox.http.jetty.starter.internal.Activator -Import-Package: org.eclipse.equinox.http.jetty;version="[1.0.0,2.0.0)", - org.osgi.framework;version="1.3.0", - org.osgi.framework.startlevel;version="1.0.0" -Bundle-RequiredExecutionEnvironment: JavaSE-1.8 -Comment-Header: The purpose of this plugin is to eagerly start the Jetty Service. It's primary use is in testing the Equinox http.servlet against the OSGi Http Whiteboard CT. -Automatic-Module-Name: org.eclipse.equinox.http.jetty.starter diff --git a/bundles/org.eclipse.equinox.http.jetty.starter/about.html b/bundles/org.eclipse.equinox.http.jetty.starter/about.html deleted file mode 100644 index 164f781a8f..0000000000 --- a/bundles/org.eclipse.equinox.http.jetty.starter/about.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - -About - - -

About This Content

- -

November 30, 2017

-

License

- -

- The Eclipse Foundation makes available all content in this plug-in - ("Content"). Unless otherwise indicated below, the Content - is provided to you under the terms and conditions of the Eclipse - Public License Version 2.0 ("EPL"). A copy of the EPL is - available at http://www.eclipse.org/legal/epl-2.0. - For purposes of the EPL, "Program" will mean the Content. -

- -

- If you did not receive this Content directly from the Eclipse - Foundation, the Content is being redistributed by another party - ("Redistributor") and different terms and conditions may - apply to your use of any object code in the Content. Check the - Redistributor's license that was provided with the Content. If no such - license exists, contact the Redistributor. Unless otherwise indicated - below, the terms and conditions of the EPL still apply to any source - code in the Content and such source code may be obtained at http://www.eclipse.org. -

- - - \ No newline at end of file diff --git a/bundles/org.eclipse.equinox.http.jetty.starter/build.properties b/bundles/org.eclipse.equinox.http.jetty.starter/build.properties deleted file mode 100644 index 11a98a2335..0000000000 --- a/bundles/org.eclipse.equinox.http.jetty.starter/build.properties +++ /dev/null @@ -1,20 +0,0 @@ -############################################################################### -# Copyright (c) 2015 Raymond Auge and others. -# -# This program and the accompanying materials -# are made available under the terms of the Eclipse Public License 2.0 -# which accompanies this distribution, and is available at -# https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# Raymond Auge - initial API and implementation -############################################################################### -source.. = src/ -output.. = bin/ -bin.includes = META-INF/,\ - .,\ - about.html,\ - plugin.properties -src.includes = about.html diff --git a/bundles/org.eclipse.equinox.http.jetty.starter/plugin.properties b/bundles/org.eclipse.equinox.http.jetty.starter/plugin.properties deleted file mode 100644 index 59112e1bcd..0000000000 --- a/bundles/org.eclipse.equinox.http.jetty.starter/plugin.properties +++ /dev/null @@ -1,15 +0,0 @@ -############################################################################### -# Copyright (c) 2015 Raymond Auge and others. -# -# This program and the accompanying materials -# are made available under the terms of the Eclipse Public License 2.0 -# which accompanies this distribution, and is available at -# https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# Raymond Auge - initial API and implementation -############################################################################### -bundleName = Jetty Http Service Starter -providerName = Eclipse.org - Equinox \ No newline at end of file diff --git a/bundles/org.eclipse.equinox.http.jetty.starter/pom.xml b/bundles/org.eclipse.equinox.http.jetty.starter/pom.xml deleted file mode 100644 index 10d21ea1f1..0000000000 --- a/bundles/org.eclipse.equinox.http.jetty.starter/pom.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - 4.0.0 - - rt.equinox.bundles - org.eclipse.equinox.bundles - 4.24.0-SNAPSHOT - ../../ - - org.eclipse.equinox - org.eclipse.equinox.http.jetty.starter - 1.1.200-SNAPSHOT - eclipse-plugin - diff --git a/bundles/org.eclipse.equinox.http.jetty.starter/src/org/eclipse/equinox/http/jetty/starter/internal/Activator.java b/bundles/org.eclipse.equinox.http.jetty.starter/src/org/eclipse/equinox/http/jetty/starter/internal/Activator.java deleted file mode 100644 index 5ed8e3ab98..0000000000 --- a/bundles/org.eclipse.equinox.http.jetty.starter/src/org/eclipse/equinox/http/jetty/starter/internal/Activator.java +++ /dev/null @@ -1,39 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015, 2017 Raymond Auge and others. - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Raymond Auge - initial API and implementation - *******************************************************************************/ - -package org.eclipse.equinox.http.jetty.starter.internal; - -import org.osgi.framework.*; -import org.osgi.framework.startlevel.BundleStartLevel; - -public class Activator implements BundleActivator { - - @Override - public void start(BundleContext context) throws Exception { - Bundle bundle = FrameworkUtil.getBundle(org.eclipse.equinox.http.jetty.JettyConstants.class); - - BundleStartLevel bundleStartLevel = bundle.adapt(BundleStartLevel.class); - - if (bundleStartLevel.isActivationPolicyUsed()) { - bundle.stop(); - bundle.start(); - } - } - - @Override - public void stop(BundleContext context) throws Exception { - // ignore - } - -} diff --git a/bundles/org.eclipse.equinox.io/.classpath b/bundles/org.eclipse.equinox.io/.classpath deleted file mode 100644 index 5329b18fd6..0000000000 --- a/bundles/org.eclipse.equinox.io/.classpath +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/bundles/org.eclipse.equinox.io/.project b/bundles/org.eclipse.equinox.io/.project deleted file mode 100644 index ef5ae899d1..0000000000 --- a/bundles/org.eclipse.equinox.io/.project +++ /dev/null @@ -1,34 +0,0 @@ - - - org.eclipse.equinox.io - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - org.eclipse.pde.api.tools.apiAnalysisBuilder - - - - - - org.eclipse.pde.PluginNature - org.eclipse.jdt.core.javanature - org.eclipse.pde.api.tools.apiAnalysisNature - - diff --git a/bundles/org.eclipse.equinox.io/.settings/org.eclipse.core.runtime.prefs b/bundles/org.eclipse.equinox.io/.settings/org.eclipse.core.runtime.prefs deleted file mode 100644 index 5a0ad22d2a..0000000000 --- a/bundles/org.eclipse.equinox.io/.settings/org.eclipse.core.runtime.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -line.separator=\n diff --git a/bundles/org.eclipse.equinox.io/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.io/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index b1c8691de0..0000000000 --- a/bundles/org.eclipse.equinox.io/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,474 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.builder.cleanOutputFolder=clean -org.eclipse.jdt.core.builder.duplicateResourceTask=warning -org.eclipse.jdt.core.builder.invalidClasspath=abort -org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch -org.eclipse.jdt.core.circularClasspath=error -org.eclipse.jdt.core.classpath.exclusionPatterns=enabled -org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.4 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.doc.comment.support=enabled -org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000 -org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning -org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning -org.eclipse.jdt.core.compiler.problem.autoboxing=ignore -org.eclipse.jdt.core.compiler.problem.deprecation=warning -org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled -org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled -org.eclipse.jdt.core.compiler.problem.discouragedReference=error -org.eclipse.jdt.core.compiler.problem.emptyStatement=warning -org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning -org.eclipse.jdt.core.compiler.problem.fieldHiding=warning -org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore -org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning -org.eclipse.jdt.core.compiler.problem.forbiddenReference=error -org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning -org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning -org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore -org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning -org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private -org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning -org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning -org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled -org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public -org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore -org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning -org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning -org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning -org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning -org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning -org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning -org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled -org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning -org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled -org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning -org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning -org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning -org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning -org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning -org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning -org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning -org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore -org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation=warning -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled -org.eclipse.jdt.core.compiler.problem.unusedImport=error -org.eclipse.jdt.core.compiler.problem.unusedLocal=warning -org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled -org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error -org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning -org.eclipse.jdt.core.compiler.source=1.3 -org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false -org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 -org.eclipse.jdt.core.formatter.align_type_members_on_columns=false -org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false -org.eclipse.jdt.core.formatter.align_with_spaces=false -org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_enum_constant=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_local_variable=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_method=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_package=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_parameter=0 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_type=49 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_assertion_message=16 -org.eclipse.jdt.core.formatter.alignment_for_assignment=0 -org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain=0 -org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0 -org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 -org.eclipse.jdt.core.formatter.alignment_for_module_statements=16 -org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 -org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_record_components=16 -org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0 -org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 -org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_shift_operator=0 -org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16 -org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_record_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_type_annotations=0 -org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0 -org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0 -org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 -org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration=0 -org.eclipse.jdt.core.formatter.blank_lines_after_package=1 -org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method=1 -org.eclipse.jdt.core.formatter.blank_lines_before_field=0 -org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 -org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 -org.eclipse.jdt.core.formatter.blank_lines_before_method=1 -org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 -org.eclipse.jdt.core.formatter.blank_lines_before_package=0 -org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 -org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch=0 -org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 -org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_record_constructor=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_record_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true -org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false -org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true -org.eclipse.jdt.core.formatter.comment.format_block_comments=true -org.eclipse.jdt.core.formatter.comment.format_header=false -org.eclipse.jdt.core.formatter.comment.format_html=true -org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true -org.eclipse.jdt.core.formatter.comment.format_line_comments=true -org.eclipse.jdt.core.formatter.comment.format_source_code=true -org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false -org.eclipse.jdt.core.formatter.comment.indent_root_tags=false -org.eclipse.jdt.core.formatter.comment.indent_tag_description=false -org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags=do not insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert -org.eclipse.jdt.core.formatter.comment.line_length=80 -org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true -org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true -org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false -org.eclipse.jdt.core.formatter.compact_else_if=true -org.eclipse.jdt.core.formatter.continuation_indentation=2 -org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 -org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off -org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on -org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false -org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_record_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true -org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_empty_lines=false -org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true -org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false -org.eclipse.jdt.core.formatter.indentation.size=4 -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert -org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_record_components=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert -org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_not_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_record_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert -org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert -org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert -org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_record_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_record_components=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_constructor=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_record_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert -org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.join_lines_in_comments=true -org.eclipse.jdt.core.formatter.join_wrapped_lines=true -org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false -org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false -org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_record_constructor_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_record_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false -org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.lineSplit=120 -org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false -org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false -org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block=0 -org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 -org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_record_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines -org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true -org.eclipse.jdt.core.formatter.tabulation.char=tab -org.eclipse.jdt.core.formatter.tabulation.size=4 -org.eclipse.jdt.core.formatter.text_block_indentation=0 -org.eclipse.jdt.core.formatter.use_on_off_tags=true -org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false -org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true -org.eclipse.jdt.core.formatter.wrap_before_assertion_message_operator=true -org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false -org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true -org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true -org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true -org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true -org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true -org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true -org.eclipse.jdt.core.formatter.wrap_before_relational_operator=true -org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true -org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true -org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true -org.eclipse.jdt.core.incompatibleJDKLevel=ignore -org.eclipse.jdt.core.incompleteClasspath=error -org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter diff --git a/bundles/org.eclipse.equinox.io/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.equinox.io/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index 894ba5a9dd..0000000000 --- a/bundles/org.eclipse.equinox.io/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,56 +0,0 @@ -eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true -formatter_profile=org.eclipse.jdt.ui.default.eclipse_profile -formatter_settings_version=21 -org.eclipse.jdt.ui.ignorelowercasenames=true -org.eclipse.jdt.ui.importorder=; -org.eclipse.jdt.ui.ondemandthreshold=3 -org.eclipse.jdt.ui.staticondemandthreshold=99 -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_serial_version_id=false -sp_cleanup.always_use_blocks=true -sp_cleanup.always_use_parentheses_in_expressions=false -sp_cleanup.always_use_this_for_non_static_field_access=false -sp_cleanup.always_use_this_for_non_static_method_access=false -sp_cleanup.convert_to_enhanced_for_loop=false -sp_cleanup.correct_indentation=false -sp_cleanup.format_source_code=true -sp_cleanup.make_local_variable_final=false -sp_cleanup.make_parameters_final=false -sp_cleanup.make_private_fields_final=true -sp_cleanup.make_variable_declarations_final=true -sp_cleanup.never_use_blocks=false -sp_cleanup.never_use_parentheses_in_expressions=true -sp_cleanup.on_save_use_additional_actions=false -sp_cleanup.organize_imports=true -sp_cleanup.qualify_static_field_accesses_with_declaring_class=false -sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_with_declaring_class=false -sp_cleanup.qualify_static_method_accesses_with_declaring_class=false -sp_cleanup.remove_private_constructors=true -sp_cleanup.remove_trailing_whitespaces=false -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -sp_cleanup.remove_unused_imports=false -sp_cleanup.remove_unused_local_variables=false -sp_cleanup.remove_unused_private_fields=true -sp_cleanup.remove_unused_private_members=false -sp_cleanup.remove_unused_private_methods=true -sp_cleanup.remove_unused_private_types=true -sp_cleanup.sort_members=false -sp_cleanup.sort_members_all=false -sp_cleanup.use_blocks=false -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_parentheses_in_expressions=false -sp_cleanup.use_this_for_non_static_field_access=false -sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true -sp_cleanup.use_this_for_non_static_method_access=false -sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true diff --git a/bundles/org.eclipse.equinox.io/.settings/org.eclipse.pde.core.prefs b/bundles/org.eclipse.equinox.io/.settings/org.eclipse.pde.core.prefs deleted file mode 100644 index c37bbc48aa..0000000000 --- a/bundles/org.eclipse.equinox.io/.settings/org.eclipse.pde.core.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Thu Mar 29 10:30:40 EEST 2007 -eclipse.preferences.version=1 -pluginProject.extensions=false diff --git a/bundles/org.eclipse.equinox.io/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.io/META-INF/MANIFEST.MF deleted file mode 100644 index ec9681fc27..0000000000 --- a/bundles/org.eclipse.equinox.io/META-INF/MANIFEST.MF +++ /dev/null @@ -1,27 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: %bundleName -Bundle-SymbolicName: org.eclipse.equinox.io -Bundle-Version: 1.1.400.qualifier -Bundle-Vendor: %bundleVendor -Bundle-Activator: org.eclipse.equinox.internal.io.impl.Activator -Bundle-Description: This bundle contains service for creating connections. -Import-Package: - javax.microedition.io, - org.eclipse.equinox.internal.util.hash;version="1.0.0", - org.eclipse.equinox.internal.util.pool;version="1.0.0", - org.eclipse.equinox.internal.util.ref;version="1.0.0", - org.osgi.framework;version="1.0", - org.osgi.service.io;version="[1.0,1.1)", - org.osgi.service.log;version="1.0.0", - org.osgi.util.tracker;version="1.2" -Export-Package: - javax.microedition.io, - org.osgi.service.io;version="1.0", - org.eclipse.equinox.internal.io; x-internal:=true, - org.eclipse.equinox.internal.io.impl; x-internal:=true, - org.eclipse.equinox.internal.io.util; x-internal:=true -Bundle-RequiredExecutionEnvironment: OSGi/Minimum-1.0 -Provided-Services: class=org.osgi.service.io.ConnectorService -Bundle-Localization: plugin -Automatic-Module-Name: org.eclipse.equinox.io diff --git a/bundles/org.eclipse.equinox.io/OSGI-INF/permissions.perm b/bundles/org.eclipse.equinox.io/OSGI-INF/permissions.perm deleted file mode 100644 index 6cedcddb8d..0000000000 --- a/bundles/org.eclipse.equinox.io/OSGI-INF/permissions.perm +++ /dev/null @@ -1,18 +0,0 @@ -(org.osgi.framework.PackagePermission "javax.microedition.io" "import") -(org.osgi.framework.PackagePermission "org.osgi.service.io" "import") -(org.osgi.framework.PackagePermission "org.osgi.service.log" "import") -(org.osgi.framework.PackagePermission "org.osgi.util.tracker" "import") -(org.osgi.framework.PackagePermission "org.osgi.framework" "import") -(org.osgi.framework.PackagePermission "org.eclipse.equinox.internal.util.hash" "import") -(org.osgi.framework.PackagePermission "org.eclipse.equinox.internal.util.pool" "import") -(org.osgi.framework.PackagePermission "org.eclipse.equinox.internal.util.ref" "import") -(org.osgi.framework.PackagePermission "org.eclipse.equinox.internal.io" "export") -(org.osgi.framework.PackagePermission "org.eclipse.equinox.internal.io.impl" "export") -(org.osgi.framework.PackagePermission "org.eclipse.equinox.internal.io.util" "export") -(org.osgi.framework.PackagePermission "javax.microedition.io" "export") -(org.osgi.framework.BundlePermission "*" "provide") -(org.osgi.framework.BundlePermission "*" "host") -(org.osgi.framework.ServicePermission "org.osgi.service.io.ConnectionFactory" "get") -(org.osgi.framework.ServicePermission "org.osgi.service.io.ConnectorService" "register") -(java.util.PropertyPermission "*" "read") -(java.net.SocketPermission "*" "listen") diff --git a/bundles/org.eclipse.equinox.io/about.html b/bundles/org.eclipse.equinox.io/about.html deleted file mode 100644 index 164f781a8f..0000000000 --- a/bundles/org.eclipse.equinox.io/about.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - -About - - -

About This Content

- -

November 30, 2017

-

License

- -

- The Eclipse Foundation makes available all content in this plug-in - ("Content"). Unless otherwise indicated below, the Content - is provided to you under the terms and conditions of the Eclipse - Public License Version 2.0 ("EPL"). A copy of the EPL is - available at http://www.eclipse.org/legal/epl-2.0. - For purposes of the EPL, "Program" will mean the Content. -

- -

- If you did not receive this Content directly from the Eclipse - Foundation, the Content is being redistributed by another party - ("Redistributor") and different terms and conditions may - apply to your use of any object code in the Content. Check the - Redistributor's license that was provided with the Content. If no such - license exists, contact the Redistributor. Unless otherwise indicated - below, the terms and conditions of the EPL still apply to any source - code in the Content and such source code may be obtained at http://www.eclipse.org. -

- - - \ No newline at end of file diff --git a/bundles/org.eclipse.equinox.io/build.properties b/bundles/org.eclipse.equinox.io/build.properties deleted file mode 100644 index d0d957875c..0000000000 --- a/bundles/org.eclipse.equinox.io/build.properties +++ /dev/null @@ -1,23 +0,0 @@ -############################################################################### -# Copyright (c) 1997, 2015 by ProSyst Software GmbH -# http://www.prosyst.com -# -# This program and the accompanying materials -# are made available under the terms of the Eclipse Public License 2.0 -# which accompanies this distribution, and is available at -# https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# ProSyst Software GmbH - initial API and implementation -############################################################################### -source.. = osgi/,\ - src/ -output.. = bin/ -bin.includes = META-INF/,\ - .,\ - about.html,\ - plugin.properties,\ - OSGI-INF/ -src.includes = about.html diff --git a/bundles/org.eclipse.equinox.io/forceQualifierUpdate.txt b/bundles/org.eclipse.equinox.io/forceQualifierUpdate.txt deleted file mode 100644 index 56f1032a8a..0000000000 --- a/bundles/org.eclipse.equinox.io/forceQualifierUpdate.txt +++ /dev/null @@ -1,2 +0,0 @@ -# To force a version qualifier update add the bug here -Bug 403352 - Update all parent versions to match our build stream diff --git a/bundles/org.eclipse.equinox.io/osgi/org/osgi/service/io/ConnectionFactory.java b/bundles/org.eclipse.equinox.io/osgi/org/osgi/service/io/ConnectionFactory.java deleted file mode 100644 index 9f6aae71e9..0000000000 --- a/bundles/org.eclipse.equinox.io/osgi/org/osgi/service/io/ConnectionFactory.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) OSGi Alliance (2002, 2013). 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} objects which - * implement the scheme named by {@code IO_SCHEME}. - * - * When a {@code ConnectorService.open} 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} which matches the - * scheme. The {@link #createConnection(String, int, boolean)} method of the - * selected Connection Factory will then be called to create the actual - * {@code Connection} object. - * - * @author $Id$ - */ -public interface ConnectionFactory { - /** - * Service property containing the scheme(s) for which this Connection - * Factory can create {@code Connection} objects. This property is of type - * {@code String[]}. - */ - public static final String IO_SCHEME = "io.scheme"; - - /** - * Create a new {@code Connection} object for the specified URI. - * - * @param name The full URI passed to the {@code ConnectorService.open} - * method - * @param mode The mode parameter passed to the - * {@code ConnectorService.open} method - * @param timeouts The timeouts parameter passed to the - * {@code ConnectorService.open} method - * @return A new {@code javax.microedition.io.Connection} object. - * @throws IOException If a {@code javax.microedition.io.Connection} object - * can not not be created. - */ - public Connection createConnection(String name, int mode, boolean timeouts) throws IOException; -} diff --git a/bundles/org.eclipse.equinox.io/osgi/org/osgi/service/io/ConnectorService.java b/bundles/org.eclipse.equinox.io/osgi/org/osgi/service/io/ConnectorService.java deleted file mode 100644 index 3965bf616b..0000000000 --- a/bundles/org.eclipse.equinox.io/osgi/org/osgi/service/io/ConnectorService.java +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Copyright (c) OSGi Alliance (2002, 2013). 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.DataInputStream; -import java.io.DataOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -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} objects. - * - * When an {@code open*} 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} which matches the scheme. The - * {@code createConnection} method of the selected Connection Factory will then - * be called to create the actual {@code Connection} object. - * - *

- * 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} property) is called. If there is a tie in ranking, - * the service with the lowest service ID (as specified in its - * {@code service.id} property), that is the service that was registered first, - * is called. This is the same algorithm used by - * {@code BundleContext.getServiceReference}. - * - * @author $Id$ - */ -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} object for the specified name. - * - * @param name The URI for the connection. - * @return A new {@code javax.microedition.io.Connection} 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} 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} 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} 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} 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, boolean timeouts)" - */ - public Connection open(String name, int mode, boolean timeouts) throws IOException; - - /** - * Create and open an {@code InputStream} object for the specified name. - * - * @param name The URI for the connection. - * @return An {@code InputStream} 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} object for the specified name. - * - * @param name The URI for the connection. - * @return A {@code DataInputStream} 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} object for the specified name. - * - * @param name The URI for the connection. - * @return An {@code OutputStream} 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} object for the specified name. - * - * @param name The URI for the connection. - * @return A {@code DataOutputStream} 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/bundles/org.eclipse.equinox.io/osgi/org/osgi/service/io/package-info.java b/bundles/org.eclipse.equinox.io/osgi/org/osgi/service/io/package-info.java deleted file mode 100644 index 321a4bd03d..0000000000 --- a/bundles/org.eclipse.equinox.io/osgi/org/osgi/service/io/package-info.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (c) OSGi Alliance (2010, 2012). 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. - */ - -/** - * IO Connector Package Version 1.0. - * - *

- * Bundles wishing to use this package must list the package in the - * Import-Package header of the bundle's manifest. This package has two types of - * users: the consumers that use the API in this package and the providers that - * implement the API in this package. - * - *

- * Example import for consumers using the API in this package: - *

- * {@code Import-Package: org.osgi.service.io; version="[1.0,2.0)", javax.microedition.io} - *

- * Example import for providers implementing the API in this package: - *

- * {@code Import-Package: org.osgi.service.io; version="[1.0,1.1)", javax.microedition.io} - * - * @version 1.0 - * @author $Id$ - */ - -package org.osgi.service.io; - diff --git a/bundles/org.eclipse.equinox.io/osgi/org/osgi/service/io/packageinfo b/bundles/org.eclipse.equinox.io/osgi/org/osgi/service/io/packageinfo deleted file mode 100644 index 7c8de0324f..0000000000 --- a/bundles/org.eclipse.equinox.io/osgi/org/osgi/service/io/packageinfo +++ /dev/null @@ -1 +0,0 @@ -version 1.0 diff --git a/bundles/org.eclipse.equinox.io/plugin.properties b/bundles/org.eclipse.equinox.io/plugin.properties deleted file mode 100644 index 251be750a4..0000000000 --- a/bundles/org.eclipse.equinox.io/plugin.properties +++ /dev/null @@ -1,17 +0,0 @@ -############################################################################### -# Copyright (c) 1997-2009 by ProSyst Software GmbH -# http://www.prosyst.com -# -# This program and the accompanying materials -# are made available under the terms of the Eclipse Public License 2.0 -# which accompanies this distribution, and is available at -# https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# ProSyst Software GmbH - initial API and implementation -############################################################################### -#Properties file for org.eclipse.equinox.io -bundleVendor = Eclipse.org - Equinox -bundleName = IO Connector Service \ No newline at end of file diff --git a/bundles/org.eclipse.equinox.io/pom.xml b/bundles/org.eclipse.equinox.io/pom.xml deleted file mode 100644 index d54d3d5f88..0000000000 --- a/bundles/org.eclipse.equinox.io/pom.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - 4.0.0 - - rt.equinox.bundles - org.eclipse.equinox.bundles - 4.24.0-SNAPSHOT - ../../ - - org.eclipse.equinox - org.eclipse.equinox.io - 1.1.400-SNAPSHOT - eclipse-plugin - - - - org.eclipse.tycho - tycho-compiler-plugin - ${tycho.version} - - - -nowarn:[${project.basedir}/osgi] - - - - - - diff --git a/bundles/org.eclipse.equinox.io/src/javax/microedition/io/Connection.java b/bundles/org.eclipse.equinox.io/src/javax/microedition/io/Connection.java deleted file mode 100644 index c159034272..0000000000 --- a/bundles/org.eclipse.equinox.io/src/javax/microedition/io/Connection.java +++ /dev/null @@ -1,21 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package javax.microedition.io; - -public abstract interface Connection { - - public abstract void close() throws java.io.IOException; - -} diff --git a/bundles/org.eclipse.equinox.io/src/javax/microedition/io/ConnectionNotFoundException.java b/bundles/org.eclipse.equinox.io/src/javax/microedition/io/ConnectionNotFoundException.java deleted file mode 100644 index 702d28fd57..0000000000 --- a/bundles/org.eclipse.equinox.io/src/javax/microedition/io/ConnectionNotFoundException.java +++ /dev/null @@ -1,27 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package javax.microedition.io; - -public class ConnectionNotFoundException extends java.io.IOException { - - private static final long serialVersionUID = 1L; - - public ConnectionNotFoundException() { - } - - public ConnectionNotFoundException(java.lang.String var0) { - } - -} diff --git a/bundles/org.eclipse.equinox.io/src/javax/microedition/io/Connector.java b/bundles/org.eclipse.equinox.io/src/javax/microedition/io/Connector.java deleted file mode 100644 index f24c4c6b2a..0000000000 --- a/bundles/org.eclipse.equinox.io/src/javax/microedition/io/Connector.java +++ /dev/null @@ -1,56 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package javax.microedition.io; - -public class Connector { - - private Connector() { - } - - public static javax.microedition.io.Connection open(java.lang.String var0) throws java.io.IOException { - return null; - } - - public static javax.microedition.io.Connection open(java.lang.String var0, int var1) throws java.io.IOException { - return null; - } - - public static javax.microedition.io.Connection open(java.lang.String var0, int var1, boolean var2) throws java.io.IOException { - return null; - } - - public static java.io.DataInputStream openDataInputStream(java.lang.String var0) throws java.io.IOException { - return null; - } - - public static java.io.DataOutputStream openDataOutputStream(java.lang.String var0) throws java.io.IOException { - return null; - } - - public static java.io.InputStream openInputStream(java.lang.String var0) throws java.io.IOException { - return null; - } - - public static java.io.OutputStream openOutputStream(java.lang.String var0) throws java.io.IOException { - return null; - } - - public final static int READ = 1; - - public final static int WRITE = 2; - - public final static int READ_WRITE = 3; - -} diff --git a/bundles/org.eclipse.equinox.io/src/javax/microedition/io/ContentConnection.java b/bundles/org.eclipse.equinox.io/src/javax/microedition/io/ContentConnection.java deleted file mode 100644 index eb57ae2888..0000000000 --- a/bundles/org.eclipse.equinox.io/src/javax/microedition/io/ContentConnection.java +++ /dev/null @@ -1,25 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package javax.microedition.io; - -public abstract interface ContentConnection extends javax.microedition.io.StreamConnection { - - public abstract java.lang.String getEncoding(); - - public abstract long getLength(); - - public abstract java.lang.String getType(); - -} diff --git a/bundles/org.eclipse.equinox.io/src/javax/microedition/io/Datagram.java b/bundles/org.eclipse.equinox.io/src/javax/microedition/io/Datagram.java deleted file mode 100644 index fd13ffb0ea..0000000000 --- a/bundles/org.eclipse.equinox.io/src/javax/microedition/io/Datagram.java +++ /dev/null @@ -1,37 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package javax.microedition.io; - -public abstract interface Datagram extends java.io.DataInput, java.io.DataOutput { - - public abstract java.lang.String getAddress(); - - public abstract byte[] getData(); - - public abstract int getLength(); - - public abstract int getOffset(); - - public abstract void reset(); - - public abstract void setAddress(javax.microedition.io.Datagram var0); - - public abstract void setAddress(java.lang.String var0) throws java.io.IOException; - - public abstract void setData(byte[] var0, int var1, int var2); - - public abstract void setLength(int var0); - -} diff --git a/bundles/org.eclipse.equinox.io/src/javax/microedition/io/DatagramConnection.java b/bundles/org.eclipse.equinox.io/src/javax/microedition/io/DatagramConnection.java deleted file mode 100644 index b00556f975..0000000000 --- a/bundles/org.eclipse.equinox.io/src/javax/microedition/io/DatagramConnection.java +++ /dev/null @@ -1,35 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package javax.microedition.io; - -public abstract interface DatagramConnection extends javax.microedition.io.Connection { - - public abstract int getMaximumLength() throws java.io.IOException; - - public abstract int getNominalLength() throws java.io.IOException; - - public abstract javax.microedition.io.Datagram newDatagram(byte[] var0, int var1) throws java.io.IOException; - - public abstract javax.microedition.io.Datagram newDatagram(byte[] var0, int var1, java.lang.String var2) throws java.io.IOException; - - public abstract javax.microedition.io.Datagram newDatagram(int var0) throws java.io.IOException; - - public abstract javax.microedition.io.Datagram newDatagram(int var0, java.lang.String var1) throws java.io.IOException; - - public abstract void receive(javax.microedition.io.Datagram var0) throws java.io.IOException; - - public abstract void send(javax.microedition.io.Datagram var0) throws java.io.IOException; - -} diff --git a/bundles/org.eclipse.equinox.io/src/javax/microedition/io/HttpConnection.java b/bundles/org.eclipse.equinox.io/src/javax/microedition/io/HttpConnection.java deleted file mode 100644 index 7896d96ea6..0000000000 --- a/bundles/org.eclipse.equinox.io/src/javax/microedition/io/HttpConnection.java +++ /dev/null @@ -1,143 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package javax.microedition.io; - -public abstract interface HttpConnection extends javax.microedition.io.ContentConnection { - - public abstract long getDate() throws java.io.IOException; - - public abstract long getExpiration() throws java.io.IOException; - - public abstract java.lang.String getFile(); - - public abstract java.lang.String getHeaderField(int var0) throws java.io.IOException; - - public abstract java.lang.String getHeaderField(java.lang.String var0) throws java.io.IOException; - - public abstract long getHeaderFieldDate(java.lang.String var0, long var1) throws java.io.IOException; - - public abstract int getHeaderFieldInt(java.lang.String var0, int var1) throws java.io.IOException; - - public abstract java.lang.String getHeaderFieldKey(int var0) throws java.io.IOException; - - public abstract java.lang.String getHost(); - - public abstract long getLastModified() throws java.io.IOException; - - public abstract int getPort(); - - public abstract java.lang.String getProtocol(); - - public abstract java.lang.String getQuery(); - - public abstract java.lang.String getRef(); - - public abstract java.lang.String getRequestMethod(); - - public abstract java.lang.String getRequestProperty(java.lang.String var0); - - public abstract int getResponseCode() throws java.io.IOException; - - public abstract java.lang.String getResponseMessage() throws java.io.IOException; - - public abstract java.lang.String getURL(); - - public abstract void setRequestMethod(java.lang.String var0) throws java.io.IOException; - - public abstract void setRequestProperty(java.lang.String var0, java.lang.String var1) throws java.io.IOException; - - public final static java.lang.String GET = "GET"; - - public final static java.lang.String HEAD = "HEAD"; - - public final static java.lang.String POST = "POST"; - - public final static int HTTP_ACCEPTED = 202; - - public final static int HTTP_BAD_GATEWAY = 502; - - public final static int HTTP_BAD_METHOD = 405; - - public final static int HTTP_BAD_REQUEST = 400; - - public final static int HTTP_CLIENT_TIMEOUT = 408; - - public final static int HTTP_CONFLICT = 409; - - public final static int HTTP_CREATED = 201; - - public final static int HTTP_ENTITY_TOO_LARGE = 413; - - public final static int HTTP_EXPECT_FAILED = 417; - - public final static int HTTP_FORBIDDEN = 403; - - public final static int HTTP_GATEWAY_TIMEOUT = 504; - - public final static int HTTP_GONE = 410; - - public final static int HTTP_INTERNAL_ERROR = 500; - - public final static int HTTP_LENGTH_REQUIRED = 411; - - public final static int HTTP_MOVED_PERM = 301; - - public final static int HTTP_MOVED_TEMP = 302; - - public final static int HTTP_MULT_CHOICE = 300; - - public final static int HTTP_NO_CONTENT = 204; - - public final static int HTTP_NOT_ACCEPTABLE = 406; - - public final static int HTTP_NOT_AUTHORITATIVE = 203; - - public final static int HTTP_NOT_FOUND = 404; - - public final static int HTTP_NOT_IMPLEMENTED = 501; - - public final static int HTTP_NOT_MODIFIED = 304; - - public final static int HTTP_OK = 200; - - public final static int HTTP_PARTIAL = 206; - - public final static int HTTP_PAYMENT_REQUIRED = 402; - - public final static int HTTP_PRECON_FAILED = 412; - - public final static int HTTP_PROXY_AUTH = 407; - - public final static int HTTP_REQ_TOO_LONG = 414; - - public final static int HTTP_RESET = 205; - - public final static int HTTP_SEE_OTHER = 303; - - public final static int HTTP_TEMP_REDIRECT = 307; - - public final static int HTTP_UNAUTHORIZED = 401; - - public final static int HTTP_UNAVAILABLE = 503; - - public final static int HTTP_UNSUPPORTED_RANGE = 416; - - public final static int HTTP_UNSUPPORTED_TYPE = 415; - - public final static int HTTP_USE_PROXY = 305; - - public final static int HTTP_VERSION = 505; - -} diff --git a/bundles/org.eclipse.equinox.io/src/javax/microedition/io/InputConnection.java b/bundles/org.eclipse.equinox.io/src/javax/microedition/io/InputConnection.java deleted file mode 100644 index 4e112cdb87..0000000000 --- a/bundles/org.eclipse.equinox.io/src/javax/microedition/io/InputConnection.java +++ /dev/null @@ -1,23 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package javax.microedition.io; - -public abstract interface InputConnection extends javax.microedition.io.Connection { - - public abstract java.io.DataInputStream openDataInputStream() throws java.io.IOException; - - public abstract java.io.InputStream openInputStream() throws java.io.IOException; - -} diff --git a/bundles/org.eclipse.equinox.io/src/javax/microedition/io/OutputConnection.java b/bundles/org.eclipse.equinox.io/src/javax/microedition/io/OutputConnection.java deleted file mode 100644 index e9c53c965d..0000000000 --- a/bundles/org.eclipse.equinox.io/src/javax/microedition/io/OutputConnection.java +++ /dev/null @@ -1,23 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package javax.microedition.io; - -public abstract interface OutputConnection extends javax.microedition.io.Connection { - - public abstract java.io.DataOutputStream openDataOutputStream() throws java.io.IOException; - - public abstract java.io.OutputStream openOutputStream() throws java.io.IOException; - -} diff --git a/bundles/org.eclipse.equinox.io/src/javax/microedition/io/StreamConnection.java b/bundles/org.eclipse.equinox.io/src/javax/microedition/io/StreamConnection.java deleted file mode 100644 index 6e6695c4c4..0000000000 --- a/bundles/org.eclipse.equinox.io/src/javax/microedition/io/StreamConnection.java +++ /dev/null @@ -1,19 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package javax.microedition.io; - -public abstract interface StreamConnection extends javax.microedition.io.InputConnection, javax.microedition.io.OutputConnection { - -} diff --git a/bundles/org.eclipse.equinox.io/src/javax/microedition/io/StreamConnectionNotifier.java b/bundles/org.eclipse.equinox.io/src/javax/microedition/io/StreamConnectionNotifier.java deleted file mode 100644 index d69e76c309..0000000000 --- a/bundles/org.eclipse.equinox.io/src/javax/microedition/io/StreamConnectionNotifier.java +++ /dev/null @@ -1,21 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package javax.microedition.io; - -public abstract interface StreamConnectionNotifier extends javax.microedition.io.Connection { - - public abstract javax.microedition.io.StreamConnection acceptAndOpen() throws java.io.IOException; - -} diff --git a/bundles/org.eclipse.equinox.io/src/javax/microedition/io/package.html b/bundles/org.eclipse.equinox.io/src/javax/microedition/io/package.html deleted file mode 100644 index 84f3c6f6b9..0000000000 --- a/bundles/org.eclipse.equinox.io/src/javax/microedition/io/package.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - -The classes for the generic connections. - - diff --git a/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/ConnectionListener.java b/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/ConnectionListener.java deleted file mode 100644 index 3aa99b6f4f..0000000000 --- a/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/ConnectionListener.java +++ /dev/null @@ -1,53 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.io; - -import java.util.EventListener; -import javax.microedition.io.Connection; - -/** - * Interface for a listener that will receive notification when the connection - * is created and when is closed. - *

- * Listener is notified for creation of the connection only when the connector - * service creates connection that implements only this and the Connection - * interface, when the needed IOProvider is not available at the moment of - * creation. When the provider becomes available then all registered listeners - * will receive event - *

- * CONNECTION_CREATED and the created connection. Event - * CONNECTION_CLOSED must be send from every connection that - * implements this interface when it is closing. - * - * @author Pavlin Dobrev - * @version 1.0 - */ - -public interface ConnectionListener extends EventListener { - /** - * Constant for event type created - */ - public static final int CONNECTION_CREATED = 0; - /** - * Constant for event type closed - */ - public static final int CONNECTION_CLOSED = 1; - - /** - * Receives notification that a connection has been created or closed. - */ - public void notify(String uri, int eventType, Connection conn); - -} diff --git a/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/ConnectionNotifier.java b/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/ConnectionNotifier.java deleted file mode 100644 index 8f2f0ae02f..0000000000 --- a/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/ConnectionNotifier.java +++ /dev/null @@ -1,37 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.io; - -/** - * Provides methods for registering listeners for receiving events from a - * connection (that implements this interface). - * - * @author Pavlin Dobrev - * @version 1.0 - */ - -public interface ConnectionNotifier { - /** - * Adds the given listener to the set of listeners that will be notified - * when the connection is created or closed. - */ - public void addConnectionListener(ConnectionListener l); - - /** - * Removes the given listener from the set of listeners that will be - * notified when the connection is created or closed. - */ - public void removeConnectionListener(ConnectionListener l); -} diff --git a/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/RandomAccessConnection.java b/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/RandomAccessConnection.java deleted file mode 100644 index 2477c55d72..0000000000 --- a/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/RandomAccessConnection.java +++ /dev/null @@ -1,45 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.io; - -import java.io.*; -import javax.microedition.io.InputConnection; -import javax.microedition.io.OutputConnection; - -/** - * @author Pavlin Dobrev - * @version 1.0 - */ - -public interface RandomAccessConnection extends InputConnection, OutputConnection, DataInput, DataOutput { - - public long length() throws IOException; - - public long getFilePointer() throws IOException; - - public boolean isSelected(); - - public int read() throws IOException; - - public int read(byte[] buff, int off, int len) throws IOException; - - public void seek(long len) throws IOException; - - public void write(int b) throws IOException; - - public void write(byte[] buff, int off, int len) throws IOException; - - public void flush() throws IOException; -} diff --git a/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/impl/Activator.java b/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/impl/Activator.java deleted file mode 100644 index 00bf119f8e..0000000000 --- a/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/impl/Activator.java +++ /dev/null @@ -1,67 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.io.impl; - -import org.eclipse.equinox.internal.util.ref.Log; -import org.osgi.framework.*; - -/** - * @author Pavlin Dobrev - * @version 1.0 - */ - -public class Activator implements BundleActivator { - - public static BundleContext bc = null; - private ConnectorServiceImpl connector; - private Log log; - - public void start(BundleContext bc) throws BundleException { - Activator.bc = bc; - log = new Log(bc, false); - log.setDebug(getBoolean("equinox.connector.debug")); - log.setPrintOnConsole(getBoolean("equinox.connector.console")); - if (log.getDebug()) { - log.setMaps(TracerConfigConnector.getMap(), null); - } - connector = new ConnectorServiceImpl(bc, log); - } - - public void stop(BundleContext bc) { - if (connector != null) { - connector.close(); - connector = null; - log.close(); - } - Activator.bc = null; - } - - public static boolean getBoolean(String property) { - String prop = (bc != null) ? bc.getProperty(property) : System.getProperty(property); - return ((prop != null) && prop.equalsIgnoreCase("true")); - } - - public static int getInteger(String property, int defaultValue) { - String prop = (bc != null) ? bc.getProperty(property) : System.getProperty(property); - if (prop != null) { - try { - return Integer.decode(prop).intValue(); - } catch (NumberFormatException e) { - //do nothing - } - } - return defaultValue; - } -} diff --git a/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/impl/ConnectionFactoryListener.java b/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/impl/ConnectionFactoryListener.java deleted file mode 100644 index 4d466e4f04..0000000000 --- a/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/impl/ConnectionFactoryListener.java +++ /dev/null @@ -1,155 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.io.impl; - -import java.io.IOException; -import java.util.*; -import javax.microedition.io.Connection; -import org.eclipse.equinox.internal.io.impl.PrivilegedRunner.PrivilegedDispatcher; -import org.osgi.framework.*; -import org.osgi.service.io.ConnectionFactory; - -/** - * @author Pavlin Dobrev - * @version 1.0 - */ - -public class ConnectionFactoryListener implements ServiceListener, PrivilegedDispatcher { - private static Hashtable urlToConN = new Hashtable(5); - private BundleContext bc; - - public ConnectionFactoryListener(BundleContext bc) { - this.bc = bc; - - try { - bc.addServiceListener(this, '(' + Constants.OBJECTCLASS + '=' + ConnectionFactory.class.getName() + ')'); - } catch (InvalidSyntaxException ex) { - // Ignored - syntax is right! - } - } - - public void close() { - bc.removeServiceListener(this); - - if (!urlToConN.isEmpty()) { - Vector copyV = new Vector(urlToConN.size()); - - for (Enumeration en = urlToConN.elements(); en.hasMoreElements();) { - copyV.addElement(en.nextElement()); - } - - for (Enumeration en = copyV.elements(); en.hasMoreElements();) { - ConnectionNotifierImpl cn = (ConnectionNotifierImpl) en.nextElement(); - try { - cn.close(); - } catch (IOException ex) { - } - } - } - } - - static void removeConnectionNotifier(String url) { - urlToConN.remove(url); - } - - static int count = 0; - - static Connection getConnectionNotifier(String scheme, String url, int mode, boolean timeouts, String filter, int count) throws IOException { - ConnectionNotifierImpl ret = null; - synchronized (urlToConN) { - if (urlToConN.containsKey(url)) { - return (Connection) urlToConN.get(url); - } - - ret = new ConnectionNotifierImpl(scheme, url, mode, timeouts, filter); - urlToConN.put(url, ret); - if (count == ConnectionFactoryListener.count) - return ret; - } - - Connection c = ConnectorServiceImpl.getConnection(filter, url, mode, timeouts, false); - if (c != null) { - if (ret.hasListeners()) - ret.notifyCreated(c); - else - ret.close(); - } - return c; - } - - public void serviceChanged(ServiceEvent event) { - if (event.getType() == ServiceEvent.REGISTERED && !urlToConN.isEmpty()) { - ServiceReference ref = event.getServiceReference(); - ConnectionFactory factory = (ConnectionFactory) bc.getService(ref); - String[] schemes = (String[]) ref.getProperty(ConnectionFactory.IO_SCHEME); - - Vector toNotify = new Vector(urlToConN.size()); - synchronized (urlToConN) { - for (Enumeration en = urlToConN.elements(); en.hasMoreElements();) { - ConnectionNotifierImpl cn = (ConnectionNotifierImpl) en.nextElement(); - if (match(schemes, cn.scheme)) - toNotify.addElement(cn); - } - } - for (int i = 0; i < toNotify.size(); i++) { - ConnectionNotifierImpl cn = (ConnectionNotifierImpl) toNotify.elementAt(i); - try { - if (cn.context != null) { - PrivilegedRunner.doPrivileged(cn.context, this, 0, cn, factory, null, null); - return; - } - Connection connection = factory.createConnection(cn.url, cn.mode, cn.timeouts); - if (cn.hasListeners()) - cn.notifyCreated(connection); - else - cn.close(); - } catch (Throwable ex) { - ex.printStackTrace(); - } - } - - bc.ungetService(ref); - } - } - - static boolean match(String[] schemes, String scheme) { - if (schemes != null && scheme != null) { - for (int i = 0; i < schemes.length; i++) { - if (scheme.equals(schemes[i])) { - return true; - } - } - } - - return false; - } - - /** - * @see org.eclipse.equinox.internal.io.impl.PrivilegedRunner.PrivilegedDispatcher#dispatchPrivileged(int, - * java.lang.Object, java.lang.Object, java.lang.Object, - * java.lang.Object) - */ - public Object dispatchPrivileged(int type, Object arg1, Object arg2, Object arg3, Object arg4) throws Exception { - ConnectionNotifierImpl cn = (ConnectionNotifierImpl) arg1; - ConnectionFactory factory = (ConnectionFactory) arg2; - Connection connection = factory.createConnection(cn.url, cn.mode, cn.timeouts); - if (cn.hasListeners()) { - cn.notifyCreated(connection); - } else { - cn.close(); - } - return null; - } -} diff --git a/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/impl/ConnectionNotifierImpl.java b/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/impl/ConnectionNotifierImpl.java deleted file mode 100644 index 2ecf94ad3d..0000000000 --- a/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/impl/ConnectionNotifierImpl.java +++ /dev/null @@ -1,120 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.io.impl; - -import java.io.IOException; -import java.util.Enumeration; -import java.util.Vector; -import javax.microedition.io.Connection; -import org.eclipse.equinox.internal.io.ConnectionListener; -import org.eclipse.equinox.internal.io.ConnectionNotifier; - -/** - * @author Pavlin Dobrev - * @version 1.0 - */ - -class ConnectionNotifierImpl implements ConnectionNotifier, Connection { - private Vector list; - String scheme; - int mode; - boolean timeouts; - String url; - String filter; - - boolean notified = false; - Object context; - - ConnectionNotifierImpl(String scheme, String url, int mode, boolean timeouts, String filter) { - list = new Vector(3, 5); - this.scheme = scheme; - this.url = url; - this.mode = mode; - this.timeouts = timeouts; - this.filter = filter; - SecurityManager sm = System.getSecurityManager(); - if (sm != null) - context = System.getSecurityManager().getSecurityContext(); - } - - public void addConnectionListener(ConnectionListener l) { - long timeStart = 0; - if (ConnectorServiceImpl.hasDebug) { - ConnectorServiceImpl.debug(16050, l.getClass().getName(), null); - timeStart = System.currentTimeMillis(); - } - try { - synchronized (list) { - if (!notified) { - if (!list.contains(l)) - list.addElement(l); - return; - } - } - Connection c = ConnectorServiceImpl.getConnection(filter, url, mode, timeouts, false); - if (c != null) - l.notify(url, ConnectionListener.CONNECTION_CREATED, c); - } catch (Exception exc) { - } finally { - if (ConnectorServiceImpl.hasDebug) { - ConnectorServiceImpl.debug(16051, String.valueOf(System.currentTimeMillis() - timeStart), null); - } - } - } - - public void removeConnectionListener(ConnectionListener l) { - if (ConnectorServiceImpl.hasDebug) { - ConnectorServiceImpl.debug(16052, l.getClass().getName(), null); - } - list.removeElement(l); - } - - boolean hasListeners() { - return !list.isEmpty(); - } - - void notifyCreated(Connection conn) { - notify(ConnectionListener.CONNECTION_CREATED, conn); - } - - private void notify(int eventType, Connection conn) { - if (eventType != ConnectionListener.CONNECTION_CREATED && eventType != ConnectionListener.CONNECTION_CLOSED) { - return; - } - - synchronized (list) { - if (notified) - return; - notified = true; - } - ConnectionFactoryListener.removeConnectionNotifier(url); - for (Enumeration en = list.elements(); en.hasMoreElements();) { - ConnectionListener l = (ConnectionListener) en.nextElement(); - l.notify(url, eventType, conn); - } - } - - public void close() throws IOException { - if (ConnectorServiceImpl.hasDebug) { - ConnectorServiceImpl.debug(16053, url, null); - } - synchronized (list) { - if (notified) - return; - notified = true; - } - ConnectionFactoryListener.removeConnectionNotifier(url); - } -} diff --git a/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/impl/ConnectorServiceImpl.java b/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/impl/ConnectorServiceImpl.java deleted file mode 100644 index fee1efd578..0000000000 --- a/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/impl/ConnectorServiceImpl.java +++ /dev/null @@ -1,404 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.io.impl; - -import java.io.*; -import javax.microedition.io.*; -import org.eclipse.equinox.internal.util.ref.Log; -import org.osgi.framework.*; -import org.osgi.service.io.ConnectionFactory; -import org.osgi.service.io.ConnectorService; - -/** - * ConnectorService implementation. - * - * @author Pavlin Dobrev - * @version 1.0 - */ - -public class ConnectorServiceImpl implements ConnectorService { - static BundleContext bc; - ServiceRegistration reg; - ConnectionFactoryListener listener; - - static boolean enableNotification = Activator.getBoolean("eclipse.io.enable.notification"); - public static boolean hasDebug; - private static Log log; - - public ConnectorServiceImpl(BundleContext bc, Log log) { - ConnectorServiceImpl.log = log; - ConnectorServiceImpl.hasDebug = log.getDebug(); - init(bc); - } - - public static void debug(int id, String message, Throwable t) { - log.debug(0x1200, id, message, t, false); - } - - public ConnectorServiceImpl(BundleContext bc) { - init(bc); - } - - private void init(BundleContext bc) { - ConnectorServiceImpl.bc = bc; - - if (enableNotification) { - listener = new ConnectionFactoryListener(bc); - } - - reg = bc.registerService(ConnectorService.class.getName(), this, null); - } - - public void close() { - reg.unregister(); - - if (listener != null) { - listener.close(); - } - } - - public Connection open(String uri) throws IOException { - return open(uri, READ_WRITE); - } - - public Connection open(String uri, int mode) throws IOException { - return open(uri, mode, false); - } - - static char[] chars = {'~', '='}; - - public Connection open(String uri, int mode, boolean timeouts) throws IOException { - long timeStart = 0; - if (hasDebug) { - debug(16001, uri + ", " + (mode == READ_WRITE ? "READ_WRITE" : (mode == READ) ? "READ" : "WRITE"), null); - timeStart = System.currentTimeMillis(); - } - try { - if (uri == null) { - throw new IllegalArgumentException("URL cannot be NULL!"); - } - - int sPos = uri.indexOf(":"); - - if (sPos < 1) { // scheme must be at least with 1 symbol - throw new IllegalArgumentException("Does not have scheme"); - } - - String scheme = uri.substring(0, sPos); - StringBuffer filter = new StringBuffer(scheme.length() + 13); - filter.append('('); - filter.append(ConnectionFactory.IO_SCHEME); - filter.append(chars); - filter.append(scheme); - filter.append(')'); - - int count = 0; - if (listener != null) - count = ConnectionFactoryListener.count; - Connection c = getConnection(filter.toString(), uri, mode, timeouts, true); - - if (c == null && listener != null) - c = ConnectionFactoryListener.getConnectionNotifier(scheme, uri, mode, timeouts, filter.toString(), count); - if (c == null) - throw new ConnectionNotFoundException("Failed to create connection " + uri); - return c; - } finally { - if (hasDebug) { - debug(16002, String.valueOf(System.currentTimeMillis() - timeStart), null); - } - } - } - - static protected Connection getConnection(String filter, String uri, int mode, boolean timeouts, boolean connector) throws IOException { - ServiceReference[] cfRefs = null; - Connection ret = null; - try { - cfRefs = bc.getServiceReferences(ConnectionFactory.class.getName(), filter); - } catch (InvalidSyntaxException ex) { - } - - if (cfRefs != null) { - sort(cfRefs, 0, cfRefs.length); - } - - IOException ioExc = null; - boolean not_found = false; - if (cfRefs != null) - for (int i = 0; i < cfRefs.length; i++) { - ConnectionFactory prov = (ConnectionFactory) bc.getService(cfRefs[i]); - if (prov != null) - try { - not_found = true; - ret = prov.createConnection(uri, mode, timeouts); - } catch (IOException e) { - if (hasDebug) { - debug(16003, prov.getClass().getName(), e); - } - if (ioExc == null) - ioExc = e; - } finally { - if (ret == null) - bc.ungetService(cfRefs[i]); - else { - if (hasDebug) { - debug(16004, prov.getClass().getName(), null); - } - return ret; - } - } - } - - if (connector) - try { - ret = Connector.open(uri, mode, timeouts); - } catch (ConnectionNotFoundException ignore) { // returns null -> - // ConnectionNotifier - // is created - debug(16014, null, ignore); - } finally { - if (ret == null) { - if (ioExc != null) - throw ioExc; - if (not_found) - throw new ConnectionNotFoundException("Failed to create connection " + uri); - - } else { - if (hasDebug) { - debug(16005, null, null); - } - } - } - return ret; - } - - private static void sort(ServiceReference[] array, int start, int end) { - int middle = (start + end) / 2; - if (start + 1 < middle) - sort(array, start, middle); - if (middle + 1 < end) - sort(array, middle, end); - if (start + 1 >= end) - return; // this case can only happen when this method is called by - // the user - - if (getRanking(array[middle - 1]) == getRanking(array[middle])) { - if (getServiceID(array[middle - 1]) < getServiceID(array[middle])) { - return; - } - } else if (getRanking(array[middle - 1]) >= getRanking(array[middle])) { - return; - } - - if (start + 2 == end) { - ServiceReference temp = array[start]; - array[start] = array[middle]; - array[middle] = temp; - return; - } - int i1 = start, i2 = middle, i3 = 0; - Object[] merge = new Object[end - start]; - while (i1 < middle && i2 < end) { - if (getRanking(array[i1]) == getRanking(array[i2])) { - merge[i3++] = getServiceID(array[i1]) < getServiceID(array[i2]) ? array[i1++] : array[i2++]; - } else { - merge[i3++] = getRanking(array[i1]) >= getRanking(array[i2]) ? array[i1++] : array[i2++]; - } - } - if (i1 < middle) - System.arraycopy(array, i1, merge, i3, middle - i1); - System.arraycopy(merge, 0, array, start, i2 - start); - } - - private static int getRanking(ServiceReference ref) { - Object rank = ref.getProperty(Constants.SERVICE_RANKING); - - if (rank == null || !(rank instanceof Integer)) { - return 0; - } - - return ((Integer) rank).intValue(); - } - - private static long getServiceID(ServiceReference ref) { - Object sid = ref.getProperty(Constants.SERVICE_ID); - - if (sid == null || !(sid instanceof Long)) { - return 0; - } - - return ((Long) sid).intValue(); - } - - /** - * Create and open an DataInputStream object for the specified - * name. - * - * @param name - * the URI for the connection. - * @throws IOException - * if and I/O error occurs - * @throws ConnectionNotFoundException - * if the Connection object can not be made or if no - * handler for the requested scheme can be found. - * @throws IllegalArgumentException - * if the given uri is invalid - * @return A DataInputStream to the given URI - */ - public DataInputStream openDataInputStream(String name) throws IOException { - long timeBegin = 0; - if (hasDebug) { - debug(16006, name, null); - timeBegin = System.currentTimeMillis(); - } - try { - Connection conn = open(name, READ); - - if (!(conn instanceof InputConnection)) { - try { - conn.close(); - } catch (IOException e) { - } - throw new IOException("Connection does not implement InputConnection:" + conn.getClass()); - } - - return ((InputConnection) conn).openDataInputStream(); - } finally { - if (hasDebug) { - debug(16007, String.valueOf(System.currentTimeMillis() - timeBegin), null); - } - } - } - - /** - * Create and open an DataOutputStream object for the specified - * name. - * - * @param name - * the URI for the connection. - * @throws IOException - * if and I/O error occurs - * @throws ConnectionNotFoundException - * if the Connection object can not be made or if no - * handler for the requested scheme can be found. - * @throws IllegalArgumentException - * if the given uri is invalid - * @return A DataOutputStream to the given URI - */ - public DataOutputStream openDataOutputStream(String name) throws IOException { - long timeBegin = 0; - if (hasDebug) { - debug(16008, name, null); - } - try { - Connection conn = open(name, WRITE); - - if (!(conn instanceof OutputConnection)) { - try { - conn.close(); - } catch (IOException e) { - } - - throw new IOException("Connection does not implement OutputConnection:" + conn.getClass()); - } - - return ((OutputConnection) conn).openDataOutputStream(); - } finally { - if (hasDebug) { - debug(16009, String.valueOf(System.currentTimeMillis() - timeBegin), null); - } - } - } - - /** - * Create and open an InputStream object for the specified name. - * - * - * @param name - * the URI for the connection. - * @throws IOException - * if and I/O error occurs - * @throws ConnectionNotFoundException - * if the Connection object can not be made or if no - * handler for the requested scheme can be found. - * @throws IllegalArgumentException - * if the given uri is invalid - * @return A InputStream to the given URI - */ - public InputStream openInputStream(String name) throws IOException { - long timeBegin = 0; - if (hasDebug) { - debug(16010, name, null); - timeBegin = System.currentTimeMillis(); - } - try { - Connection conn = open(name, READ); - - if (!(conn instanceof InputConnection)) { - try { - conn.close(); - } catch (IOException e) { - } - - throw new IOException("Connection does not implement InputConnection:" + conn.getClass()); - } - - return ((InputConnection) conn).openInputStream(); - } finally { - if (hasDebug) { - debug(16011, String.valueOf(System.currentTimeMillis() - timeBegin), null); - } - } - } - - /** - * Create and open an OutputStream object for the specified name. - * - * @param name - * the URI for the connection. - * @throws IOException - * if and I/O error occurs - * @throws ConnectionNotFoundException - * if the Connection object can not be made or if no - * handler for the requested scheme can be found. - * @throws IllegalArgumentException - * if the given uri is invalid - * @return A OutputStream to the given URI - */ - public OutputStream openOutputStream(String name) throws IOException { - long timeBegin = 0; - if (hasDebug) { - debug(16012, name, null); - timeBegin = System.currentTimeMillis(); - } - try { - Connection conn = open(name, WRITE); - - if (!(conn instanceof OutputConnection)) { - try { - conn.close(); - } catch (IOException e) { - } - - throw new IOException("Connection does not implement OutputConnection:" + conn.getClass()); - } - - return ((OutputConnection) conn).openOutputStream(); - } finally { - if (hasDebug) { - debug(16013, String.valueOf(System.currentTimeMillis() - timeBegin), null); - } - } - } -} diff --git a/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/impl/PrivilegedRunner.java b/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/impl/PrivilegedRunner.java deleted file mode 100644 index 2d5fd7f0c5..0000000000 --- a/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/impl/PrivilegedRunner.java +++ /dev/null @@ -1,197 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.io.impl; - -import java.security.*; -import org.eclipse.equinox.internal.util.pool.ObjectCreator; -import org.eclipse.equinox.internal.util.pool.ObjectPool; - -/** - * @author Pavlin Dobrev - * @version 1.0 - */ - -public final class PrivilegedRunner implements ObjectCreator { - - private static ObjectPool POOL; - - static { - try { - POOL = new ObjectPool(new PrivilegedRunner(), 5, 10); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /* prevent instantiations */ - private PrivilegedRunner() { - } - - /** - * Same as the longer doPrivileged method, but fills in the first parameter - * only. All other parameters are set to null. - * - * @param dispatcher - * the dispatcher which should be called - * @param type - * the type of the action - used in the dispatcher - * @param arg1 - * a parameter received by the dispatcher - * @see #doPrivileged(PrivilegedDispatcher, int, Object, Object, Object, - * Object) - * @return the object returned from the execution - * @throws Exception - * if the dispatcher fails - */ - public static final Object doPrivileged(PrivilegedDispatcher dispatcher, int type, Object arg1) throws Exception { - return doPrivileged(null, dispatcher, type, arg1, null, null, null); - } - - /** - * Performs a privileged action. The method calls the dispatcher inside the - * privileged call passing it the same parameters that were passed to this - * method. - * - * @param dispatcher - * the dispatcher which should be called - * @param type - * the type of the action - used in the dispatcher - * @param arg1 - * a parameter received by the dispatcher - * @param arg2 - * a parameter received by the dispatcher - * @param arg3 - * a parameter received by the dispatcher - * @param arg4 - * a parameter received by the dispatcher - * @return the object returned from the execution - * @throws Exception - * if the dispatcher fails - */ - public static final Object doPrivileged(PrivilegedDispatcher dispatcher, int type, Object arg1, Object arg2, Object arg3, Object arg4) throws Exception { - return doPrivileged(null, dispatcher, type, arg1, arg2, arg3, arg4); - } - - /** - * Performs a privileged action. The method calls the dispatcher inside the - * privileged call passing it the same parameters that were passed to this - * method. - * - * @param context - * the access context - * @param dispatcher - * the dispatcher which should be called - * @param type - * the type of the action - used in the dispatcher - * @param arg1 - * a parameter received by the dispatcher - * @param arg2 - * a parameter received by the dispatcher - * @param arg3 - * a parameter received by the dispatcher - * @param arg4 - * a parameter received by the dispatcher - * @return the object returned from the execution - * @throws Exception - * if the dispatcher fails - */ - public static final Object doPrivileged(Object context, PrivilegedDispatcher dispatcher, int type, Object arg1, Object arg2, Object arg3, Object arg4) throws Exception { - /* init runner */ - PA runner = (PA) POOL.getObject(); - runner.dispatcher = dispatcher; - runner.type = type; - runner.arg1 = arg1; - runner.arg2 = arg2; - runner.arg3 = arg3; - runner.arg4 = arg4; - - try { - if (System.getSecurityManager() != null) { - /* - * if security manager is set - then privileged execution is - * started - */ - if (context != null) { - return AccessController.doPrivileged(runner, (AccessControlContext) context); - } - return AccessController.doPrivileged(runner); - } - /* if no security manager is set - simply run the action */ - return runner.run(); - } catch (PrivilegedActionException e) { - throw e.getException(); - } finally { - runner.recycle(); - POOL.releaseObject(runner); - } - } - - /** - * @see org.eclipse.equinox.internal.util.pool.ObjectCreator#getInstance() - */ - public Object getInstance() throws Exception { - return new PA(); - } - - /** - * This dispatcher is the handler that is called within the privileged call. - * It should dispatch and perform the requested actions depending on the - * action type and using the given job parameters. - * - * @author Valentin Valchev - * @version $Revision: 1.1 $ - */ - public static interface PrivilegedDispatcher { - - /** - * @param type - * the type of the action - * @param arg1 - * parameter 1 - depends on the action type - * @param arg2 - * parameter 2 - depends on the action type - * @param arg3 - * parameter 3 - depends on the action type - * @param arg4 - * parameter 4 - depends on the action type - * @return an object which should be returned from the - * PrivilegedAction.run() method - * @throws Exception - * on error - */ - Object dispatchPrivileged(int type, Object arg1, Object arg2, Object arg3, Object arg4) throws Exception; - } - - static class PA implements PrivilegedExceptionAction { - - int type; - Object arg1, arg2, arg3, arg4; - PrivilegedDispatcher dispatcher; - - void recycle() { - dispatcher = null; - type = -1; - arg1 = arg2 = arg3 = arg4 = null; - } - - /** - * @see java.security.PrivilegedExceptionAction#run() - */ - public Object run() throws Exception { - return dispatcher.dispatchPrivileged(type, arg1, arg2, arg3, arg4); - } - } - -} diff --git a/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/impl/TracerConfigConnector.java b/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/impl/TracerConfigConnector.java deleted file mode 100644 index ba43591610..0000000000 --- a/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/impl/TracerConfigConnector.java +++ /dev/null @@ -1,57 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.io.impl; - -import org.eclipse.equinox.internal.util.hash.HashIntObjNS; - -/** - * @author Lubomir Mitev - * @author Pavlin Dobrev - * @version 1.0 - */ -public class TracerConfigConnector { - - public static HashIntObjNS getMap() { - /* - * increase size if you add more dumps in the table - at this moment the - * entries in table are 159 - */ - HashIntObjNS map = new HashIntObjNS(28);// (int)(28 * 0.7) = 19, 18 - constructMap(map); - return map; - } - - public static void constructMap(HashIntObjNS map) { - map.put(-0x1200, "Connector Service"); - map.put(16001, "[BEGIN - open connection] The values of the URI and the access mode are"); - map.put(16002, "[END - open connection] took"); - map.put(16003, "IOException when connection is created from ConnectionFactory"); - map.put(16004, "Connection is created from ConnectionFactory"); - map.put(16005, "Connection is created from javax.microedition.io.Connector"); - map.put(16006, "[BEGIN - open DataInputStream] The URI is"); - map.put(16007, "[END - open DataInputStream] took"); - map.put(16008, "[BEGIN - open DataOutputStream] The URI is"); - map.put(16009, "[END - open DataOutputStream] took"); - map.put(16010, "[BEGIN - open InputStream] The URI is"); - map.put(16011, "[END - open InputStream] took"); - map.put(16012, "[BEGIN - open OutputStream] The URI is"); - map.put(16013, "[END - open OutputStream] took"); - map.put(16014, "ConnectionNotFoundException thrown from system javax.microedition.io.Connector"); - map.put(16050, "[BEGIN - add ConnectionListener] The ConnectionListener is"); - map.put(16051, "[END - add ConnectionListener] took"); - map.put(16052, "Remove ConnectionListener"); - map.put(16053, "Close connection. The URI is"); - } -} diff --git a/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/package.html b/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/package.html deleted file mode 100644 index 32d3d8472c..0000000000 --- a/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/package.html +++ /dev/null @@ -1,10 +0,0 @@ - - -

The OSGi IO Provider Specification Version 1.0. -

Bundles wishing to use this package must list the package -in the Import-Package header of the bundle's manifest. -For example: -

-Import-Package: org.osgi.service.io; specification-version=1.0
-
- diff --git a/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/util/AbstractConnectionNotifier.java b/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/util/AbstractConnectionNotifier.java deleted file mode 100644 index 41ebc558df..0000000000 --- a/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/util/AbstractConnectionNotifier.java +++ /dev/null @@ -1,112 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.io.util; - -import java.util.*; -import javax.microedition.io.Connection; -import org.eclipse.equinox.internal.io.ConnectionListener; -import org.eclipse.equinox.internal.io.ConnectionNotifier; - -/** - * @author Pavlin Dobrev - * @version 1.0 - */ - -public abstract class AbstractConnectionNotifier extends Dictionary implements ConnectionNotifier { - private Vector list; - private Hashtable info; - - // the local address to which the connection is bound - - public final static String LOCAL_ADDRESS = "local_address"; - - // the local port to which the connection is bound. - - public final static String LOCAL_PORT = "local_port"; - - // the remote address to which the connection is connected. - - public final static String ADDRESS = "address"; - - // the remote port to which the connection is connected. - - public final static String PORT = "port"; - - // the encoder used - - public final static String ENCODER = "enc"; - - public static final String SO_TIMEOUT = "timeout"; - - protected AbstractConnectionNotifier() { - list = new Vector(2, 3); - info = new Hashtable(30); - } - - // ConnectionNotifier methods - public void addConnectionListener(ConnectionListener l) { - if (!list.contains(l)) { - list.addElement(l); - } - } - - public void removeConnectionListener(ConnectionListener l) { - list.removeElement(l); - } - - // returns the url of connection - protected abstract String getURL(); - - // the connection to which this ConnectionLife is bound to - protected abstract Connection getConnection(); - - protected void notifyClosed() { - for (Enumeration en = list.elements(); en.hasMoreElements();) { - ConnectionListener l = (ConnectionListener) en.nextElement(); - l.notify(getURL(), ConnectionListener.CONNECTION_CLOSED, getConnection()); - } - } - - protected void setInfo(String key, Object value) { - if (key != null && value != null) { - info.put(key, value); - } - } - - public int size() { - return info.size(); - } - - public boolean isEmpty() { - return info.isEmpty(); - } - - public Enumeration keys() { - return info.keys(); - } - - public Enumeration elements() { - return info.elements(); - } - - public Object get(Object key) { - return info.get(key); - } - - public Object remove(Object key) { - return info.remove(key); - } - -} diff --git a/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/util/AbstractDatagram.java b/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/util/AbstractDatagram.java deleted file mode 100644 index 2eb79bc4a4..0000000000 --- a/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/util/AbstractDatagram.java +++ /dev/null @@ -1,437 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.io.util; - -import java.io.*; -import javax.microedition.io.Datagram; - -/** - * @author Pavlin Dobrev - * @version 1.0 - */ - -public abstract class AbstractDatagram implements Datagram { - protected byte[] data; - private int pos; - private int count; - - public AbstractDatagram(int size) { - this(new byte[size]); - } - - public AbstractDatagram(byte[] data) { - this.data = data; - pos = 0; - count = data.length; - } - - public AbstractDatagram(byte[] data, int start, int length) { - if (start > data.length || (start + length) > data.length) { - throw new IllegalArgumentException("Start possition or length is greater than data length"); - } - - this.data = data; - pos = start; - count = length; - } - - public synchronized byte[] getData() { - return data; - } - - public int getLength() { - return count; - } - - public int getOffset() { - return pos; - } - - public void setLength(int len) { - if (len < 0 || len > data.length) { - throw new IllegalArgumentException("Given length is negative or greater than buffer size"); - } - - count = len; - } - - public synchronized void setData(byte[] buffer, int offset, int len) { - if (offset > buffer.length || (offset + len) > buffer.length) { - throw new IllegalArgumentException(); - } - - data = buffer; - pos = offset; - count = len; - } - - public void reset() { - pos = 0; - count = 0; - } - - public int read() { - return (pos < count) ? (data[pos++] & 0xff) : -1; - } - - public void readFully(byte b[]) throws IOException { - readFully(b, 0, b.length); - } - - public void readFully(byte b[], int off, int len) throws IOException { - if (len < 0) { - throw new IndexOutOfBoundsException(); - } - - int n = 0; - - while (n < len) { - int ch = read(); - - if (ch < 0) { - throw new EOFException(); - } - - b[off + (n++)] = (byte) ch; - } - } - - public int skipBytes(int n) throws IOException { - if (pos + n > count) { - n = count - pos; - } - - if (n < 0) { - return 0; - } - - pos += n; - return n; - } - - public boolean readBoolean() throws IOException { - int ch = read(); - - if (ch < 0) { - throw new EOFException(); - } - - return (ch != 0); - } - - public byte readByte() throws IOException { - int ch = read(); - - if (ch < 0) { - throw new EOFException(); - } - - return (byte) (ch); - } - - public int readUnsignedByte() throws IOException { - int ch = read(); - - if (ch < 0) { - throw new EOFException(); - } - - return ch; - } - - public short readShort() throws IOException { - int ch1 = read(); - int ch2 = read(); - - if ((ch1 | ch2) < 0) { - throw new EOFException(); - } - - return (short) ((ch1 << 8) + (ch2 << 0)); - } - - public int readUnsignedShort() throws IOException { - int ch1 = read(); - int ch2 = read(); - - if ((ch1 | ch2) < 0) { - throw new EOFException(); - } - - return (ch1 << 8) + (ch2 << 0); - } - - public char readChar() throws IOException { - int ch1 = read(); - int ch2 = read(); - - if ((ch1 | ch2) < 0) { - throw new EOFException(); - } - - return (char) ((ch1 << 8) + (ch2 << 0)); - } - - public int readInt() throws IOException { - int ch1 = read(); - int ch2 = read(); - int ch3 = read(); - int ch4 = read(); - - if ((ch1 | ch2 | ch3 | ch4) < 0) { - throw new EOFException(); - } - - return ((ch1 << 24) + (ch2 << 16) + (ch3 << 8) + (ch4 << 0)); - } - - public long readLong() throws IOException { - return ((long) (readInt()) << 32) + (readInt() & 0xFFFFFFFFL); - } - - public float readFloat() throws IOException { - return Float.intBitsToFloat(readInt()); - } - - public double readDouble() throws IOException { - return Double.longBitsToDouble(readLong()); - } - - public String readLine() throws IOException { - throw new RuntimeException("Function not supported"); - } - - public String readUTF() throws IOException { - return readUTF(this); - } - - public final static String readUTF(DataInput in) throws IOException { - int utflen = in.readUnsignedShort(); - StringBuffer str = new StringBuffer(utflen); - byte bytearr[] = new byte[utflen]; - int c, char2, char3; - int count = 0; - - in.readFully(bytearr, 0, utflen); - - while (count < utflen) { - c = bytearr[count] & 0xff; - - switch (c >> 4) { - case 0 : - case 1 : - case 2 : - case 3 : - case 4 : - case 5 : - case 6 : - case 7 : - /* 0xxxxxxx */ - count++; - str.append((char) c); - break; - - case 12 : - case 13 : - /* 110x xxxx 10xx xxxx */ - count += 2; - - if (count > utflen) { - throw new UTFDataFormatException(); - } - - char2 = bytearr[count - 1]; - - if ((char2 & 0xC0) != 0x80) { - throw new UTFDataFormatException(); - } - - str.append((char) (((c & 0x1F) << 6) | (char2 & 0x3F))); - break; - - case 14 : - /* 1110 xxxx 10xx xxxx 10xx xxxx */ - count += 3; - - if (count > utflen) { - throw new UTFDataFormatException(); - } - - char2 = bytearr[count - 2]; - char3 = bytearr[count - 1]; - - if (((char2 & 0xC0) != 0x80) || ((char3 & 0xC0) != 0x80)) { - throw new UTFDataFormatException(); - } - - str.append((char) (((c & 0x0F) << 12) | ((char2 & 0x3F) << 6) | ((char3 & 0x3F) << 0))); - break; - - default : - /* 10xx xxxx, 1111 xxxx */ - throw new UTFDataFormatException(); - } - } - - // The number of chars produced may be less than utflen - return str.toString(); - } - - // -------------------------------------------------------- - public void write(int b) throws IOException { - - if (pos < data.length) { - data[pos++] = (byte) b; - } else { - byte buf[] = new byte[data.length + 1]; - System.arraycopy(data, 0, buf, 0, count); - data = buf; - data[pos++] = (byte) b; - count++; - } - } - - public void write(byte b[]) throws IOException { - write(b, 0, b.length); - } - - public void write(byte b[], int off, int len) throws IOException { - if (b == null) { - throw new NullPointerException(); - } else if ((off < 0) || (off > b.length) || (len < 0) || ((off + len) > b.length) || ((off + len) < 0)) { - throw new IndexOutOfBoundsException(); - } else if (len == 0) { - return; - } - - for (int i = 0; i < len; i++) { - write(b[off + i]); - } - } - - public void writeBoolean(boolean v) throws IOException { - write(v ? 1 : 0); - } - - public void writeByte(int v) throws IOException { - write(v); - } - - public void writeShort(int v) throws IOException { - write((v >>> 8) & 0xFF); - write((v >>> 0) & 0xFF); - } - - public void writeChar(int v) throws IOException { - write((v >>> 8) & 0xFF); - write((v >>> 0) & 0xFF); - } - - public void writeInt(int v) throws IOException { - write((v >>> 24) & 0xFF); - write((v >>> 16) & 0xFF); - write((v >>> 8) & 0xFF); - write((v >>> 0) & 0xFF); - } - - public void writeLong(long v) throws IOException { - write((int) (v >>> 56) & 0xFF); - write((int) (v >>> 48) & 0xFF); - write((int) (v >>> 40) & 0xFF); - write((int) (v >>> 32) & 0xFF); - write((int) (v >>> 24) & 0xFF); - write((int) (v >>> 16) & 0xFF); - write((int) (v >>> 8) & 0xFF); - write((int) (v >>> 0) & 0xFF); - } - - public void writeFloat(float v) throws IOException { - writeInt(Float.floatToIntBits(v)); - } - - public void writeDouble(double v) throws IOException { - writeLong(Double.doubleToLongBits(v)); - } - - public void writeBytes(String s) throws IOException { - int len = s.length(); - - for (int i = 0; i < len; i++) { - write((byte) s.charAt(i)); - } - } - - public void writeChars(String s) throws IOException { - int len = s.length(); - - for (int i = 0; i < len; i++) { - int v = s.charAt(i); - write((v >>> 8) & 0xFF); - write((v >>> 0) & 0xFF); - } - } - - public void writeUTF(String str) throws IOException { - writeUTF(str, this); - } - - static int writeUTF(String str, DataOutput out) throws IOException { - int strlen = str.length(); - int utflen = 0; - char[] charr = new char[strlen]; - int c, count = 0; - - str.getChars(0, strlen, charr, 0); - - for (int i = 0; i < strlen; i++) { - c = charr[i]; - - if ((c >= 0x0001) && (c <= 0x007F)) { - utflen++; - } else if (c > 0x07FF) { - utflen += 3; - } else { - utflen += 2; - } - } - - if (utflen > 65535) { - throw new UTFDataFormatException(); - } - - byte[] bytearr = new byte[utflen + 2]; - bytearr[count++] = (byte) ((utflen >>> 8) & 0xFF); - bytearr[count++] = (byte) ((utflen >>> 0) & 0xFF); - - for (int i = 0; i < strlen; i++) { - c = charr[i]; - - if ((c >= 0x0001) && (c <= 0x007F)) { - bytearr[count++] = (byte) c; - } else if (c > 0x07FF) { - bytearr[count++] = (byte) (0xE0 | ((c >> 12) & 0x0F)); - bytearr[count++] = (byte) (0x80 | ((c >> 6) & 0x3F)); - bytearr[count++] = (byte) (0x80 | ((c >> 0) & 0x3F)); - } else { - bytearr[count++] = (byte) (0xC0 | ((c >> 6) & 0x1F)); - bytearr[count++] = (byte) (0x80 | ((c >> 0) & 0x3F)); - } - } - - out.write(bytearr); - return utflen + 2; - } - -} diff --git a/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/util/URI.java b/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/util/URI.java deleted file mode 100644 index b9ecd7cdc0..0000000000 --- a/bundles/org.eclipse.equinox.io/src/org/eclipse/equinox/internal/io/util/URI.java +++ /dev/null @@ -1,350 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.io.util; - -import java.util.Hashtable; -import java.util.Enumeration; - -/** - * @author Pavlin Dobrev - * @version 1.0 - */ - -public class URI { - - /* - * :///;?# - */ - private String scheme; - private String schemeSpec; - private String auth; - private String userInfo; - private String host; - private String port; - private String path; - private String query; - private String fragment; - private boolean isOpaque; - - private Hashtable params; - - public URI(String uri) { - if (uri == null) { - throw new IllegalArgumentException("URL cannot be NULL!"); - } - - byte[] buf = uri.getBytes(); - int sPos = indexOf(buf, ':', 0); - - scheme = trim(buf, 0, sPos); - - sPos++; - - int ePos = indexOf(buf, '#', sPos); - - if (ePos != -1) { - fragment = trim(buf, ePos + 1, buf.length); - } else { - ePos = buf.length; - } - - schemeSpec = trim(buf, sPos, ePos); - - int pos = indexOf(buf, '?', sPos, ePos); - - if (pos != -1) { - query = trim(buf, pos + 1, ePos); - ePos = pos; - } - - pos = indexOf(buf, ';', sPos, ePos); - - if (pos != -1) { - parseParams(buf, pos + 1, ePos); - ePos = pos; - } - - isOpaque = true; - - if (buf[sPos] == '/' && buf[sPos + 1] == '/') { - sPos += 2; - isOpaque = false; - } - - pos = indexOf(buf, '/', sPos, ePos); - - if (pos != -1) { - path = trim(buf, pos, ePos); - ePos = pos; - } - - auth = trim(buf, sPos, ePos); - - if (!isOpaque) { - pos = indexOf(buf, '@', sPos); - - if (pos != -1) { - userInfo = trim(buf, sPos, pos); - sPos = pos + 1; - } - - pos = indexOf(buf, ']', sPos); - if (pos != -1) { - host = trim(buf, sPos, pos + 1); - sPos = pos + 1; - } - - pos = indexOf(buf, ':', sPos); - - if (pos != -1) { - port = trim(buf, pos + 1, ePos); - ePos = pos; - } - if (host == null) { - host = trim(buf, sPos, ePos); - } - } - } - - public String getScheme() { - return scheme; - } - - public String getHost() { - return host; - } - - public String getPort() { - return port; - } - - public int getPortNumber() { - return port == null ? -1 : Integer.parseInt(port); - } - - public String getFragment() { - return fragment; - } - - public String getQuery() { - return query; - } - - public String getUserInfo() { - return userInfo; - } - - public String getPath() { - return path; - } - - public String getSchemeSpecificPart() { - return schemeSpec; - } - - public String getAuthority() { - return auth; - } - - public boolean isOpaque() { - return isOpaque; - } - - public String get(String param) { - return params == null ? null : (String) params.get(param); - } - - public String getParams() { - if (params == null || params.isEmpty()) { - return null; - } - - StringBuffer sb = new StringBuffer(); - - for (Enumeration en = params.keys(); en.hasMoreElements();) { - String key = (String) en.nextElement(); - sb.append(";"); - sb.append(key); - sb.append("="); - sb.append(((String) params.get(key))); - } - - if (sb.length() == 0) { - return null; - } - - return sb.toString(); - } - - public static String getHost(String uri) { - if (uri == null) { - throw new IllegalArgumentException("URL cannot be NULL!"); - } - - int pos = uri.indexOf("://"); - - if (pos == -1) { - throw new IllegalArgumentException("Does not have scheme"); - } - - int sPos = pos + 3; - - pos = uri.indexOf('@', sPos); - if (pos != -1) { - sPos = pos + 1; - } - - int ePos = endOfHostPort(uri, sPos); - - pos = uri.indexOf(']', sPos); - if (pos != -1) { - return uri.substring(sPos, pos + 1); - } - - pos = uri.indexOf(':', sPos); - - if (sPos != -1 && pos < ePos) { - return uri.substring(sPos, pos); - } - - return uri.substring(sPos, ePos); - } - - public static int getPort(String uri) { - if (uri == null) { - throw new IllegalArgumentException("URL cannot be NULL!"); - } - - int pos = uri.indexOf("://"); - - if (pos == -1) { - throw new IllegalArgumentException("Does not have scheme"); - } - - int sPos = pos + 3; - - pos = uri.indexOf('@', sPos); - if (pos != -1) { - sPos = pos + 1; - } - - pos = uri.indexOf(']', sPos); - if (pos != -1) { - sPos = pos + 1; - } - - sPos = uri.indexOf(":", sPos); - - if (sPos == -1) { - // return -1; - throw new IllegalArgumentException("Port is missing " + uri); - } - - sPos++; - - int ePos = endOfHostPort(uri, sPos); - - return Integer.parseInt(uri.substring(sPos, ePos)); - } - - static int endOfHostPort(String str, int spos) { - int pos = str.indexOf("/", spos); - int tmp = str.indexOf(";", spos); - - if (tmp != -1 && tmp < pos || pos == -1) { - pos = tmp; - } - - if (pos != -1) { - return pos; - } - - return str.length(); - } - - static int indexOf(byte[] ba, char b, int startPos) { - return indexOf(ba, b, startPos, ba.length); - } - - static int indexOf(byte[] ba, char b, int sPos, int ePos) { - if (sPos > ba.length || sPos < 0 || ePos > ba.length || ePos < 0 || sPos >= ePos) { - return -1;// throw new IllegalArgumentException(); - } - - for (int i = sPos; i < ePos; i++) { - if (ba[i] == b) { - return i; - } - } - - return -1; - } - - static String trim(byte[] buf, int s, int e) { - if (s >= e) { - return null; - } - - while (s < buf.length && s < e && buf[s] == ' ') { - s++; - } - - while (e >= 0 && e > s && buf[e - 1] == ' ') { - e--; - } - - if (s == e) { - return null; - } - - return new String(buf, s, e - s); - } - - private void parseParams(byte[] buf, int sPos, int ePos) { - int pos; - - while (sPos < ePos && (pos = indexOf(buf, ';', sPos)) != -1) { - parseParam(buf, sPos, pos); - sPos = pos + 1; - } - - if (sPos < ePos) { - parseParam(buf, sPos, ePos); - } - } - - private void parseParam(byte[] buf, int sPos, int ePos) { - int rpos = indexOf(buf, '=', sPos, ePos); - - if (rpos != -1) { - String key = trim(buf, sPos, rpos); - - if (key == null) { - return; - } - - String str = trim(buf, rpos + 1, ePos); - - if (str != null) { - if (params == null) { - params = new Hashtable(); - } - - params.put(key, str); - } - } - } - -} diff --git a/bundles/org.eclipse.equinox.ip/.classpath b/bundles/org.eclipse.equinox.ip/.classpath deleted file mode 100644 index ce0c7a5d47..0000000000 --- a/bundles/org.eclipse.equinox.ip/.classpath +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/bundles/org.eclipse.equinox.ip/.project b/bundles/org.eclipse.equinox.ip/.project deleted file mode 100644 index b5b74da368..0000000000 --- a/bundles/org.eclipse.equinox.ip/.project +++ /dev/null @@ -1,34 +0,0 @@ - - - org.eclipse.equinox.ip - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - org.eclipse.pde.api.tools.apiAnalysisBuilder - - - - - - org.eclipse.pde.PluginNature - org.eclipse.jdt.core.javanature - org.eclipse.pde.api.tools.apiAnalysisNature - - diff --git a/bundles/org.eclipse.equinox.ip/.settings/org.eclipse.core.runtime.prefs b/bundles/org.eclipse.equinox.ip/.settings/org.eclipse.core.runtime.prefs deleted file mode 100644 index 5a0ad22d2a..0000000000 --- a/bundles/org.eclipse.equinox.ip/.settings/org.eclipse.core.runtime.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -line.separator=\n diff --git a/bundles/org.eclipse.equinox.ip/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.ip/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index b1c8691de0..0000000000 --- a/bundles/org.eclipse.equinox.ip/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,474 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.builder.cleanOutputFolder=clean -org.eclipse.jdt.core.builder.duplicateResourceTask=warning -org.eclipse.jdt.core.builder.invalidClasspath=abort -org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch -org.eclipse.jdt.core.circularClasspath=error -org.eclipse.jdt.core.classpath.exclusionPatterns=enabled -org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.4 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.doc.comment.support=enabled -org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000 -org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning -org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning -org.eclipse.jdt.core.compiler.problem.autoboxing=ignore -org.eclipse.jdt.core.compiler.problem.deprecation=warning -org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled -org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled -org.eclipse.jdt.core.compiler.problem.discouragedReference=error -org.eclipse.jdt.core.compiler.problem.emptyStatement=warning -org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning -org.eclipse.jdt.core.compiler.problem.fieldHiding=warning -org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore -org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning -org.eclipse.jdt.core.compiler.problem.forbiddenReference=error -org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning -org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning -org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore -org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning -org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private -org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning -org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning -org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled -org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public -org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore -org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning -org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning -org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning -org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning -org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning -org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning -org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled -org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning -org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled -org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning -org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning -org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning -org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning -org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning -org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning -org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning -org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore -org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation=warning -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled -org.eclipse.jdt.core.compiler.problem.unusedImport=error -org.eclipse.jdt.core.compiler.problem.unusedLocal=warning -org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled -org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error -org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning -org.eclipse.jdt.core.compiler.source=1.3 -org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false -org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 -org.eclipse.jdt.core.formatter.align_type_members_on_columns=false -org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false -org.eclipse.jdt.core.formatter.align_with_spaces=false -org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_enum_constant=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_local_variable=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_method=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_package=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_parameter=0 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_type=49 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_assertion_message=16 -org.eclipse.jdt.core.formatter.alignment_for_assignment=0 -org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain=0 -org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0 -org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 -org.eclipse.jdt.core.formatter.alignment_for_module_statements=16 -org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 -org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_record_components=16 -org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0 -org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 -org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_shift_operator=0 -org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16 -org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_record_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_type_annotations=0 -org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0 -org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0 -org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 -org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration=0 -org.eclipse.jdt.core.formatter.blank_lines_after_package=1 -org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method=1 -org.eclipse.jdt.core.formatter.blank_lines_before_field=0 -org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 -org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 -org.eclipse.jdt.core.formatter.blank_lines_before_method=1 -org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 -org.eclipse.jdt.core.formatter.blank_lines_before_package=0 -org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 -org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch=0 -org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 -org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_record_constructor=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_record_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true -org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false -org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true -org.eclipse.jdt.core.formatter.comment.format_block_comments=true -org.eclipse.jdt.core.formatter.comment.format_header=false -org.eclipse.jdt.core.formatter.comment.format_html=true -org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true -org.eclipse.jdt.core.formatter.comment.format_line_comments=true -org.eclipse.jdt.core.formatter.comment.format_source_code=true -org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false -org.eclipse.jdt.core.formatter.comment.indent_root_tags=false -org.eclipse.jdt.core.formatter.comment.indent_tag_description=false -org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags=do not insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert -org.eclipse.jdt.core.formatter.comment.line_length=80 -org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true -org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true -org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false -org.eclipse.jdt.core.formatter.compact_else_if=true -org.eclipse.jdt.core.formatter.continuation_indentation=2 -org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 -org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off -org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on -org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false -org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_record_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true -org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_empty_lines=false -org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true -org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false -org.eclipse.jdt.core.formatter.indentation.size=4 -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert -org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_record_components=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert -org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_not_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_record_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert -org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert -org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert -org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_record_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_record_components=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_constructor=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_record_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert -org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.join_lines_in_comments=true -org.eclipse.jdt.core.formatter.join_wrapped_lines=true -org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false -org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false -org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_record_constructor_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_record_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false -org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.lineSplit=120 -org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false -org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false -org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block=0 -org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 -org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_record_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines -org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true -org.eclipse.jdt.core.formatter.tabulation.char=tab -org.eclipse.jdt.core.formatter.tabulation.size=4 -org.eclipse.jdt.core.formatter.text_block_indentation=0 -org.eclipse.jdt.core.formatter.use_on_off_tags=true -org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false -org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true -org.eclipse.jdt.core.formatter.wrap_before_assertion_message_operator=true -org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false -org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true -org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true -org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true -org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true -org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true -org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true -org.eclipse.jdt.core.formatter.wrap_before_relational_operator=true -org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true -org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true -org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true -org.eclipse.jdt.core.incompatibleJDKLevel=ignore -org.eclipse.jdt.core.incompleteClasspath=error -org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter diff --git a/bundles/org.eclipse.equinox.ip/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.equinox.ip/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index 894ba5a9dd..0000000000 --- a/bundles/org.eclipse.equinox.ip/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,56 +0,0 @@ -eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true -formatter_profile=org.eclipse.jdt.ui.default.eclipse_profile -formatter_settings_version=21 -org.eclipse.jdt.ui.ignorelowercasenames=true -org.eclipse.jdt.ui.importorder=; -org.eclipse.jdt.ui.ondemandthreshold=3 -org.eclipse.jdt.ui.staticondemandthreshold=99 -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_serial_version_id=false -sp_cleanup.always_use_blocks=true -sp_cleanup.always_use_parentheses_in_expressions=false -sp_cleanup.always_use_this_for_non_static_field_access=false -sp_cleanup.always_use_this_for_non_static_method_access=false -sp_cleanup.convert_to_enhanced_for_loop=false -sp_cleanup.correct_indentation=false -sp_cleanup.format_source_code=true -sp_cleanup.make_local_variable_final=false -sp_cleanup.make_parameters_final=false -sp_cleanup.make_private_fields_final=true -sp_cleanup.make_variable_declarations_final=true -sp_cleanup.never_use_blocks=false -sp_cleanup.never_use_parentheses_in_expressions=true -sp_cleanup.on_save_use_additional_actions=false -sp_cleanup.organize_imports=true -sp_cleanup.qualify_static_field_accesses_with_declaring_class=false -sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_with_declaring_class=false -sp_cleanup.qualify_static_method_accesses_with_declaring_class=false -sp_cleanup.remove_private_constructors=true -sp_cleanup.remove_trailing_whitespaces=false -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -sp_cleanup.remove_unused_imports=false -sp_cleanup.remove_unused_local_variables=false -sp_cleanup.remove_unused_private_fields=true -sp_cleanup.remove_unused_private_members=false -sp_cleanup.remove_unused_private_methods=true -sp_cleanup.remove_unused_private_types=true -sp_cleanup.sort_members=false -sp_cleanup.sort_members_all=false -sp_cleanup.use_blocks=false -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_parentheses_in_expressions=false -sp_cleanup.use_this_for_non_static_field_access=false -sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true -sp_cleanup.use_this_for_non_static_method_access=false -sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true diff --git a/bundles/org.eclipse.equinox.ip/.settings/org.eclipse.pde.core.prefs b/bundles/org.eclipse.equinox.ip/.settings/org.eclipse.pde.core.prefs deleted file mode 100644 index 6fb22e1086..0000000000 --- a/bundles/org.eclipse.equinox.ip/.settings/org.eclipse.pde.core.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Thu Mar 29 10:32:21 EEST 2007 -eclipse.preferences.version=1 -pluginProject.extensions=false diff --git a/bundles/org.eclipse.equinox.ip/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.ip/META-INF/MANIFEST.MF deleted file mode 100644 index 7908c5f39c..0000000000 --- a/bundles/org.eclipse.equinox.ip/META-INF/MANIFEST.MF +++ /dev/null @@ -1,43 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: %bundleName -Bundle-SymbolicName: org.eclipse.equinox.ip -Bundle-Version: 1.1.700.qualifier -Bundle-Vendor: %bundleVendor -Bundle-Description: Provides implementation of the Intial Provisioning service - defined by OSGi specification release 4. -Bundle-Activator: org.eclipse.equinox.internal.ip.impl.ProvisioningAgent -DynamicImport-Package: org.osgi.service.permissionadmin; version="1.0" -Import-Package: - javax.servlet;version="2.1", - javax.servlet.http;version="2.1", - org.eclipse.equinox.internal.util.ref;version="1.0", - org.eclipse.equinox.internal.util.timer;version="1.0", - org.osgi.framework;version="1.0", - org.osgi.service.cm;version="1.2.0", - org.osgi.service.http;version="1.0", - org.osgi.service.log;version="1.3.0", - org.osgi.service.provisioning;version="[1.2,1.3)", - org.osgi.service.useradmin;version="1.0", - org.osgi.util.tracker;version="1.3.2" -Export-Package: - org.eclipse.equinox.internal.ip;x-internal:=true, - org.eclipse.equinox.internal.ip.dscagent;x-internal:=true, - org.eclipse.equinox.internal.ip.impl;x-internal:=true, - org.eclipse.equinox.internal.ip.provider;x-internal:=true, - org.eclipse.equinox.internal.ip.provider.env;x-internal:=true, - org.eclipse.equinox.internal.ip.provider.file;x-internal:=true, - org.eclipse.equinox.internal.ip.provider.http;x-internal:=true, - org.eclipse.equinox.internal.ip.storage.cm;x-internal:=true, - org.eclipse.equinox.internal.ip.storage.file;x-internal:=true -Content-Id: equinox.provisioning_agent -Prv-Storage: org.eclipse.equinox.internal.ip.storage.file.FileStorage -PrvInfo-Providers: - org.eclipse.equinox.internal.ip.provider.env.EnvironmentInfoProvider;300, - org.eclipse.equinox.internal.ip.provider.http.HttpProvider;200, - org.eclipse.equinox.internal.ip.provider.file.FileProvider;100 -Bundle-RequiredExecutionEnvironment: CDC-1.0/Foundation-1.0, - J2SE-1.3 -Bundle-Localization: plugin -Automatic-Module-Name: org.eclipse.equinox.ip - diff --git a/bundles/org.eclipse.equinox.ip/OSGI-INF/permissions.perm b/bundles/org.eclipse.equinox.ip/OSGI-INF/permissions.perm deleted file mode 100644 index 5a965875d0..0000000000 --- a/bundles/org.eclipse.equinox.ip/OSGI-INF/permissions.perm +++ /dev/null @@ -1 +0,0 @@ -(java.security.AllPermission "*" "*") \ No newline at end of file diff --git a/bundles/org.eclipse.equinox.ip/about.html b/bundles/org.eclipse.equinox.ip/about.html deleted file mode 100644 index 164f781a8f..0000000000 --- a/bundles/org.eclipse.equinox.ip/about.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - -About - - -

About This Content

- -

November 30, 2017

-

License

- -

- The Eclipse Foundation makes available all content in this plug-in - ("Content"). Unless otherwise indicated below, the Content - is provided to you under the terms and conditions of the Eclipse - Public License Version 2.0 ("EPL"). A copy of the EPL is - available at http://www.eclipse.org/legal/epl-2.0. - For purposes of the EPL, "Program" will mean the Content. -

- -

- If you did not receive this Content directly from the Eclipse - Foundation, the Content is being redistributed by another party - ("Redistributor") and different terms and conditions may - apply to your use of any object code in the Content. Check the - Redistributor's license that was provided with the Content. If no such - license exists, contact the Redistributor. Unless otherwise indicated - below, the terms and conditions of the EPL still apply to any source - code in the Content and such source code may be obtained at http://www.eclipse.org. -

- - - \ No newline at end of file diff --git a/bundles/org.eclipse.equinox.ip/build.properties b/bundles/org.eclipse.equinox.ip/build.properties deleted file mode 100644 index 41490f2f19..0000000000 --- a/bundles/org.eclipse.equinox.ip/build.properties +++ /dev/null @@ -1,22 +0,0 @@ -############################################################################### -# Copyright (c) 1997-2009 by ProSyst Software GmbH -# http://www.prosyst.com -# -# This program and the accompanying materials -# are made available under the terms of the Eclipse Public License 2.0 -# which accompanies this distribution, and is available at -# https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# ProSyst Software GmbH - initial API and implementation -############################################################################### -source.. = src/ -output.. = bin/ -bin.includes = META-INF/,\ - .,\ - about.html,\ - plugin.properties,\ - OSGI-INF/ -src.includes = about.html diff --git a/bundles/org.eclipse.equinox.ip/forceQualifierUpdate.txt b/bundles/org.eclipse.equinox.ip/forceQualifierUpdate.txt deleted file mode 100644 index 56f1032a8a..0000000000 --- a/bundles/org.eclipse.equinox.ip/forceQualifierUpdate.txt +++ /dev/null @@ -1,2 +0,0 @@ -# To force a version qualifier update add the bug here -Bug 403352 - Update all parent versions to match our build stream diff --git a/bundles/org.eclipse.equinox.ip/plugin.properties b/bundles/org.eclipse.equinox.ip/plugin.properties deleted file mode 100644 index 4c8bcbb829..0000000000 --- a/bundles/org.eclipse.equinox.ip/plugin.properties +++ /dev/null @@ -1,17 +0,0 @@ -############################################################################### -# Copyright (c) 1997-2009 by ProSyst Software GmbH -# http://www.prosyst.com -# -# This program and the accompanying materials -# are made available under the terms of the Eclipse Public License 2.0 -# which accompanies this distribution, and is available at -# https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# ProSyst Software GmbH - initial API and implementation -############################################################################### -#Properties file for org.eclipse.equinox.ip -bundleVendor = Eclipse.org - Equinox -bundleName = Initial Provisioning \ No newline at end of file diff --git a/bundles/org.eclipse.equinox.ip/pom.xml b/bundles/org.eclipse.equinox.ip/pom.xml deleted file mode 100644 index c2a6a85fa7..0000000000 --- a/bundles/org.eclipse.equinox.ip/pom.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - 4.0.0 - - rt.equinox.bundles - org.eclipse.equinox.bundles - 4.24.0-SNAPSHOT - ../../ - - org.eclipse.equinox - org.eclipse.equinox.ip - 1.1.700-SNAPSHOT - eclipse-plugin - diff --git a/bundles/org.eclipse.equinox.ip/props.txt b/bundles/org.eclipse.equinox.ip/props.txt deleted file mode 100644 index 1dcfbf44c0..0000000000 --- a/bundles/org.eclipse.equinox.ip/props.txt +++ /dev/null @@ -1,16 +0,0 @@ -# File is separated on few text and few binary parts. Each text part starts -# with #[TEXT] while each binary starts with #[BINARY] -# Lines that starts with # (excluding the these that are with #[TEXT] or #[BINARY]) -# are comments. Lines are trimmed so line " key=value " is equal to "key=value" - -# TEXT section contains properties that are to be loaded directly at load phase -# The format of lines is : -# = -#[TEXT] -#provisioning.spid=testgateway -#provisioning.reference=http://localhost:80/prvsetup - -# BINARY section contains properties that are to be loaded indirectly -# The format of lines is : -# = -#[BINARY] \ No newline at end of file diff --git a/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/ProvisioningInfoProvider.java b/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/ProvisioningInfoProvider.java deleted file mode 100644 index 7437c6749e..0000000000 --- a/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/ProvisioningInfoProvider.java +++ /dev/null @@ -1,86 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.ip; - -import java.util.Dictionary; - -import org.osgi.service.provisioning.ProvisioningService; - -/** - * Provides a set (can be empty) of configuration properties used by the Initial - * Provisioning Bundle. The properties obtained by the providers become part of - * the Provisioning Dictionary. Arbitrary number of Configuration Loaders could - * be registered as services in the OSGi framework. Different providers could - * export different set of configuration properties. If a property is provided - * by more than one provider, the Provisioning Bundle uses this one, which is - * exported by a provider with the higher service ranking. - * - * @author Avgustin Marinov - * @author Pavlin Dobrev - * @version 1.0 - */ - -public interface ProvisioningInfoProvider { - - /** - * This property specifies URL for connecting to the Management Server. - */ - public static final String MANAGER_URL = "equinox.provisioning.manager.url"; - - /** - * This property specifies the host of the Gateway Manager that Management - * Server management agent bundle must connect to. If this property is not - * present in the dictionary, then Management Server bundle will listen for - * a back end device to push this information to. - */ - public final static String GM_HOST = "equinox.provisioning.gm.host"; - - /** - * This manifest header determines the packed into the provisioning agent - * bundle providers that are to be started. - */ - public final static String PROVIDERS = "PrvInfo-Providers"; - - /** - * Initializes provider. Give to the provider a reference to - * ProvisioningService dictionary. Provider can return properties that are - * to be set properties in the provisioning dictionary. It is not necessary - * for provider to insert explicitly a property unless it has to be listed - * through the Dictionary.keys() method or it evokes action - * (as ProvisioningService.PROVISIONIN_REFERENCE). - * - * @param prvSrv - * provisioning service reference - * @return the initial data. It can be null. - * @throws Exception - * on initialization error - */ - public Dictionary init(ProvisioningService prvSrv) throws Exception; - - /** - * Gets a property with a supplied key from the provider. This method is - * invoked by the Provisioning Agent when - * Dictionary.get(propertyKey) is invoked for a propertyKey - * which is not already stored in the ProvisioningDictionary. The method is - * invoked subsequently on all registered providers ordered by service - * ranking until some of them returns value different from null. - * - * @param propertyKey - * the key. - * @return the property value or null if there is no such - * property. - */ - public Object get(Object propertyKey); -} diff --git a/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/ProvisioningStorage.java b/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/ProvisioningStorage.java deleted file mode 100644 index 489b0a25bd..0000000000 --- a/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/ProvisioningStorage.java +++ /dev/null @@ -1,51 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.ip; - -import java.util.Dictionary; - -/** - * Provides persistent storage for the Initial Provisioning Dictionary. This - * service is used by the Provisioning Agent to store the provisioning data. - * - * @author Avgustin Marinov, e-mail: a_marinov@prosyst.bg - * @author Pavlin Dobrev - * @version 1.0 - */ - -public interface ProvisioningStorage { - - /** - * This method is invoked by Provisioning Agent on startup. The storage - * returns the stored data. After that the provisioning service is - * responsible to put the data into the provisioning service dictionary. - * - * @return the stored info - * @throws Exception - * an exception if I/O error occurs - */ - public Dictionary getStoredInfo() throws Exception; - - /** - * This method is invoked by provisioning service on provisioning data - * update. The storage must store the data. - * - * @param provisioningData - * Provisioning Data dictionary. - * @throws Exception - * if the data cannot be stored - */ - public void store(Dictionary provisioningData) throws Exception; -} diff --git a/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/dscagent/DiscoveryAgent.java b/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/dscagent/DiscoveryAgent.java deleted file mode 100644 index a53a6c7212..0000000000 --- a/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/dscagent/DiscoveryAgent.java +++ /dev/null @@ -1,272 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.ip.dscagent; - -import java.io.IOException; -import java.io.InterruptedIOException; -import java.net.*; -import java.util.Dictionary; -import org.eclipse.equinox.internal.ip.ProvisioningInfoProvider; -import org.eclipse.equinox.internal.ip.impl.Log; -import org.eclipse.equinox.internal.ip.impl.ProvisioningAgent; -import org.osgi.framework.BundleContext; -import org.osgi.framework.ServiceReference; -import org.osgi.service.provisioning.ProvisioningService; - -/** - * Agent who make FW available for UDM multicast discovery. It joins - * provisioning agent to a MulticastSocket and waits for ping replies. The - * response contains data that describes gateway. HTTP port is determined using - * next algorithm:
- *
    - *
  1. If "equinox.provisioning.gwhttp.port" property is set it is used - * for HTTP port value.
  2. - *
  3. Else if there has org.osgi.service.HttpService is registered and - * the default such service has registration property "openPort", value of this - * property is assumed as port.
  4. - *
  5. Else HTTP port is assumed to be "80" (the default HTTP port).
  6. - *
- * - * @author Avgustin Marinov - * @author Pavlin Dobrev - * @version 1.0 - */ - -public class DiscoveryAgent implements Runnable { - - /** - * This property can be used when HTTP service is not a prosyst's - * implementation or HTTP is not always, which gives a port with - * registration property "openPort", available. - */ - public static final String HTTP_PORT = "equinox.provisioning.gwhttp.port"; - - /** - * This property can be used when HTTPS service is not a prosyst's - * implementation, HTTPS is old prosyst's https implementation, or http is - * not always, which gives a port with registration property - * "secureOpenPort", or HTTPS is not always available. - */ - public static final String HTTPS_PORT = "equinox.provisioning.gwhttps.port"; - - /** - * Packet Timeout - */ - public static final String TIMEOUT = "equinox.provisioning.packet.timeout"; - - /** - * Separator used in string representing gateway. It separates different - * parts of that string. - */ - public static final char SEPARATOR = '#'; - - /** - * The String that corresponds to lack of sPID. - */ - public static final String NULL = new String(new byte[] {1}); - - /** Reference to provisioning agent. */ - private ProvisioningAgent prvAgent; - - /** If discoverer service is active. */ - private boolean active = true; - - // Net staff - /** The multicast socket. */ - private MulticastSocket mcsocket; - /** The group. */ - private InetAddress group; - - /** - * Bundles context used for determining of HTTP port in ProSyst HTTPS - * Service Implementation. - */ - private BundleContext bc; - - /** - * Constructs instance of Discovery agent. - * - * @param address - * address of multicast host. - * @param port - * port of multicast host. - * @param bc - * bundle context used to be accessed framework. - * @param prvAgent - * the provisioning agent - * @throws UnknownHostException - * when address cannot be resolved - * @throws IOException - * on I/O error, when accessing the given address - */ - public DiscoveryAgent(String address, int port, BundleContext bc, ProvisioningAgent prvAgent) throws UnknownHostException, IOException { - group = InetAddress.getByName(address); - mcsocket = new MulticastSocket(port); - this.bc = bc; - this.prvAgent = prvAgent; - mcsocket.joinGroup(group); - mcsocket.setSoTimeout(ProvisioningAgent.getInteger(TIMEOUT, 10000)); - Log.debug("Discovery Agent has joined to multicast socket " + address + ":" + port + "."); - } - - /** - * Until close() method is invoked this method accepts packages broadcasted - * to multicast host. - */ - public void run() { - byte[] buffer = new byte[256]; - DatagramPacket request = new DatagramPacket(buffer, buffer.length); - Log.debug("Discovery Agent starting listening."); - int errors = 0; - while (active) { - try { - mcsocket.receive(request); - /* It is ping send by the backend discoverer */ - if ("equinox.provisioning.ping".equals(new String(request.getData(), 0, request.getLength()))) { - byte[] data = getResponse(); - if (data != null) { - DatagramPacket response = new DatagramPacket(data, data.length, group, request.getPort()); - /* response.setData(data); */ - mcsocket.send(response); - } - } - request.setLength(buffer.length); /* Restore packet length */ - } catch (InterruptedIOException _) { - } catch (IOException e) { - if (errors++ > 5) { - Log.debug("Seventh unexpected exception. Discoverer will be closed!", e); - return; - } - } - } - } - - /** - * Closes discoverer agent - */ - public void close() { - try { - active = false; - mcsocket.leaveGroup(group); - mcsocket.close(); - } catch (Exception e) { - Log.debug(e); - } - } - - /** - * Encodes some valuable gateways parameters into string. The format is as - * follows:
- * <spid>#<host>#<http port>#<ready>#<others - * info>
- * where:
- *
    - *
  1. sPID is service platform id
  2. - *
  3. host is service platform host
  4. - *
  5. HTTP port is service platform HTTP port
  6. - *
  7. ready is service platform is ready with deploying management - * agent bundle
  8. - *
  9. others info is service platform others info in format: - * {<key0>=<value0>,<key1>=<value1>...}
  10. - *
- * - * @return string representation of gateway data as byte array. - */ - private byte[] getResponse() { - String httpPort = ProvisioningAgent.bc.getProperty(HTTP_PORT); - String httpsPort = ProvisioningAgent.bc.getProperty(HTTPS_PORT); - - // try to determine from service - if (httpPort == null || httpsPort == null) { - // Not using HttpService.class.getName(), because we don't need to - // import - // it. - ServiceReference sref = bc.getServiceReference("org.osgi.service.http.HttpService"); - // HTTP Service is available - explore it - if (httpPort == null) - httpPort = getPortProperty(sref, "openPort"); - if (httpsPort == null) - httpsPort = getPortProperty(sref, "secureOpenPort"); - } - - Dictionary info = prvAgent.getInformation(); - if (info == null) { - return null; - } - - StringBuffer buff = new StringBuffer(); - String spid = (String) info.get(ProvisioningService.PROVISIONING_SPID); - buff.append(spid == null || spid.length() == 0 ? NULL : spid); - buff.append(SEPARATOR); - String host = null; - try { - host = InetAddress.getLocalHost().getHostName(); - } catch (Exception e) { - host = "unknown"; - } - buff.append(host); - buff.append(SEPARATOR); - buff.append(httpPort); - buff.append(SEPARATOR); - buff.append(httpsPort); - buff.append(SEPARATOR); - buff.append(info.get(ProvisioningInfoProvider.MANAGER_URL) != null); - buff.append(SEPARATOR); - buff.append('{'); - buff.append(ProvisioningService.PROVISIONING_REFERENCE); - buff.append('='); - buff.append(info.get(ProvisioningService.PROVISIONING_REFERENCE)); - buff.append(','); - buff.append(ProvisioningService.PROVISIONING_START_BUNDLE); - buff.append('='); - buff.append(info.get(ProvisioningService.PROVISIONING_START_BUNDLE)); - buff.append('}'); - buff.append(SEPARATOR); - buff.append(getFlag()); - Log.debug("Discoverer agent sends gw info : " + buff); - return buff.toString().getBytes(); - } - - public int getFlag() { - int flag = 0; - if (prvAgent.getHttpAllowed()) { - try { - new URL("http://").openConnection(); - flag |= 0x01; - } catch (Exception e) { - } - } - - try { - new URL("rsh://").openConnection(); - flag |= 0x02; - } catch (Exception e) { - } - - try { - new URL("https://").openConnection(); - flag |= 0x04; - } catch (Exception e) { - } - - return flag; - } - - private static final String getPortProperty(ServiceReference ref, String property) { - Object ret = ref != null ? ref.getProperty(property) : null; - return ret == null ? "-1" : "" + ret; - } - -} diff --git a/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/impl/Log.java b/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/impl/Log.java deleted file mode 100644 index 13277f3cc8..0000000000 --- a/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/impl/Log.java +++ /dev/null @@ -1,173 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.ip.impl; - -import java.io.*; -import java.net.HttpURLConnection; -import java.net.URL; -import java.util.Dictionary; -import org.osgi.service.log.LogService; -import org.osgi.service.provisioning.ProvisioningService; - -/** - * Simple debug class for provisioning agent bundle. - * - * @author Avgustin Marinov - * @author Pavlin Dobrev - * @version 1.0 - */ - -public class Log { - - /** - * Property for workaround the J9 2.0 problem with Content-Length, the - * content length is not set if property is "true" - */ - public static boolean j9workAround; - - /** If debug mode is on. */ - public static boolean debug; - /** If debug mode is on. */ - public static boolean remoteDebug; - /** If to send trace */ - public static boolean sendTrace; - - /** Message that trace is not send */ - public static byte[] NO_TRACE = "NoTrace".getBytes(); - - /** Reference to provisioning service */ - public static ProvisioningService prvSrv; - - /** Log stream to receive logged messages. */ - private static PrintStream logStream; - - /** org.eclipse.equinox.internal.util.ref.Log class to receive logged messages */ - public static org.eclipse.equinox.internal.util.ref.Log log; - - static { - try { - String logFile = ProvisioningAgent.bc.getProperty("equinox.provisioning.provisioning.logfile"); - if (logFile != null && (logFile = logFile.trim()).length() != 0) { - File log = new File(logFile); - log = log.isDirectory() ? new File(log, "log.txt") : log; - logStream = new PrintStream(new FileOutputStream(log), true); - } - } catch (Exception e) { - logStream = null; - } - } - - /** - * Dumps a debug string - * - * @param obj - * a debug string - */ - public static void debug(String obj) { - String message = "[PROVISIONING] " + obj; - if (debug && logStream != null) { - logStream.println(message); - } else if (log != null) { - log.debug(message, null); - } - } - - /** - * Dumps a debug exception - * - * @param e - * a debugged Throwable - */ - public static void debug(Throwable e) { - debug(null, e, remoteDebug); - } - - /** - * Dumps an exception if debug mode is enabled - * - * @param e - * the exception to dump - */ - public static void debug(String message, Throwable e) { - debug(message, e, remoteDebug); - } - - private static void debug(String message, Throwable e, boolean sendRemote) { - if (debug && logStream != null) { - logStream.println("[PROVISIONING] " + message); - e.printStackTrace(logStream); - } else if (log != null) { - log.debug(message, e); - } - if (sendRemote && e != null && (e.getMessage() == null || e.getMessage().indexOf("Error from Backend") == -1)) { - log(message, e); - } - } - - /** - * Logs an exception - * - * @param e - * the exception - */ - private static void log(String message, Throwable e) { - debug("Log exception remotely."); - String logUrl = null; - try { - ProvisioningService prvSrv = Log.prvSrv; - if (prvSrv != null) { - Dictionary info = prvSrv.getInformation(); - if (info != null) { - logUrl = (String) info.get("equinox.provisioning.prv.log"); - if (logUrl != null) { - debug("Log url = " + logUrl); - HttpURLConnection conn = (HttpURLConnection) new URL(logUrl).openConnection(); - conn.setRequestMethod("POST"); - conn.setRequestProperty("Connection", "close"); - conn.setRequestProperty(ProvisioningService.PROVISIONING_SPID, info.get(ProvisioningService.PROVISIONING_SPID) + ""); - conn.setRequestProperty("msg", (message != null ? message + ": " : "") + e.getMessage()); - conn.setRequestProperty("lvl", LogService.LOG_ERROR + ""); - - OutputStream os = new ByteArrayOutputStream(); - if (sendTrace) { - e.printStackTrace(new PrintStream(os)); - } else { - os.write(NO_TRACE); - } - byte[] stackTrace = ((ByteArrayOutputStream) os).toByteArray(); - if (!j9workAround) { - conn.setRequestProperty("Content-Length", stackTrace.length + ""); - } - - conn.setDoOutput(true); - conn.setDoInput(true); - conn.setUseCaches(false); - conn.connect(); - - os = conn.getOutputStream(); - os.write(stackTrace); - os.flush(); - - InputStream is = conn.getInputStream(); - while (is.read() != -1) { - } - } - } - } - } catch (Throwable t) { - debug("Error while logging remotely to url \"" + logUrl + '"', t, false); - } - } -} diff --git a/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/impl/ProvisioningAgent.java b/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/impl/ProvisioningAgent.java deleted file mode 100644 index ba33733e49..0000000000 --- a/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/impl/ProvisioningAgent.java +++ /dev/null @@ -1,1555 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2009 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.ip.impl; - -import java.io.*; -import java.lang.reflect.*; -import java.net.*; -import java.util.*; -import java.util.zip.ZipEntry; -import java.util.zip.ZipInputStream; -import org.eclipse.equinox.internal.ip.ProvisioningInfoProvider; -import org.eclipse.equinox.internal.ip.ProvisioningStorage; -import org.eclipse.equinox.internal.util.timer.Timer; -import org.eclipse.equinox.internal.util.timer.TimerListener; -import org.osgi.framework.*; -import org.osgi.service.provisioning.ProvisioningService; - -/** - * Class implementing provisioning management based on OSGi RFC 27. On start - * this BundleActivator gets its manifest headers - * ProvisioningAgent.providerS and ProvisioningAgent.STORAGE. - * Using them it decides which ProvisioningInfoProvider-s and which - * ProvisioningStorage are packed in the bundle. It make instances them. - * To be succesfull instantiation they MUST have constructor without parameters. - * All packed in bundle providers that implement BundleActivator. Their - * methods start(BundleContext) are invoked after instantiation. (On - * stop their stop(BundleContext)-s are invoked). ProvisioningStorage is - * used for saving provisioning service data. If no such storage thatas are lost - * on restart of bundle. Any fail in provider/storage instantiation, providers - * casting to BundleActivator ends with exception in bundle start and - * bundle will not reach state ACTIVE. - * - * Also it starts DiscoveryAgent which is prosyst's feature. It is constructed - * using values of system properties: "equinox.multicast.host" as host and - * "equinox.multicast.port" as port. If one of these properties is null no - * instance of DiscoveryAgent is made. - * - * @author Avgustin Marinov - * @author Pavlin Dobrev - * @version 1.0 - */ - -public class ProvisioningAgent implements BundleActivator, ProvisioningService, ServiceListener, FrameworkListener, TimerListener { - - /** - * This manifest header determines the packed into the provisioning agent - * bundle storage (if such exists) that is to be setarted. - */ - public final static String STORAGE = "Prv-Storage"; - - /** - * This manifest header determines URL Handlers packed into the provisioning - * agent bundle that are to be started. - */ - public final static String URL_HANDLERS = "Url-Handlers"; - - /** This system property that determines multicast host for discoverer agent. */ - public final static String MULTICAST_HOST = "equinox.provisioning.multicast.host"; - - /** This system property taht determines multicast port for discoverer agent. */ - public final static String MULTICAST_PORT = "equinox.provisioning.multicast.port"; - - /** - * This system property determines if provisioning can use HTTP transport - * (assumed as unsecured) for provisioning data assignments. - */ - public final static String HTTP_ALLOWED = "equinox.provisioning.httpprv.allowed"; - - /** - * This system property determines if provisioning must waits until the - * framework is started. - */ - public final static String WAIT_FW_START = "equinox.provisioning.prv.fwstart"; - - /** - * This system property determines if provisioning should try to make - * provisioning on every start - */ - public final static String REPROVISIONING_ON_START = "equinox.provisioning.reprovision.onstart"; - - /** - * Close Zip after reading. - */ - public final static String CLOSE_ZIP = "equinox.provisioning.close.zip"; - - /** - * This system property determines if provisioning agent should print debug - * and error information on the console. - */ - public final static String DEBUG = "equinox.provisioning.debug"; - - /** - * This system property determines if provisioning agent should print debug - * and error information on the console. - */ - public final static String REMOTE_DEBUG = "equinox.provisioning.remote.debug"; - - /** BundleContext used for interactions with framework. */ - public static BundleContext bc; - - /** Provisioning data. */ - private ProvisioningData info; - /** Registration of ProvisioningService. */ - private ServiceRegistration sreg; - /** - * Configuration store used for data storing. It is null after start if no - * storage packed in bundle. - */ - private ProvisioningStorage storage; - - /** If HTTP protocol is allows for provisioning data assignments. */ - private boolean httpAllowed; - - /** - * If storage is inner packed but it is not inner provider, and is - * BundleActivator and its start method has been invoked, it must be - * stopped. - */ - private boolean destroyStorageOnStop = false; - - /** - * Contains providers packed in bundle. It can be null after start if no - * providers packed in bundle. - */ - private Vector providers; - - /** - * Contains URL handlers packed in bundle. It can be null after start if no - * providers packed in bundle. - */ - private Vector urlHandlers; - - /** - * DiscoveryAgent instantiated by this object on start(BundleContext). It is - * null after start id host or port arenot set in manifest. - */ - private Runnable da; - - /** If there is need to wait for start of framework. */ - private boolean wfs; - /** If the information is added and provistioning assignements are allowed. */ - private boolean active; - /** - * Flag if the start data is processed from frameworkEvent or from - * start(BundleContext) method. - */ - private boolean startProcessed; - /** If to do reprovisiong */ - private boolean reprovision; - /** - * If the service is already registered. Used to be avided duplicated - * registration on start. - */ - private boolean registered; - /** If to close zip after reading */ - private boolean closeZip; - - // =================================================================================// - private static final int PROVISIONING = 1; - - private static final String HAS_FAILED_PROVISIONG = "!@#$_hasFailedPrv"; - - private boolean reAfterPrvFailureDisabled; - private int a; - private int b; - private int changePeriod; - private int maxPeriod; - - private Timer timer; - private long nextProvisioningAfter; - private int times; - // =================================================================================// - - public final static int ERROR_UNKNOWN = 0; - public final static int ERROR_LOAD_STORE_DATA = 1; - public final static int ERROR_MALFORMED_URL = 2; - public final static int ERROR_IO_EXCEPTION = 3; - public final static int ERROR_CORRUPTED_ZIP = 4; - - /** - * Invoked by framework on bundle start. - * - * @param bc - * bundle context - * @exception java.lang.Exception - * mostly when manifest dont match to packed - * providers/storage or their implementation do not match - * expectations. - */ - public void start(BundleContext bc) throws Exception { - ProvisioningAgent.bc = bc; - active = false; - startProcessed = false; - wfs = true; - if (bc.getProperty(WAIT_FW_START) != null) - if (bc.getProperty(WAIT_FW_START).equals("false")) - wfs = false; - httpAllowed = true; - if (bc.getProperty(HTTP_ALLOWED) != null) - if (bc.getProperty(HTTP_ALLOWED).equals("false")) - httpAllowed = false; - reprovision = getBoolean(ProvisioningAgent.REPROVISIONING_ON_START); - closeZip = getBoolean(CLOSE_ZIP); - - // =================================================================================// - reAfterPrvFailureDisabled = getBoolean("equinox.provisioning.provisioning.reAfterPrvFailure.disabled"); - a = getInteger("equinox.provisioning.provisioning.reAfterPrvFailure.a", 60000); - b = getInteger("equinox.provisioning.provisioning.reAfterPrvFailure.b", 60000); - changePeriod = getInteger("equinox.provisioning.provisioning.reAfterPrvFailure.changePeriod", 300000); - maxPeriod = getInteger("equinox.provisioning.provisioning.reAfterPrvFailure.maxperiod", 3600000); - nextProvisioningAfter = a; - // =================================================================================// - Log.j9workAround = getBoolean("equinox.provisioning.j9.2.0.workaround"); - Log.debug = getBoolean(DEBUG); - Log.remoteDebug = getBoolean(REMOTE_DEBUG); - Log.sendTrace = getBoolean("equinox.provisioning.send.trace"); - Log.prvSrv = this; - - org.eclipse.equinox.internal.util.ref.Log log = new org.eclipse.equinox.internal.util.ref.Log(bc); - log.setDebug(true); // always log to LogService! - log.setPrintOnConsole(Log.debug); - Log.log = log; - - try { - start0(bc); - } catch (Exception exc) { - Log.log.close(); - Log.log = null; - throw exc; - } - } - - private void start0(BundleContext bc) throws Exception { - Log.debug("Starting provisioning agent ..."); - - Bundle thisBundle = bc.getBundle(); - - // Starts URL handlers packed into the provisioning bundle - String urlHandlersHeader = (String) thisBundle.getHeaders().get(URL_HANDLERS); - if (urlHandlersHeader != null) { - StringTokenizer strTok = new StringTokenizer(urlHandlersHeader, ", "); - urlHandlers = new Vector(strTok.countTokens()); - while (strTok.hasMoreTokens()) { - try { - BundleActivator handler = (BundleActivator) Class.forName(strTok.nextToken().trim()).newInstance(); - handler.start(bc); - urlHandlers.addElement(handler); - } catch (Exception e) { - Log.debug("Can't instantiate or start a handler!"); - throw e; - } - } - urlHandlersHeader = null; - } - - // Gets inner storage activator class name (if inner storage exists). - String storageName = (String) thisBundle.getHeaders().get(STORAGE); - if (storageName != null) { - storageName = storageName.trim(); - } - - // Registers configuration providers packed into the bundle - String providersHeader = (String) thisBundle.getHeaders().get(ProvisioningInfoProvider.PROVIDERS); - if (providersHeader != null) { - providers = new Vector(5); - StringTokenizer strTok = new StringTokenizer(providersHeader, ",; "); - while (strTok.hasMoreTokens()) { - String providerName = strTok.nextToken().trim(); - strTok.nextToken(); // Skips ranking - Object provider = Class.forName(providerName).newInstance(); - if (provider instanceof BundleActivator) { - ((BundleActivator) provider).start(bc); - } - if (providerName.equals(storageName)) { - storage = (ProvisioningStorage) provider; - destroyStorageOnStop = true; - } - providers.addElement(provider); - } - } - - if (storage == null && storageName != null && storageName.length() != 0) { - try { - storage = (ProvisioningStorage) Class.forName(storageName).newInstance(); - if (storage instanceof BundleActivator) { - ((BundleActivator) storage).start(bc); - destroyStorageOnStop = true; - } - } catch (Exception e) { - Log.debug("Can't instantiate or start storage \"" + storage + "\"!"); - throw e; - } - } - - info = new ProvisioningData(); - - if (storage == null) { - synchronized (this) { - bc.addServiceListener(this, "(|" + '(' + Constants.OBJECTCLASS + '=' + ProvisioningStorage.class.getName() + ")" + '(' + Constants.OBJECTCLASS + '=' + ProvisioningInfoProvider.class.getName() + ")" + '(' + Constants.OBJECTCLASS + '=' + Timer.class.getName() + ')' + ")"); - - storage = getStorage(); - } - } else { - bc.addServiceListener(this, "(|" + '(' + Constants.OBJECTCLASS + '=' + ProvisioningInfoProvider.class.getName() + ')' + '(' + Constants.OBJECTCLASS + '=' + Timer.class.getName() + ')' + ")"); - } - - synchronized (this) { - if (timer == null) { - ServiceReference sRef = bc.getServiceReference(Timer.class.getName()); - if (sRef != null) { - timer = (Timer) bc.getService(sRef); - } - } - } - - if (storage != null) { - Log.debug("Loads from " + storage + " storage."); - try { - Dictionary storedInfo = storage.getStoredInfo(); - if (storedInfo != null && storedInfo.size() != 0) { - info.add(storedInfo); - } - } catch (Exception e) { // NPE or storage specific exception can be - // thrown - Log.debug(e); - setError(ERROR_LOAD_STORE_DATA, e.toString()); - if (destroyStorageOnStop) { - Log.debug("Warning: the storage could be unavailable!"); - } else { - storage = null; - } - } - } - - if (getHasFailedPrv() && !reAfterPrvFailureDisabled) { - reprovision = true; - } - - boolean hasLoadedInfo = false; - - ServiceReference[] srefs = bc.getServiceReferences(ProvisioningInfoProvider.class.getName(), null); - if (srefs != null) { - sort(srefs); - for (int i = 0; i < srefs.length; i++) { - ProvisioningInfoProvider provider = ((ProvisioningInfoProvider) bc.getService(srefs[i])); - try { - synchronized (info) { - if (!info.providers.contains(provider)) { - Log.debug("Loads from " + provider + " provider."); - info.providers.addElement(provider); - Dictionary toAdd = provider.init(this); - if (toAdd != null && toAdd.size() != 0) { - String prvref = (String) toAdd.get(ProvisioningService.PROVISIONING_REFERENCE); - if (prvref != null && prvref.trim().length() != 0) { // reference - // is - // changed - // by - // loader - reprovision = true; - } - info.add(toAdd); - hasLoadedInfo = true; - } - } - } - } catch (Exception e) { - Log.debug(e); - } - } - } - - if (!isFrameworkStarted()) { - bc.addFrameworkListener(this); - } else { - wfs = false; - } - - if (hasLoadedInfo) { - store(); - } - active = true; - processStart(); - - // Join GW to a multicast host. - try { - String host = "225.0.0.0"; - if (bc.getProperty(MULTICAST_HOST) != null) - host = bc.getProperty(MULTICAST_HOST); - String port = Integer.toString(getInteger(MULTICAST_PORT, 7777)); - if (host.length() != 0 && port.length() != 0) { - Class dscAgentClass = Class.forName("org.eclipse.equinox.internal.ip.impl.dscagent.DiscoveryAgent"); - Constructor constr = dscAgentClass.getConstructor(new Class[] {String.class, int.class, BundleContext.class, ProvisioningAgent.class}); - new Thread(da = (Runnable) constr.newInstance(new Object[] {host, new Integer(Integer.parseInt(port)), bc, this}), "Discovery Agent").start(); - } // "info" is already initialized - } catch (Throwable t) { - Log.debug("Can't create discovery agent!"); - } - Log.debug("Provisioning agent started ..."); - } - - /** - * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext) - */ - public void stop(BundleContext bc) throws Exception { - Log.debug("Stopping provisionig agent ..."); - - if (timer != null) { - try { - timer.removeListener(this, PROVISIONING); - } catch (Throwable _) { - } - timer = null; - } - - registered = false; - - try { - bc.removeServiceListener(this); - } catch (Exception _) { - } - - try { - bc.removeFrameworkListener(this); - } catch (Exception _) { - } - - if (sreg != null) { - try { - sreg.unregister(); - } catch (Exception _) { - } - sreg = null; - } // Unregisters ProvisioningService - - if (da != null) { - try { - Method close = da.getClass().getMethod("close", new Class[] {}); - close.invoke(da, new Object[0]); - } catch (Exception e) { - Log.debug(e); - } - da = null; - } // Closes DiscoveryAgent - - if (storage != null) { - if (destroyStorageOnStop) { - try { - if (storage instanceof BundleActivator) { - ((BundleActivator) storage).stop(bc); - } - } catch (Exception e) { - Log.debug(e); - } - destroyStorageOnStop = false; - } - storage = null; - } // Stores data - - if (providers != null) { - for (int i = providers.size(); i-- > 0;) { - try { - ((BundleActivator) providers.elementAt(i)).stop(bc); - } catch (Exception e) { - Log.debug(e); - } - } - providers = null; - } // Stops providers - - if (urlHandlers != null) { - for (int i = urlHandlers.size(); i-- > 0;) { - try { - ((BundleActivator) urlHandlers.elementAt(i)).stop(bc); - } catch (Exception e) { - Log.debug(e); - } - } - urlHandlers = null; - } // Stops providers - - info = null; - Log.debug("Provisioning agent stopped ..."); - Log.log.close(); - Log.log = null; - } - - public Dictionary getInformation() { - return info; - } - - public void setInformation(Dictionary info) { - boolean refChanged = info.get(ProvisioningService.PROVISIONING_REFERENCE) != null; - synchronized (this.info) { - Integer version = (Integer) this.info.get(ProvisioningService.PROVISIONING_UPDATE_COUNT); - Integer newVersion = new Integer(version.intValue() + 1); - this.info.set(info); - incrementUC(newVersion); - } - modify(); - updated(refChanged); - } - - public void addInformation(Dictionary info) { - addInformation(info, null); - } - - private static final ByteArrayOutputStream baos = new ByteArrayOutputStream(); - private static final byte[] buffer = new byte[1024]; - - private static byte[] readStream(InputStream is) throws IOException { - synchronized (buffer) { - baos.reset(); - int read; - while ((read = is.read(buffer, 0, buffer.length)) != -1) { - baos.write(buffer, 0, read); - } - return baos.toByteArray(); - } - } - - private Bundle installBundle(String name, InputStream is) { - Bundle bundle = null; - try { - bundle = getBundle(name); - if (bundle == null) { /* install the bundle */ - if (Log.debug) - Log.debug("Installing management bundle '" + name + "'"); - bundle = bc.installBundle(name, is); - } else { /* just update it */ - if (Log.debug) - Log.debug("Updating management bundle '" + name + "'"); - bundle.update(is); - } - } catch (Throwable t) { - setHasFailedPrv(true); - Log.debug("WARNING: Failed to install management bundle '" + name + "'", t); - } - return bundle; - } - - public void addInformation(ZipInputStream zis) { - Log.debug("Add Information form ZIS."); - Hashtable entries = new Hashtable(2);//cache for unprocessed entries - boolean manifestFound = false; - Dictionary info = new Hashtable(5); - Dictionary entriesFromHeader = null; - Dictionary extraFileds = null; - Vector bundlesToStart = new Vector(5); - String header = null; - try { - ZipEntry ze; - String name, type; - /* read the rest of the entries */ - while ((ze = zis.getNextEntry()) != null) { - /* read name */ - name = ze.getName(); - if (name.endsWith("/")) {// path entry - zis.closeEntry(); - continue; - - } - if (name.charAt(0) == '/') - name = name.substring(1); - /* read extra */ - byte[] extra = ze.getExtra(); - type = extra == null ? null : new String(extra).toLowerCase(); - if (extra != null && !"META-INF/MANIFEST.MF".equals(name)) { - if (extraFileds == null) { - extraFileds = new Hashtable(3, 3); - } - extraFileds.put(name, type); - } //the extra field is null or the entry is the manifest - if (!manifestFound) { - if ("META-INF/MANIFEST.MF".equals(name)) {//the entry is the manifest - manifestFound = true; - header = getHeaderFromManifest(zis); - entriesFromHeader = filterAttributes(TYPE, parseEntries(header)); - } else {//no manifest yet, so cache the entry - System.out.println("---put : " + name); - entries.put(name, readStream(zis)); - } - } else {//the manifest is found so we process the entry - processEntry(extraFileds, name, null, zis, info, entriesFromHeader, bundlesToStart); - } - zis.closeEntry(); - } - - /*process the cached entries*/ - Enumeration names = entries.keys(); - while (names.hasMoreElements()) { - processEntry(extraFileds, name = (String) names.nextElement(), (byte[]) entries.get(name), null, info, entriesFromHeader, bundlesToStart); - } - } catch (Throwable e) { - this.info.setError(ERROR_CORRUPTED_ZIP, e.toString()); - Log.debug("Error reading provisioning package", e); - setHasFailedPrv(true); - } - - /* close the zip file */ - if (closeZip) { - try { - zis.close(); - } catch (Exception _) { - } - } - - /* update info and start all required bundles */ - addInformation(info, bundlesToStart); // bundle should - } - - private void processEntry(Dictionary extraFileds, String name, byte[] content, InputStream is, Dictionary info, Dictionary entriesFromHeader, Vector bundlesToStart) throws IOException { - /* - * first try the InitialProvisioning-Entries header - * if the zip file had a manifest entry - */ - String type = entriesFromHeader == null ? null : (String) entriesFromHeader.get(name); - /* - * If there is no value in the InitialProvisioning-Entries header for that path - * try to initialize the type from the entry's extra field. - * If this ZIP entry field is present, the Initial Provisioning service should not - * look further, even if the extra field contains an erroneous value. - */ - if (type == null) { - if (extraFileds != null) { - type = (String) extraFileds.get(name); - } - } - /* - * if type is still null try to to initialize it - * according to the extension of the entry's name - */ - if (type == null) { - type = getMIMEfromExtension(name); - } - - /* process entry */ - if (Log.debug) { - Log.debug("Processing entry '" + name + "' of type " + type); - } - if (MIME_BUNDLE.equals(type) || MIME_BUNDLE_ALT.equals(type)) { - installBundle(name, content == null ? new ISWrapper(is) : new ISWrapper(new ByteArrayInputStream(content))); - } else if (MIME_BYTE_ARRAY.equals(type)) { - info.put(name, content == null ? readStream(is) : content); - } else if (MIME_STRING.equals(type)) { - String value = getUTF8String(content == null ? readStream(is) : content); - info.put(name, value); - /* - * FIXME: actually there can be only ONE key of that type! - so why - * using vector - */ - if (PROVISIONING_START_BUNDLE.equals(name)) { - /* Make management agent bundle deployment. Sets java.security.AllPermission - * if PermissionAdmin is available..*/ - try { - grantAllPermissions(value); - } catch (Throwable e) { - Log.debug("Failed to grant all permissions", e); - } - bundlesToStart.addElement(value); - } - } else if (MIME_BUNDLE_URL.equals(type)) { - String value = getUTF8String(content == null ? readStream(is) : content); - installBundle(name, new URL(value).openStream()); - } else { - this.info.setError(ERROR_CORRUPTED_ZIP, // - "Unknown MIME type (" + type + ") for entry '" + name + "'"); - setHasFailedPrv(true); - } - } - - public void serviceChanged(ServiceEvent se) { - Object service = bc.getService(se.getServiceReference()); - if (service instanceof ProvisioningStorage) { - if (se.getType() == ServiceEvent.REGISTERED) { - synchronized (this) { - if (storage == null) { // If there is a storage it won't be - // replaced. - storage = (ProvisioningStorage) service; - } else { - return; - } - } - try { - Object oldUC = info.get(ProvisioningService.PROVISIONING_UPDATE_COUNT); - int iOldUC = 0; - if (oldUC != null && oldUC instanceof Integer) { - iOldUC = ((Integer) oldUC).intValue(); - } - - Dictionary toAdd = storage.getStoredInfo(); - Object newUC = toAdd.get(ProvisioningService.PROVISIONING_UPDATE_COUNT); - int iNewUC = 0; - if (newUC != null && newUC instanceof Integer) { - iNewUC = ((Integer) newUC).intValue(); - } - - boolean refChanged = toAdd.get(ProvisioningService.PROVISIONING_REFERENCE) != null && (iNewUC == 0 || reprovision); - - boolean increment = iNewUC > iOldUC; // In this case it - // is assummed that - // is most probably - // that this - // is the original version but storage is started after the - // provisioning bundle. - - synchronized (info) { - info.set(toAdd); - if (increment) { - incrementUC(new Integer(iNewUC)); - modify(); - } - } - - updated(refChanged); - } catch (Exception e) { - Log.debug(e); - } - Log.debug("Storage is available."); - } else if (se.getType() == ServiceEvent.UNREGISTERING) { - if (storage == bc.getService(se.getServiceReference())) { - Log.debug("Storage is removed!"); - try { - storage.store(info); - } catch (Exception e) { - Log.debug("Can't store provisioning info!", e); - } - storage = null; // No more than one Storage service should - // be registered on the FW - } - } - } - - if (service instanceof ProvisioningInfoProvider) { // a Storage could - // be a Provider - if (se.getType() == ServiceEvent.REGISTERED) { - ProvisioningInfoProvider provider = (ProvisioningInfoProvider) service; - Log.debug("Loads from " + provider + " provider."); - try { - if (!info.providers.contains(provider)) { - Dictionary toAdd = provider.init(this); - boolean refChanged = false; - if (toAdd != null) { - String prvref = (String) toAdd.get(ProvisioningService.PROVISIONING_REFERENCE); - if (prvref != null && prvref.trim().length() != 0) { // reference - // is - // changed - // by - // loader - refChanged = true; - } - } - boolean added = true; - synchronized (info) { - if (!info.providers.contains(provider)) { - info.providers.addElement(provider); - info.add(toAdd); - if (refChanged) { - reprovision = true; - } - Integer version = (Integer) info.get(ProvisioningService.PROVISIONING_UPDATE_COUNT); - Integer newVersion = new Integer(version.intValue() + 1); - incrementUC(newVersion); - } else { - added = false; - } - } - if (added) { - modify(); - updated(refChanged); - } - } - } catch (Exception e) { - Log.debug(e); - } - } else if (se.getType() == ServiceEvent.UNREGISTERING) { - info.providers.removeElement(service); - } - } - - if (service instanceof Timer) { // timer is expected to be single - // service - switch (se.getType()) { - case ServiceEvent.REGISTERED : { - synchronized (this) { - if (timer == null) { - timer = (Timer) service; - if (getHasFailedPrv() && !reAfterPrvFailureDisabled) { - try { - timer.notifyAfterMillis(this, nextPrvAfter(), PROVISIONING); // TO DO - Won't be - // updated with newer - // method - it will not - // run on older FW - } catch (Exception e) { - Log.debug(e); - } - } - } - } - break; - } - case ServiceEvent.UNREGISTERING : { - timer = null; - break; - } - } - } - } - - public synchronized void timer(int event) { - Log.debug("Timer event " + event); - try { - switch (event) { - case PROVISIONING : { - Log.debug("Remake failed provisioning."); - if (getHasFailedPrv()) { - processPrvAssignment(); - } - break; - } - } - } catch (Exception e) { - Log.debug(e); - } - } - - public void frameworkEvent(FrameworkEvent event) { - if (event.getType() == FrameworkEvent.STARTED) { - wfs = false; - processStart(); - } - } - - public boolean getHttpAllowed() { - return httpAllowed; - } - - // Synchronize frameworkEvent and start(BundleContext) initial reactions - private void processStart() { - synchronized (this) { - try { - Log.debug("Reprovision = " + reprovision + ", update counter = " + info.get(ProvisioningService.PROVISIONING_UPDATE_COUNT) + ", provisioning reference = " + info.get(ProvisioningService.PROVISIONING_REFERENCE)); - if ((reprovision || ((Integer) info.get(ProvisioningService.PROVISIONING_UPDATE_COUNT)).intValue() == 0) && info.get(ProvisioningService.PROVISIONING_REFERENCE) != null) { - if (!startProcessed) { - if (processPrvAssignment()) { - startProcessed = true; - } - } - } - } catch (Throwable t) { - Log.debug(t); - } - } - - synchronized (this) { - if (active && !wfs && !registered) { - registered = true; - } else { - return; - } - } - Log.debug("Registering ProvisioningService."); - sreg = bc.registerService(ProvisioningService.class.getName(), this, getRegProps()); - } - - /** - * This is called by ProvisioningData when one puts new - * ProvisioningService.PROVISIONING_UPDATE_COUNT. - * - * @param refChanged - * if ProvisioningService.PROVISIONING_REFERENCE changed - */ - private void updated(boolean refUpdated) { - Log.debug("ProvisioingDictionary updated. Reference updated = " + refUpdated); - - store(); - - synchronized (this) { - if (refUpdated) { - if (!processPrvAssignment()) { - reprovision = true; - } - } - } - } - - private void store() { - if (storage != null) { - try { - Dictionary info = this.info; - if (info != null) { - storage.store(info); - } - } catch (Exception e) { - Log.debug(e); - } - } else { - Log.debug("Warning: No storage available."); - } - } - - private boolean processPrvAssignment() { - if (active && !wfs) { - new Thread() { - public void run() { - try { - process(); - } catch (Exception e) { - Log.debug(e); - } - } - }.start(); - return true; - } - return false; - } - - /** - * Make provisioning data assignement to nextRef. - * - * @param nextRef - * next reference. - */ - synchronized void process() { - if (info == null) - return; // the bundle is stopped - setHasFailedPrv(false); - String ref = (String) info.get(ProvisioningService.PROVISIONING_REFERENCE); - Log.debug("Reference = \"" + ref + '"'); - if (ref != null && (ref = ref.trim()).length() != 0) { - String spid = (String) info.get(ProvisioningService.PROVISIONING_SPID); - Log.debug("Setup from \"" + ref + "\", SPID = " + spid); - - if (!httpAllowed) { - if (ref.startsWith("http://")) { - Log.debug("Won't make setup to " + ref + " because http is forbidden!"); - setError(ERROR_MALFORMED_URL, "Provisioning reference is a HTTP URL, but non-secure HTTP is forbidden!"); - setHasFailedPrv(true); - return; - } - } - - if (!ref.startsWith("file:") && ref.indexOf("service_platform_id") == -1) { - if (ref.indexOf('?') == -1) { - ref += '?'; - } else { - ref += '&'; - } - ref += "service_platform_id" + '=' + URLEncoder.encode(spid == null ? "" : spid); - } - Log.debug("Setup url = \"" + ref); - - URLConnection conn = null; - - try { - URL url = new URL(ref); - InputStream is = null; - - try { - conn = url.openConnection(); - if (conn == null) { - throw new IOException("Can't open connection to " + url + "!"); - } - conn.setRequestProperty("Connection", "close"); - - conn.connect(); - String error = conn.getHeaderField("error"); // Such - // error - // message - // is not by - // specification - // and is - // returned - // by - // Provisioining - // Service - // Backend - if (error == null) { - if ((conn instanceof HttpURLConnection) && ((HttpURLConnection) conn).getResponseCode() != HttpURLConnection.HTTP_OK) { - String errorMsg = "Warning! ResponseCode = " + ((HttpURLConnection) conn).getResponseCode() + "!"; - Log.debug(errorMsg); - setError(ERROR_IO_EXCEPTION, errorMsg); - } else { - is = conn.getInputStream(); - } - } else { - setError(ERROR_IO_EXCEPTION, error); - Log.debug("Error from Backend: " + error + "! Setup failed!"); - } - } catch (IOException e) { - setError(ERROR_IO_EXCEPTION, e.toString()); - Log.debug(e); - } - - if (is == null) { - setHasFailedPrv(true); - } else { - try { - ZipInputStream zis = new ZipInputStream(is); - try { - addInformation(zis); // the addInformation method - // closes stream - Log.debug("Setup ended."); - } finally { - if (!closeZip) { - try { - zis.close(); - } catch (Exception _) { - } - } - } - } catch (Exception e) { - setError(ERROR_CORRUPTED_ZIP, e.toString()); - setHasFailedPrv(true); - Log.debug(e); - } - } - } catch (IOException e) { // new URL ---> MalformedURLException - setError(ERROR_MALFORMED_URL, "Invalid Provisioning Reference: " + ref); - } finally { - if (conn != null && conn instanceof HttpURLConnection) { - try { - ((HttpURLConnection) conn).disconnect(); - } catch (Exception _) { - } - } - } - } - - if (getHasFailedPrv()) { - if (!reAfterPrvFailureDisabled) { - try { - if (timer != null) { - timer.notifyAfterMillis(this, nextPrvAfter(), PROVISIONING); // TO DO - Won't be updated with - // newer method - it will not - // run on older FW - } - } catch (Exception e) { - Log.debug(e); - } - } - } else { - times = 0; - nextProvisioningAfter = a; - } - } - - private synchronized long nextPrvAfter() { - times++; - if (nextProvisioningAfter < maxPeriod && nextProvisioningAfter * times > changePeriod) { - nextProvisioningAfter += b; - times = 0; - } - Log.debug("Next bootstrap after " + nextProvisioningAfter + "ms"); - return nextProvisioningAfter; - } - - // bundlesToStart is null on addInfo from provider/storage, and != null on - // add from ZIS - // pending error must be cleared only in second case! - private void addInformation(Dictionary info, Vector bundlesToStart) { - boolean refChanged = info.get(ProvisioningService.PROVISIONING_REFERENCE) != null; - synchronized (this.info) { - this.info.add(info); - Integer version = (Integer) this.info.get(ProvisioningService.PROVISIONING_UPDATE_COUNT); - Integer newVersion = new Integer(version.intValue() + 1); - incrementUC(newVersion); - } - - Log.debug("Bundles to start: " + bundlesToStart); - if (bundlesToStart != null) { - for (int i = 0; i < bundlesToStart.size(); i++) { - Object next = bundlesToStart.elementAt(i); - try { - if (next instanceof Bundle) { - ((Bundle) next).start(); - } else { - Bundle b = getBundle((String) next); - if (b != null) { - b.start(); - } else { - Log.debug("Can't find '" + next + "' bundle to start it!"); - } - } - } catch (Exception e) { - Log.debug("Exception while starting " + (next instanceof Bundle ? ((Bundle) next).getLocation() : next), e); - setHasFailedPrv(true); - return; - } - } - - clearError(); - } - - modify(); - updated(refChanged); - } - - private boolean isFrameworkStarted() { - if (!wfs) - return true; - Bundle system = bc.getBundle(0); - return system != null ? system.getState() == Bundle.ACTIVE : true; - } - - /** - * Make management agent bundle deployment. Sets java.security.AllPermission - * if PermissionAdmin is available.. - * - * @param maRef - * management agent reference. - */ - private void grantAllPermissions(String location) { - try { - ServiceReference sref = bc.getServiceReference("org.osgi.service.permissionadmin.PermissionAdmin"); // the - // org.osgi.service.permissionadmin is not imported for R1 - if (sref != null) { - Method method = Class.forName("org.osgi.service.permissionadmin.PermissionAdmin").getMethod("setPermissions", new Class[] {String.class, Class.forName("[Lorg.osgi.service.permissionadmin.PermissionInfo;")}); - Object[] allPerms = (Object[]) Array.newInstance(Class.forName("org.osgi.service.permissionadmin.PermissionInfo"), 1); - Constructor constr = Class.forName("org.osgi.service.permissionadmin.PermissionInfo").getConstructor(new Class[] {String.class, String.class, String.class}); - allPerms[0] = constr.newInstance(new String[] {"java.security.AllPermission", "", ""}); - method.invoke(bc.getService(sref), new Object[] {location, allPerms}); - } - } catch (Exception e) { - Log.debug(e); - } - } - - private ProvisioningStorage getStorage() { - ServiceReference sref = bc.getServiceReference(ProvisioningStorage.class.getName()); - return sref != null ? (ProvisioningStorage) bc.getService(sref) : null; - } - - private Bundle getBundle(String location) { - Bundle[] bundles = bc.getBundles(); - for (int i = bundles.length; i-- > 0;) { - if (location.equalsIgnoreCase(bundles[i].getLocation())) { - return bundles[i]; - } - } - return null; - } - - private void incrementUC(Integer uc) { - if (!active) { - return; - } - info.putUC(uc); - } - - private void modify() { - if (!active || sreg == null) { - return; - } - try { - sreg.setProperties(getRegProps()); - } catch (Exception e) { - } - } - - private Dictionary getRegProps() { - Hashtable prvsprops = new Hashtable(1, 1.0F); - prvsprops.put("Vendor", "ProSyst"); - prvsprops.put(ProvisioningService.PROVISIONING_UPDATE_COUNT, info.get(ProvisioningService.PROVISIONING_UPDATE_COUNT)); - return prvsprops; - } - - private void sort(ServiceReference[] srefs) { - for (int i = srefs.length - 1; i > 0; i--) { - for (int j = 0; j < i; j++) { - if (less(srefs[j + 1], srefs[j])) { - ServiceReference temp = srefs[j]; - srefs[j] = srefs[j + 1]; - srefs[j + 1] = temp; - } - } - } - } - - private boolean less(ServiceReference sref1, ServiceReference sref2) { - return getRanking(sref1) < getRanking(sref2); - } - - private int getRanking(ServiceReference sref) { - Integer ranking = (Integer) sref.getProperty(Constants.SERVICE_RANKING); - return ranking == null ? 0 : ranking.intValue(); - } - - private String getUTF8String(byte[] body) { - try { - return new String(body, "UTF-8"); - } catch (Exception _0) { - try { - return new String(body, "UTF8"); // for personal java - // problems - } catch (Exception _1) { - return new String(body); - } - } - } - - private void setError(int code, String message) { - ProvisioningData data = this.info; - if (data == null) { - return; - } - - data.setError(code, message); - - Integer version = (Integer) data.get(ProvisioningService.PROVISIONING_UPDATE_COUNT); - Integer newVersion = new Integer(version.intValue() + 1); - info.putUC(newVersion); - - modify(); - } - - private void clearError() { - ProvisioningData data = this.info; - if (data == null) { - return; - } - - data.clearError(); - } - - private boolean getHasFailedPrv() { - return "true".equals(info.get(HAS_FAILED_PROVISIONG)); - } - - private void setHasFailedPrv(boolean hasFailedPrv) { - if (getHasFailedPrv() != hasFailedPrv) { - info.putPrivate(HAS_FAILED_PROVISIONG, hasFailedPrv ? "true" : null); - store(); - } - } - - /** - * Parses the InitialProvisioning-Entries manifest header. - * @param header the contents of the InitialProvisioning-Entries manifest header, if any - * @return Dictionary which maps entry paths to Dictionary representing the attributes - * or null, if no header is found. - */ - private static Dictionary parseEntries(String header) { - Dictionary entries = null; - Dictionary attributes = null; - header = removeWhiteSpaces(header); - if (header == null || header.length() == 0) - return null; - int begin = 0, end = 1, length = header.length(); - boolean quoted = false; - String path, attribute, value; - - entry: while (end != -1 && begin < length - 1) { - end = readToken(header, begin, false, false); //read the path - if (end == -1) - break; //end of header, or only path - - switch (header.charAt(end)) { - case ';' ://end of path , read attribute - if (begin == end) { - end = readToken(header, end + 1, false, true); - begin = end + 1; - continue; - } - path = header.substring(begin, end); - begin = end + 1; - //read the attributes - while (end != -1 && begin < length - 1) { - end = readToken(header, begin, quoted, false); - if (end == -1) - break entry; - if (header.charAt(end) != '=' || begin == end) { - //invalid syntax - end = readToken(header, begin, false, true); //read the attribute name - begin = end + 1; - continue entry; - } - attribute = header.substring(begin, end); - if (header.charAt(begin) == '\"') { - quoted = true; - begin = end + 2; - } else - begin = end + 1; - - if (begin >= length - 1) - break entry; - - end = readToken(header, begin, quoted, false); //read the attribute value - if (end == -1) { - if (quoted) { - //invalid syntax - end = readToken(header, begin, false, true); - begin = end + 1; - continue entry; - } - //end of header or last attribute-value - value = header.substring(begin, length); - if (attributes == null) - attributes = new Hashtable(2, 3); - attributes.put(attribute, value); - begin = end + 1; - break; - } - switch (header.charAt(end)) { - case ',' : //end of parameters list - value = header.substring(begin, end); - if (attributes == null) - attributes = new Hashtable(2, 3); - attributes.put(attribute, value); - if (entries == null) - entries = new Hashtable(3, 3); - entries.put(path, attributes); - attributes = null; - continue entry; - case ';' : //another parameter - value = header.substring(begin, end); - if (attributes == null) - attributes = new Hashtable(2, 3); - attributes.put(attribute, value); - begin = end + 1; - continue; - case '\"' : //endof quoted part - quoted = false; - value = header.substring(begin, end - 1); - if (attributes == null) - attributes = new Hashtable(2, 3); - attributes.put(attribute, value); - begin = end + 1; - continue; - default : //invalid syntax - end = readToken(header, begin, false, true); - begin = end + 1; - continue entry; - } - } - break; - case ',' : //no description - if (begin == end) - begin = end + 2; - else - begin = end + 1; - continue; - default :// invalid syntax - end = readToken(header, end + 1, false, true); - begin = end + 1; - continue; - } - - if (attributes != null) { - if (entries == null) - entries = new Hashtable(3, 3); - entries.put(path, attributes); - attributes = null; - } - } - return entries; - } - - /** - * Reads the next token from the manifest header. - * @param token the valiue of the manifest header. - * @param begin index of the char from which to start - * @param quoted if the consequent part of teh string is guoted - * @param skipInvalidPath if true all chars till the first comma are skipped - * @return the index of the first character from the string which is - * different from the expected, or -1 if not found - */ - private static int readToken(String token, int begin, boolean quoted, boolean skipInvalidPath) { - char c = 0; - int len = token.length(); - if (begin >= len) - return -1; - if (quoted) { - while ((c = token.charAt(begin)) != '\"') { - if (++begin == len) - return -1; - } - return begin; - } - if (skipInvalidPath) { - while ((c = token.charAt(begin)) != ',') { - if (++begin == len) - return -1; - } - return begin; - } - while ((c = token.charAt(begin)) >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || c >= '0' && c <= '9' || c == '_' || c == '-' || c == '/' || c == '.' || c == ':') { - if (++begin == len) - return -1; - } - return begin; - } - - static final String TYPE = "type"; - - /** - * Filters the Dictionary returned from {@link #parseEntries(String)}. - * Returns Dictionary which maps entry paths to values of the attribute, - * which name is given as argument. - */ - private static Dictionary filterAttributes(String attribute, Dictionary entries) { - if (entries == null) - return null; - Dictionary filtered = null; - Enumeration paths = entries.keys(); - Dictionary attributes = null; - String path = null, type = null, mime = null; - while (paths.hasMoreElements()) { - path = (String) paths.nextElement(); - attributes = (Dictionary) entries.get(path); - if ((type = (String) attributes.get(attribute)) != null && (mime = typeToMIME(type)) != null) { - if (filtered == null) - filtered = new Hashtable(3, 3); - filtered.put(path, mime); - } - } - return filtered; - } - - /** - * Maps type to an appropriate mime type constant - * @param type the value of the type attribute from the InitialProvisioning-Entries header - * @return the mime type for the string type or null if type is not a valid type - */ - private static String typeToMIME(String type) { - if ("text".equals(type)) - return ProvisioningService.MIME_STRING; - if ("binary".equals(type)) - return ProvisioningService.MIME_BYTE_ARRAY; - if ("bundle".equals(type)) - return ProvisioningService.MIME_BUNDLE; - if ("bundle-url".equals(type)) - return ProvisioningService.MIME_BUNDLE_URL; - return null; - } - - /** - * @param filename the name of the zip entry - * @return the MIME type of the entry according to its extension - * or null if the mime type cannot be defined - */ - static String getMIMEfromExtension(String filename) { - int index = filename.lastIndexOf("."); - //no extension -> we cannot identify the type - if (index == -1) - return null; - String extension = filename.substring(index + 1); - if (extension.equals("jar")) - return ProvisioningService.MIME_BUNDLE; - if (extension.equals("txt")) - return ProvisioningService.MIME_STRING; - if (extension.equals("url")) - return ProvisioningService.MIME_BUNDLE_URL; - return ProvisioningService.MIME_BYTE_ARRAY; - } - - /** - * @param is the InputStream containing the information in the manifest - * @return the contents of the InitialProvisioning-Entries header if any or null otherwise - */ - private static String getHeaderFromManifest(InputStream is) { - boolean blank = false; - StringBuffer header = new StringBuffer(); - BufferedReader br = new BufferedReader(new InputStreamReader(is)); - String line = null; - boolean loop = true; - try { - while ((line = br.readLine()) != null && loop) { - if (line.length() == 0) { - if (blank) { - break; - } - blank = true; - continue; - } else { - blank = false; - } - if (line.startsWith(ProvisioningService.INITIALPROVISIONING_ENTRIES)) { - header.append(removeWhiteSpaces(line.substring(ProvisioningService.INITIALPROVISIONING_ENTRIES.length() + 1))); - line = br.readLine();//next line - if (line == null) - return null; - while (loop = (line.length() != 0 && Character.isWhitespace(line.charAt(0)))) { - header.append(removeWhiteSpaces(line)); - line = br.readLine(); - } - } - } - } catch (IOException ioe) { - return null; - } - return (header.length() == 0 ? null : header.toString()); - } - - private static String removeWhiteSpaces(String s) { - if (s == null) - return null; - char curr; - StringBuffer sb = new StringBuffer(); - for (int i = 0; i < s.length(); i++) { - if (!Character.isWhitespace(curr = s.charAt(i))) { - sb.append(curr); - } - } - return sb.toString(); - } - - private static class ISWrapper extends InputStream { - - private InputStream is; - - ISWrapper(InputStream is) { - this.is = is; - } - - public int read() throws IOException { - return is.read(); - } - - public int read(byte[] src, int off, int len) throws IOException { - return is.read(src, off, len); - } - - public void close() { - } - } - - public static boolean getBoolean(String property) { - String prop = (bc != null) ? bc.getProperty(property) : System.getProperty(property); - return ((prop != null) && prop.equalsIgnoreCase("true")); - } - - public static int getInteger(String property, int defaultValue) { - String prop = (bc != null) ? bc.getProperty(property) : System.getProperty(property); - if (prop != null) { - try { - return Integer.decode(prop).intValue(); - } catch (NumberFormatException e) { - //do nothing - } - } - return defaultValue; - } -} diff --git a/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/impl/ProvisioningData.java b/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/impl/ProvisioningData.java deleted file mode 100644 index bfe05ceed7..0000000000 --- a/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/impl/ProvisioningData.java +++ /dev/null @@ -1,155 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.ip.impl; - -import java.util.*; -import org.eclipse.equinox.internal.ip.ProvisioningInfoProvider; -import org.osgi.service.provisioning.ProvisioningService; - -/** - * Provisioning data implementation. This Dictionary do not store a Strings with - * length 0 (skips them). Also skips on put values "null". - * - * @author Avgustin Marinov - * @author Pavlin Dobrev - * @version 1.0 - */ - -public class ProvisioningData extends Hashtable { - - private static final long serialVersionUID = 1L; - - /** List of all providers used for data load. The highest ranking is last. */ - Vector providers = new Vector(); - - public final static String PROVISIONING_ERROR = "provisioning.error"; - - /** - * Constructs ProvisioningData. - * - * @param bc - * bundle context. - * @param agent - * ProvisioningAgent. - */ - ProvisioningData() { - super.put(ProvisioningService.PROVISIONING_UPDATE_COUNT, new Integer(0)); - } - - /** - * @see java.util.Hashtable#put(java.lang.Object, java.lang.Object) - */ - public Object put(Object key, Object value) { - throw newUnsupportedOperation("put"); - } - - public Object remove(Object key) { - throw newUnsupportedOperation("remove"); - } - - /** - * Gets value for key using all providers. The service with highest ranking. - * - * @see java.util.Hashtable#get(java.lang.Object) - */ - public synchronized Object get(Object key) { - Object value = super.get(key); - Object emptyCash = null; - // if somewhere have "" or byte[0] it will be overiden next ocurence of - // the - // value is found - for CM set "" when there is not value set - boolean hasEmptyString = value != null && isEmpty(value); - if (hasEmptyString) - emptyCash = value; - if (value == null || hasEmptyString) { - synchronized (providers) { - for (int i = providers.size(); i-- > 0;) { - value = ((ProvisioningInfoProvider) providers.elementAt(i)).get(key); - if (value != null && !isEmpty(value)) { - break; - } - if (value != null && !hasEmptyString && isEmpty(value)) { - if (!hasEmptyString) - emptyCash = value; - hasEmptyString = true; - } - } - } - } - if (value == null && hasEmptyString) { - value = emptyCash; - } - return value; - } - - void set(Dictionary newData) { - super.clear(); - add(newData); - } - - void add(Dictionary toAdd) { - if (toAdd == null) { - return; - } - for (Enumeration e = toAdd.keys(); e.hasMoreElements();) { - Object key = e.nextElement(); - if (key instanceof String) { - Object value = toAdd.get(key); - if (value instanceof String || value instanceof byte[] || (key.equals(ProvisioningService.PROVISIONING_UPDATE_COUNT) && value instanceof Integer)) { - if (ProvisioningService.PROVISIONING_REFERENCE.equals(key)) { - value = ((String) value).trim(); - } - super.put(key, value); - } - } - } - } - - void putUC(Integer uc) { - super.put(ProvisioningService.PROVISIONING_UPDATE_COUNT, uc); - } - - void putPrivate(String key, String value) { - if (value == null) { - super.remove(key); - } else { - super.put(key, value); - } - } - - void setError(int code, String message) { - String value = code + " " + ((message != null) ? message : " No details."); - super.put(PROVISIONING_ERROR, value); - } - - void clearError() { - super.remove(PROVISIONING_ERROR); - } - - private final boolean isEmpty(Object value) { - return (value instanceof String && ((String) value).length() == 0) || (value instanceof byte[] && ((byte[]) value).length == 0); - } - - private final RuntimeException newUnsupportedOperation(String methodName) { - RuntimeException e; - try { - e = (RuntimeException) Class.forName("java.lang.UnsupportedOperationException").newInstance(); - } catch (Throwable t) { - e = new IllegalStateException(methodName + " is unsupported method for provisioning dictionary!"); - } - return e; - } - -} diff --git a/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/package.html b/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/package.html deleted file mode 100644 index 8291ee3122..0000000000 --- a/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/package.html +++ /dev/null @@ -1,9 +0,0 @@ - - -This package contains ProSyst specific interfaces for Provisioning process. Implementation of these interfaces can customize provisioning agent behavior. This can be done by registering on the service gateway one ( or both) of the following interfaces:
-
    -
  • {@link org.eclipse.equinox.ip.ProvisioningInfoProvider org.eclipse.equinox.ip.ProvisioningInfoProvider} -
  • {@link org.eclipse.equinox.ip.ProvisioningStorage org.eclipse.equinox.ip.ProvisioningStorage} -
- - \ No newline at end of file diff --git a/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/provider/BaseProvider.java b/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/provider/BaseProvider.java deleted file mode 100644 index 6da04e878e..0000000000 --- a/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/provider/BaseProvider.java +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.ip.provider; - -import java.util.Hashtable; -import org.eclipse.equinox.internal.ip.ProvisioningInfoProvider; -import org.eclipse.equinox.internal.ip.impl.Log; -import org.eclipse.equinox.internal.ip.impl.ProvisioningAgent; -import org.osgi.framework.*; - -/** - * Base class for inner providers. Implements their registering and - * unregistering as services, their common debug. - * - * @author Avgustin Marinov - * @author Pavlin Dobrev - * @version 1.0 - */ -public class BaseProvider implements BundleActivator { - - /** Service Registration of ConfigurationLoader service. */ - private ServiceRegistration reg; - - /** - * Invoked from ProvisioningAgent if provider is packed in provisioning - * agent bundle or by FW when it is packed as standalone bundle. Registers - * itself as ProvisioningInfoProvider service with - * Constants.SERVICE_RANKING get from manifest. Puts in provisioning - * dictionary entire stored data. - * - * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext) - */ - public void start(BundleContext bc) throws Exception { - Log.debug = ProvisioningAgent.getBoolean("equinox.provisioning.debug"); - String providers = (String) bc.getBundle().getHeaders().get(ProvisioningInfoProvider.PROVIDERS); - - if (providers != null) { - String className = this.getClass().getName(); - int index = (providers = providers.trim()).indexOf(className); - if (index != -1) { - index += className.length(); - index = providers.indexOf(';', index); - if (index != -1) { - int end = providers.indexOf(',', index); - if (end == -1) { - end = providers.length(); - } - Integer ranking = null; - try { - ranking = new Integer(providers.substring(index + 1, end).trim()); - } catch (NumberFormatException nfe) { - throw new Exception("Bad \"" + ProvisioningInfoProvider.PROVIDERS + "\" header format in manifest! " + toString() + "'s ranking \"" + providers.substring(index + 1, end).trim() + "\" is not valid integer!"); - } - - Log.debug("Registers " + this + " provider with ranking = " + ranking + "."); - Hashtable props = new Hashtable(1, 1.0F); - props.put(Constants.SERVICE_RANKING, ranking); - reg = bc.registerService(ProvisioningInfoProvider.class.getName(), this, props); - return; - } - } - } - throw new Exception("Bad \"" + ProvisioningInfoProvider.PROVIDERS + "\" header format in manifest! Loader " + toString() + " can't be loaded!"); - } - - /** - * Invoked from ProvisioningAgent if provider is packed in provisioning - * agent bundle or by FW when it is packed as standalone bundle. Unregister - * service. - * - * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext) - */ - public void stop(BundleContext bc) { - if (reg != null) { - try { - reg.unregister(); - } catch (Exception _) { - } - } - } -} diff --git a/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/provider/env/EnvironmentInfoProvider.java b/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/provider/env/EnvironmentInfoProvider.java deleted file mode 100644 index 0e8e9601e1..0000000000 --- a/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/provider/env/EnvironmentInfoProvider.java +++ /dev/null @@ -1,130 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.ip.provider.env; - -import java.util.*; -import org.eclipse.equinox.internal.ip.ProvisioningInfoProvider; -import org.eclipse.equinox.internal.ip.impl.Log; -import org.eclipse.equinox.internal.ip.impl.ProvisioningAgent; -import org.eclipse.equinox.internal.ip.provider.BaseProvider; -import org.osgi.framework.BundleContext; -import org.osgi.service.provisioning.ProvisioningService; - -/** - * Implements ConfiguratorLoader. Reads from system properties and - * BundleContext. Acts as provider. - * - * @author Avgustin Marinov, - * @author Pavlin Dobrev - * @version 1.0 - */ - -public class EnvironmentInfoProvider extends BaseProvider implements ProvisioningInfoProvider { - - /** - * This is a key for property that points if manual setting of info is - * allowed. - */ - public static final String MANUAL_SUPPORT = "equinox.provisioning.env.provider.allowed"; - - /** - * This is a system properties key that points that the system properties - * starting with this key should be pushed into ProvisioningService If value - * for the key is not set or is "" no system properties are pushed. If "*" - * all are pushed. Else -> only the properties with key started with the - * PUSH_STARTING_WITH are pushed. - */ - public static final String PUSH_STARTING_WITH = "equinox.provisioning.env.provider.push.starting.with"; - - /** Properties that are to be loaded into dictionary. */ - private static final String[] props = {ProvisioningService.PROVISIONING_REFERENCE}; - - private BundleContext bc; - - /** - * If manual support is available starts it. - * - * @see org.eclipse.equinox.internal.ip.impl.provider.BaseProvider#start(org.osgi.framework.BundleContext) - */ - public void start(BundleContext bc) throws Exception { - boolean manualsupport = true; - if (bc.getProperty(MANUAL_SUPPORT) != null) - if (bc.getProperty(MANUAL_SUPPORT).equals("false")) - manualsupport = false; - if (!manualsupport) { - Log.debug(this + " is not an allowed provider."); - return; - } - this.bc = bc; - super.start(bc); - } - - /** - * @see org.eclipse.equinox.internal.ip.ProvisioningInfoProvider#init(org.osgi.service.provisioning.ProvisioningService) - */ - public Dictionary init(ProvisioningService prvSrv) { - Dictionary info = new Hashtable(); - for (int i = props.length; i-- > 0;) { - String value = ProvisioningAgent.bc.getProperty(props[i]); - if (value != null) { - info.put(props[i], value); - } - } - if (ProvisioningAgent.bc.getProperty(PUSH_STARTING_WITH) != null) { - String prefix = ProvisioningAgent.bc.getProperty(PUSH_STARTING_WITH).trim(); - if (prefix.length() != 0) { - boolean all = "*".equals(prefix); - Dictionary sprops = System.getProperties(); - for (Enumeration e = sprops.keys(); e.hasMoreElements();) { - try { - String key = (String) e.nextElement(); - if (all || key.startsWith(prefix)) { - info.put(key, sprops.get(key)); - } - } catch (Exception _) { - } - } - } - } - return info; - } - - /** - * Gets system property - * - * @param key - * the key. - * @return the value. - */ - public Object get(Object key) { - Object value = null; - if (key instanceof String) { - value = ProvisioningAgent.bc.getProperty((String) key); - if (value == null) { - value = bc.getProperty((String) key); - } - } - return value; - } - - /** - * Returns name of this provider. - * - * @return the name. - */ - public String toString() { - return "Environment"; - } -} diff --git a/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/provider/file/FileProvider.java b/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/provider/file/FileProvider.java deleted file mode 100644 index aeff6e5e37..0000000000 --- a/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/provider/file/FileProvider.java +++ /dev/null @@ -1,192 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.ip.provider.file; - -import java.io.*; -import java.util.Dictionary; -import java.util.Hashtable; -import org.eclipse.equinox.internal.ip.ProvisioningInfoProvider; -import org.eclipse.equinox.internal.ip.impl.Log; -import org.eclipse.equinox.internal.ip.impl.ProvisioningAgent; -import org.eclipse.equinox.internal.ip.provider.BaseProvider; -import org.osgi.framework.BundleContext; -import org.osgi.service.provisioning.ProvisioningService; - -/** - * Loads data from inner (in jar) file or from file on hard disk. Only string - * "TEXT" data is loaded directly into provisioning dictionary. All binaries are - * load into inner dictionary only and are delivered only to when get method is - * invoked. - * - * @author Avgustin Marinov - * @author Pavlin Dobrev - * @version 1.0 - */ - -public class FileProvider extends BaseProvider implements ProvisioningInfoProvider { - - /** Name of configuration file. */ - public static final String PROPS_FILE = "/props.txt"; - - /** This line points start of TEXT section in props.txt file */ - public static final String TEXT = "#[TEXT]"; - - /** This line points start of BINARY section in props.txt file */ - public static final String BINARY = "#[BINARY]"; - - /** This property is used to be determined if to be used this allowed. */ - public static final String FILE_SUPPORT = "equinox.provisioning.file.provider.allowed"; - - /** - * This property is used to be determined if to be provider only if this - * provider is started for first. - */ - public static final String LOAD_ONCE = "equinox.provisioning.file.load.once"; - - /** - * This dictionary keeps data that is provided by provider but is not put - * into provisioning data. - */ - private Dictionary innerDict = new Hashtable(); - - /** File that is used as flag if this is first start of provider. */ - private File file; - - /** - * @see org.eclipse.equinox.internal.ip.impl.provider.BaseProvider#start(org.osgi.framework.BundleContext) - */ - public void start(BundleContext bc) throws Exception { - boolean filesupport = true; - if (bc.getProperty(FILE_SUPPORT) != null) - if (bc.getProperty(FILE_SUPPORT).equals("false")) - filesupport = false; - if (!filesupport) { - Log.debug(this + " is not an allowed provider."); - return; - } - - file = bc.getDataFile("_mark123"); - boolean loadonce = true; - if (bc.getProperty(LOAD_ONCE) != null) - if (bc.getProperty(LOAD_ONCE).equals("false")) - loadonce = false; - if (file.exists() && loadonce) { - Log.debug("File provider have loaded data already!"); - return; - } - super.start(bc); - } - - /** - * Loads data from inner (in jar) file or from file on hard disk. Data from - * "props" is put into provisioning data dictionary but others entries are - * put into "innerDict" and are available if someone request them. - * - * @see org.eclipse.equinox.internal.ip.ProvisioningInfoProvider#init(org.osgi.service.provisioning.ProvisioningService) - */ - public Dictionary init(ProvisioningService prvSrv) throws Exception { - boolean loadonce = true; - if (ProvisioningAgent.bc.getProperty(LOAD_ONCE) != null) - if (ProvisioningAgent.bc.getProperty(LOAD_ONCE).equals("false")) - loadonce = false; - if (file.exists() && loadonce) { - Log.debug("File provider have loaded data already!"); - return null; - } - String externalFileLocation = ProvisioningAgent.bc.getProperty("equinox.provisioning.file.provider.specfile.location"); - BufferedReader reader = new BufferedReader(new InputStreamReader(externalFileLocation == null ? FileProvider.class.getResourceAsStream(PROPS_FILE) : new FileInputStream(externalFileLocation))); - Dictionary dictionary = new Hashtable(10, 1.0F); - try { - ByteArrayOutputStream baos = null; - byte[] buffer = null; - int i; - - String line; - boolean stringMode = true; - while ((line = reader.readLine()) != null) { - if (!(line = line.trim()).startsWith("#")) { - if ((i = line.indexOf('=')) != -1) { - if (stringMode) { - dictionary.put(line.substring(0, i), line.substring(i + 1)); - } else { - if (baos == null) { - baos = new ByteArrayOutputStream(); - buffer = new byte[256]; - } - - String key = line.substring(0, i); - String entryName = line.substring(i + 1); - InputStream is; - if (externalFileLocation == null) { - is = FileProvider.class.getResourceAsStream(entryName); - if (is == null && entryName.length() != 0 && entryName.charAt(0) != '/') { - is = FileProvider.class.getResourceAsStream('/' + entryName); - } - } else - is = new FileInputStream(entryName); - for (; // - (i = is.read(buffer, 0, buffer.length)) != -1; // - baos.write(buffer, 0, i)) { - } - - innerDict.put(key, baos.toByteArray()); - - baos.reset(); - } - } - } else { - if (line.equalsIgnoreCase(TEXT)) { - stringMode = true; - } else if (line.equalsIgnoreCase(BINARY)) { - stringMode = false; - } - } - } - if (!file.exists()) { - FileOutputStream fos = new FileOutputStream(file); - try { - fos.write(ZERO_BYTE_ARRAY); - } finally { - fos.close(); - } - } - } finally { - reader.close(); - } - return dictionary; - } - - private static final byte[] ZERO_BYTE_ARRAY = new byte[] {0}; - - /** - * Provides value for this key form "innnerDict". - * - * @param key - * the key. - * @return the value. - */ - public Object get(Object key) { - return innerDict.get(key); - } - - /** - * Returns name of this provider. - * - * @return name of provider. - */ - public String toString() { - return "File"; - } -} diff --git a/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/provider/http/Context.java b/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/provider/http/Context.java deleted file mode 100644 index 0632005379..0000000000 --- a/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/provider/http/Context.java +++ /dev/null @@ -1,66 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.ip.provider.http; - -import java.net.URL; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.osgi.service.http.HttpContext; - -/** - * @author Pavlin Dobrev - * @version 1.0 - */ - -final class Context implements HttpContext { - - private Context() { - // prevent instantiation - } - - private static Context singleton; - - public static final Context getInstance() { - if (singleton == null) { - singleton = new Context(); - } - return singleton; - } - - /** - * @see org.osgi.service.http.HttpContext#getResource(java.lang.String) - */ - public URL getResource(String name) { - return this.getClass().getResource(name); - } - - /** - * @see org.osgi.service.http.HttpContext#getMimeType(java.lang.String) - */ - public String getMimeType(String name) { - return null; - } - - /** - * @see org.osgi.service.http.HttpContext#handleSecurity(javax.servlet.http.HttpServletRequest, - * javax.servlet.http.HttpServletResponse) - */ - public boolean handleSecurity(HttpServletRequest request, HttpServletResponse response) { - return true; - } - -} diff --git a/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/provider/http/HttpProvider.java b/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/provider/http/HttpProvider.java deleted file mode 100644 index b61bc3c68a..0000000000 --- a/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/provider/http/HttpProvider.java +++ /dev/null @@ -1,290 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.ip.provider.http; - -import java.util.*; -import javax.servlet.http.*; -import org.eclipse.equinox.internal.ip.ProvisioningInfoProvider; -import org.eclipse.equinox.internal.ip.impl.Log; -import org.eclipse.equinox.internal.ip.impl.ProvisioningAgent; -import org.eclipse.equinox.internal.ip.provider.BaseProvider; -import org.osgi.framework.*; -import org.osgi.service.http.HttpService; -import org.osgi.service.provisioning.ProvisioningService; -import org.osgi.service.useradmin.*; - -/** - * Implements ProvisioningInfoProvider. Allows remote data loading through HTTP. - * Acts as dynamic provider. On load(Dictionary) it just get reference - * to provisioning data. - * - * @author Avgustin Marinov - * @author Pavlin Dobrev - * @version 1.0 - */ -public class HttpProvider extends BaseProvider implements ProvisioningInfoProvider, ServiceListener { - - /** Alias this servlet will be registered if remote configuration is allowed. */ - public static final String ALIAS = "/rminit"; - /** - * This is a key for property that points if remote setting of info is - * allowed. - */ - public static final String HTTP_SUPPORT = "equinox.provisioning.http.provider.allowed"; - /** - * This system property is used to be determined if to accepts only - * HttpServletRequest-s with scheme "https". - */ - public static final String SECURE = "equinox.provisioning.http.provider.secure"; - /** This system property determines if to requires authentication. */ - public static final String REQUIRE_AUTH = "equinox.provisioning.require.auth"; - - /** If to accepts only HttpServletRequests with scheme "https". */ - static boolean secure; - /** Reference to provisioning service. */ - ProvisioningService prvSrv; - /** Bundle context reference. */ - private BundleContext bc; - /** HTTP service that is used for registration of servlet. */ - private HttpService http; - /** Servlet that is registered. */ - private HttpServlet servlet = new HttpServletImpl(); - - /** - * @see org.eclipse.equinox.internal.ip.impl.provider.BaseProvider#start(org.osgi.framework.BundleContext) - */ - public void start(BundleContext bc) throws Exception { - boolean httpsupport = true; - if (bc.getProperty(HTTP_SUPPORT) != null) - if (bc.getProperty(HTTP_SUPPORT).equals("false")) - httpsupport = false; - if (!httpsupport) { - Log.debug(this + " is not an allowed provider."); - return; - } - - this.bc = bc; - super.start(bc); - } - - /** - * Stops provider. Unregister servlet. - * - * @see org.eclipse.equinox.internal.ip.impl.provider.BaseProvider#stop(org.osgi.framework.BundleContext) - */ - public void stop(BundleContext bc) { - super.stop(bc); - if (http != null) { - try { - http.unregister(ALIAS); - } catch (Exception e) { - // Not fatal - } - http = null; - } - } - - /** - * @see org.eclipse.equinox.internal.ip.ProvisioningInfoProvider#init(org.osgi.service.provisioning.ProvisioningService) - */ - public Dictionary init(ProvisioningService prvSrv) { - this.prvSrv = prvSrv; - secure = false; - if (ProvisioningAgent.bc.getProperty(SECURE) != null) - if (ProvisioningAgent.bc.getProperty(SECURE).equals("true")) - secure = true; - try { - bc.addServiceListener(this, '(' + "objectClass" + '=' + HttpService.class.getName() + ')'); - } catch (Exception e) { - Log.debug(e); - } - - synchronized (this) { - if (http == null) { - ServiceReference sref = bc.getServiceReference(HttpService.class.getName()); - if (sref != null) { - http = (HttpService) bc.getService(sref); - registerServlet(); - } - } - } - return null; // Do not loads - } - - /** - * @see org.eclipse.equinox.internal.ip.ProvisioningInfoProvider#get(java.lang.Object) - */ - public Object get(Object key) { - return null; - } - - /** - * Manages servlet (un)registration. - * - * @see org.osgi.framework.ServiceListener#serviceChanged(org.osgi.framework.ServiceEvent) - */ - public synchronized void serviceChanged(ServiceEvent se) { - if (se.getType() == ServiceEvent.REGISTERED) { - if (http == null) { - http = (HttpService) bc.getService(se.getServiceReference()); - registerServlet(); - } - } else if (se.getType() == ServiceEvent.UNREGISTERING) { - if (http != null) { - try { - http.unregister(ALIAS); - } catch (Exception e) { - // Not fatal - } - http = null; - ServiceReference sref = bc.getServiceReference(HttpService.class.getName()); - if (sref != null) { - http = (HttpService) bc.getService(sref); - registerServlet(); - } - } - } - } - - // Registers servlet with ALIAS. - private void registerServlet() { - try { - http.registerServlet(ALIAS, servlet, null, Context.getInstance()); - Log.debug("Servlet \"" + ALIAS + "\" registered."); - } catch (Exception e) { - // Servlet won't be registered - Log.debug("Error registering HTTP provider servlet!", e); - } - } - - /** - * Return name of provider. - * - * @return name. - */ - public String toString() { - return "Http"; - } - - /** - * Class implements servlet which enables (un)secure remote configuration. - */ - class HttpServletImpl extends HttpServlet { - - private static final long serialVersionUID = 1L; - - // If supports remote configuration - /** - * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, - * javax.servlet.http.HttpServletResponse) - */ - public void doGet(HttpServletRequest request, HttpServletResponse response) { - Log.debug("doGet ..."); - if (request.getHeader("Get-Id") == null) { - Log.debug("Redirect to doPost."); - doPost(request, response); - } else { - Log.debug("Request for spid."); - if (secure && !request.getScheme().equals("https")) { - Log.debug("Request to secure HttpLoader must be via https!"); - response.setHeader("error", "Request to secure HttpLoader must be via https!"); - response.setStatus(HttpServletResponse.SC_OK); - return; - } - String spid = (String) prvSrv.getInformation().get(ProvisioningService.PROVISIONING_SPID); - if (spid != null && spid.length() != 0) { - response.setHeader("Gw-Id", spid); - } - response.setStatus(HttpServletResponse.SC_OK); - } - } - - // If supports remote configuration - /** - * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, - * javax.servlet.http.HttpServletResponse) - */ - public void doPost(HttpServletRequest request, HttpServletResponse response) { - Log.debug("doPost ..."); - if (secure && !request.getScheme().equals("https")) { - Log.debug("Request to secure HttpLoader must be via https!"); - response.setHeader("error", "Request to secure HttpLoader must be via https!"); - response.setStatus(HttpServletResponse.SC_OK); - return; - } - - String user = request.getParameter("user"); - String pass = request.getParameter("pass"); - - boolean req_auth = false; - if (ProvisioningAgent.bc.getProperty(REQUIRE_AUTH) != null) - if (ProvisioningAgent.bc.getProperty(REQUIRE_AUTH).equals("true")) - req_auth = true; - - if (!req_auth && !checkAccount(user, pass)) { - Log.debug("Incorrect Account!"); - response.setHeader("error", "Incorrect account!"); - return; - } - - Dictionary info = new Hashtable(); - Log.debug("HttpLoader loads:"); - for (Enumeration e = request.getParameterNames(); e.hasMoreElements();) { - String name = (String) e.nextElement(); - if (!"user".equals(name) && !"pass".equals(name)) { - String param = request.getParameter(name); - if (ProvisioningInfoProvider.GM_HOST.equals(name) && "no".equals(param)) { - continue; - } - Log.debug(" " + name + '=' + param); - info.put(name, param); - } - } - - prvSrv.addInformation(info); - response.setStatus(HttpServletResponse.SC_OK); - } - } - - /* - * Returns if account is correct. - * - * TODO: add user admin to tracked services - */ - boolean checkAccount(String user, String pass) { - if (user == null || pass == null) { - return false; - } - - ServiceReference sref = bc.getServiceReference(UserAdmin.class.getName()); - if (sref == null) { - return false; - } - UserAdmin userAdmin = (UserAdmin) bc.getService(sref); - if (userAdmin != null) { - try { - User userRole = (User) userAdmin.getRole(user); - if (userRole != null && userRole.hasCredential("password", pass)) { - Authorization authorization = userAdmin.getAuthorization(userRole); - return authorization.hasRole("administration"); - } - } catch (Exception e) { - Log.debug(e); - } - } - return false; - } - -} diff --git a/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/storage/cm/CMStorage.java b/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/storage/cm/CMStorage.java deleted file mode 100644 index 1381bc1092..0000000000 --- a/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/storage/cm/CMStorage.java +++ /dev/null @@ -1,242 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.ip.storage.cm; - -import java.io.IOException; -import java.util.Dictionary; -import java.util.Hashtable; -import org.eclipse.equinox.internal.ip.ProvisioningStorage; -import org.eclipse.equinox.internal.ip.impl.Log; -import org.eclipse.equinox.internal.ip.impl.ProvisioningAgent; -import org.osgi.framework.*; -import org.osgi.service.cm.*; -import org.osgi.service.provisioning.ProvisioningService; -import org.osgi.util.tracker.ServiceTracker; - -/** - * Implements Storage by using CM. - * - * @author Avgustin Marinov - * @author Pavlin Dobrev - * @version 1.0 - */ - -public class CMStorage implements ProvisioningStorage, ManagedService, BundleActivator { - - /** PID for Configuration Manager */ - public static final String PID = "equinox.provisioning.provisioning.pid"; - /** - * This system property is used for determining if to be used this - * storage/provider. - */ - public static final String CM_SUPPORT = "equinox.provisioning.cm.support"; - - /** Registration as Managed Service. */ - private ServiceRegistration msSReg; - /** Registration as Storage Service. */ - private ServiceRegistration sSReg; - - /** Tracker for ProvisioningService. */ - private ServiceTracker prvSrvTracker; - /** Tracker for ConfigurationAdmin. */ - private ServiceTracker cmTracker; - - // /** Initial data data.*/ - // private Dictionary info; - /** BundleContext. */ - private BundleContext bc; - - /** Counter is used for skipping "own update()-s". */ - private int counter; - - private boolean infoLoaded; - private boolean skipStore; - - private boolean registering; - - /** - * Opens tracker an register itself as ManagedService. - * - * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext) - */ - public void start(BundleContext bc) throws Exception { - Log.debug = ProvisioningAgent.getBoolean("equinox.provisioning.debug"); - boolean cmsupport = true; - if (ProvisioningAgent.bc.getProperty(CM_SUPPORT) != null) - if (ProvisioningAgent.bc.getProperty(CM_SUPPORT).equals("false")) - cmsupport = false; - if (!cmsupport) { - Log.debug(this + " is not supported provider/storage!"); - return; - } // Do not be used as provider or storage - - this.bc = bc; - counter = 0; - registering = false; - - prvSrvTracker = new ServiceTracker(bc, ProvisioningService.class.getName(), null); - prvSrvTracker.open(); - - cmTracker = new ServiceTracker(bc, ConfigurationAdmin.class.getName(), null); - cmTracker.open(); - - Dictionary props = new Hashtable(1, 1.0F); - props.put(Constants.SERVICE_PID, PID); - msSReg = bc.registerService(ManagedService.class.getName(), this, props); - Log.debug("Managed Service Registered."); - } - - /** - * Closes cmTracker and unregister service. - * - * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext) - */ - public void stop(BundleContext bc) { - Log.debug("Close " + this + '.'); - bc = null; - try { - if (sSReg != null) { - sSReg.unregister(); - sSReg = null; - } - } catch (Exception _) { - } - try { - if (msSReg != null) { - msSReg.unregister(); - msSReg = null; - } - } catch (Exception _) { - } - - prvSrvTracker.close(); - prvSrvTracker = null; - - cmTracker.close(); - cmTracker = null; - } - - /** - * @see org.eclipse.equinox.internal.ip.ProvisioningStorage#getStoredInfo() - */ - public Dictionary getStoredInfo() { - try { - ConfigurationAdmin cm = (ConfigurationAdmin) cmTracker.getService(); - if (cm == null) { - return null; - } - Configuration config = cm.getConfiguration(PID); - Dictionary info = config.getProperties(); - infoLoaded = true; - return info; - } catch (IOException ioe) { - Log.debug(ioe); - } - return null; - } - - /** - * @see org.eclipse.equinox.internal.ip.ProvisioningStorage#store(java.util.Dictionary) - */ - public void store(Dictionary provisioningData) { - try { - synchronized (this) { - if (skipStore) { - skipStore = false; - return; - } - } - ConfigurationAdmin cm = (ConfigurationAdmin) cmTracker.getService(); - if (cm == null) { - return; - } - Configuration config = cm.getConfiguration(PID); - - synchronized (this) { - Log.debug("Store data into CM"); - config.update(provisioningData); - counter++; - } - } catch (IOException e) { - // Should be impossible - Log.debug(e); - } - } - - /** - * @see org.osgi.service.cm.ManagedService#updated(java.util.Dictionary) - */ - public void updated(Dictionary props) { - boolean register = false; - synchronized (this) { - if (registering) { - try { - wait(); - } catch (InterruptedException ioe) { - } // Should not happened - } - if (sSReg == null && bc != null) { - registering = true; - register = true; - } - } - - if (register) { - try { - sSReg = bc.registerService(ProvisioningStorage.class.getName(), this, null); - Log.debug(this + " Registered."); - } catch (Exception e) { - Log.debug(e); - } - synchronized (this) { - registering = false; - notifyAll(); - } - return; - } - - Log.debug("CM Storage Updated : counter = " + counter); - synchronized (this) { - if (counter != 0) { - counter--; - return; - } // This is an own update() so one updated() will be skipped - } - - if (props == null) { - return; - } - - ProvisioningService prvSrv = (ProvisioningService) prvSrvTracker.getService(); - if (prvSrv != null) { - synchronized (this) { - if (!infoLoaded) { - skipStore = true; - infoLoaded = true; - } - } - prvSrv.addInformation(props); - } - } - - /** - * Returns name of Storage. - * - * @return name. - */ - public String toString() { - return "CM Storage"; - } -} diff --git a/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/storage/file/FileStorage.java b/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/storage/file/FileStorage.java deleted file mode 100644 index 64e3abb241..0000000000 --- a/bundles/org.eclipse.equinox.ip/src/org/eclipse/equinox/internal/ip/storage/file/FileStorage.java +++ /dev/null @@ -1,188 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.ip.storage.file; - -import java.io.*; -import java.util.*; -import java.util.zip.*; -import org.eclipse.equinox.internal.ip.ProvisioningStorage; -import org.eclipse.equinox.internal.ip.impl.Log; -import org.eclipse.equinox.internal.ip.impl.ProvisioningAgent; -import org.osgi.framework.BundleActivator; -import org.osgi.framework.BundleContext; -import org.osgi.service.provisioning.ProvisioningService; - -/** - * File Storage. - * - * @author Avgustin Marinov, - * @author Pavlin Dobrev - * @version 1.0 - */ - -public class FileStorage implements ProvisioningStorage, BundleActivator { - - /** Name of data file used for storing configuration. */ - public static final String FILE_NAME = "_storage.zip"; - - /** Bundle context. */ - private BundleContext bc; - - /** - * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext) - */ - public void start(BundleContext bc) throws Exception { - Log.debug = ProvisioningAgent.getBoolean("equinox.provisioning.debug"); - this.bc = bc; - } - - /** - * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext) - */ - public void stop(BundleContext bc) throws Exception { - } - - /** - * @see org.eclipse.equinox.internal.ip.ProvisioningStorage#getStoredInfo() - */ - public Dictionary getStoredInfo() { - FileInputStream fis = null; - try { - fis = new FileInputStream(bc.getDataFile(FILE_NAME)); - } catch (Exception e) { - return null; - } - try { - Dictionary toAdd = new Hashtable(); - getInfo(fis, toAdd); - fis.close(); - return toAdd; - } catch (Exception e) { - Log.debug(e); - return null; - } - } - - /** - * @see org.eclipse.equinox.internal.ip.ProvisioningStorage#store(java.util.Dictionary) - */ - public void store(Dictionary dictionary) { - try { - FileOutputStream fos = new FileOutputStream(bc.getDataFile(FILE_NAME)); - saveInfo(fos, dictionary); - fos.close(); - } catch (Exception e) { - Log.debug(e); - } - } - - /** - * Returns string name of storage. - * - * @see java.lang.Object#toString() - */ - public String toString() { - return "File Storage"; - } - - /** - * Decodes data from input stream and loads it in passed dictionary. - * - * @param is - * input stream in specific format. - * @param info - * dictionary. - */ - private void getInfo(InputStream is, Dictionary info) { - if (is != null) { - try { - ZipInputStream zis = new ZipInputStream(is); - ZipEntry ze; - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - int read; - byte[] buff = new byte[256]; - while ((ze = zis.getNextEntry()) != null) { - if ("props.txt".equals(ze.getName())) { - BufferedReader reader = new BufferedReader(new InputStreamReader(zis)); - String line; - int index; - while ((line = reader.readLine()) != null) { - if (!(line = line.trim()).startsWith("#")) { - if ((index = line.indexOf("=")) != -1) { - String key = line.substring(0, index); - if (ProvisioningService.PROVISIONING_UPDATE_COUNT.equals(key)) { - int uc = 0; - try { - uc = Integer.parseInt(line.substring(index + 1).trim()); - } catch (Exception _) { - } - info.put(key, new Integer(uc)); - } else { - info.put(key, line.substring(index + 1)); - } - } - } - } - } else { - while ((read = zis.read(buff)) != -1) { - baos.write(buff, 0, read); - } - info.put(ze.getName(), baos.toByteArray()); - baos.reset(); - } - zis.closeEntry(); - } - } catch (Exception e) { - Log.debug(e); - // What is loaded is loaded. - } - } - } - - /** - * Encodes "info" and saves it into an output stream. - * - * @param os - * output stream where to be saved data. - */ - private void saveInfo(OutputStream os, Dictionary info) { - try { - ZipOutputStream zos = new ZipOutputStream(os); - ByteArrayOutputStream strings = new ByteArrayOutputStream(); - Object key; - Object value; - for (Enumeration e = info.keys(); e.hasMoreElements();) { - key = e.nextElement(); - value = info.get(key); - if (value instanceof String || ProvisioningService.PROVISIONING_UPDATE_COUNT.equals(key)) { - strings.write((key + "=" + value + "\r\n").getBytes()); - } else if (value instanceof byte[]) { - ZipEntry ze = new ZipEntry((String) key); - zos.putNextEntry(ze); - zos.write((byte[]) value); - zos.closeEntry(); - } - } - ZipEntry ze = new ZipEntry("props.txt"); - zos.putNextEntry(ze); - zos.write(strings.toByteArray()); - zos.closeEntry(); - zos.close(); - } catch (Exception e) { - Log.debug(e); - // What is load is load. - } - } -} diff --git a/bundles/org.eclipse.equinox.servletbridge.extensionbundle/.classpath b/bundles/org.eclipse.equinox.servletbridge.extensionbundle/.classpath deleted file mode 100644 index acad1c227c..0000000000 --- a/bundles/org.eclipse.equinox.servletbridge.extensionbundle/.classpath +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/bundles/org.eclipse.equinox.servletbridge.extensionbundle/.project b/bundles/org.eclipse.equinox.servletbridge.extensionbundle/.project deleted file mode 100644 index 34079a6b0b..0000000000 --- a/bundles/org.eclipse.equinox.servletbridge.extensionbundle/.project +++ /dev/null @@ -1,28 +0,0 @@ - - - org.eclipse.equinox.servletbridge.extensionbundle - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - - org.eclipse.pde.PluginNature - org.eclipse.jdt.core.javanature - - diff --git a/bundles/org.eclipse.equinox.servletbridge.extensionbundle/.settings/org.eclipse.core.runtime.prefs b/bundles/org.eclipse.equinox.servletbridge.extensionbundle/.settings/org.eclipse.core.runtime.prefs deleted file mode 100644 index 5a0ad22d2a..0000000000 --- a/bundles/org.eclipse.equinox.servletbridge.extensionbundle/.settings/org.eclipse.core.runtime.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -line.separator=\n diff --git a/bundles/org.eclipse.equinox.servletbridge.extensionbundle/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.servletbridge.extensionbundle/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 7795690891..0000000000 --- a/bundles/org.eclipse.equinox.servletbridge.extensionbundle/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,387 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false -org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 -org.eclipse.jdt.core.formatter.align_type_members_on_columns=false -org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false -org.eclipse.jdt.core.formatter.align_with_spaces=false -org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_enum_constant=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_local_variable=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_method=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_package=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_parameter=0 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_type=49 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_assertion_message=16 -org.eclipse.jdt.core.formatter.alignment_for_assignment=0 -org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain=0 -org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0 -org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 -org.eclipse.jdt.core.formatter.alignment_for_module_statements=16 -org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 -org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_record_components=16 -org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0 -org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 -org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_shift_operator=0 -org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16 -org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_record_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_type_annotations=0 -org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0 -org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0 -org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 -org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration=0 -org.eclipse.jdt.core.formatter.blank_lines_after_package=1 -org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method=1 -org.eclipse.jdt.core.formatter.blank_lines_before_field=0 -org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 -org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 -org.eclipse.jdt.core.formatter.blank_lines_before_method=1 -org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 -org.eclipse.jdt.core.formatter.blank_lines_before_package=0 -org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 -org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch=0 -org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 -org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_record_constructor=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_record_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true -org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false -org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true -org.eclipse.jdt.core.formatter.comment.format_block_comments=true -org.eclipse.jdt.core.formatter.comment.format_header=false -org.eclipse.jdt.core.formatter.comment.format_html=true -org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true -org.eclipse.jdt.core.formatter.comment.format_line_comments=true -org.eclipse.jdt.core.formatter.comment.format_source_code=true -org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false -org.eclipse.jdt.core.formatter.comment.indent_root_tags=false -org.eclipse.jdt.core.formatter.comment.indent_tag_description=false -org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags=do not insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert -org.eclipse.jdt.core.formatter.comment.line_length=80 -org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true -org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true -org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false -org.eclipse.jdt.core.formatter.compact_else_if=true -org.eclipse.jdt.core.formatter.continuation_indentation=2 -org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 -org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off -org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on -org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false -org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_record_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true -org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_empty_lines=false -org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true -org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false -org.eclipse.jdt.core.formatter.indentation.size=4 -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert -org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_record_components=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert -org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_not_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_record_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert -org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert -org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert -org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_record_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_record_components=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_constructor=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_record_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert -org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.join_lines_in_comments=true -org.eclipse.jdt.core.formatter.join_wrapped_lines=true -org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false -org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false -org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_record_constructor_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_record_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false -org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.lineSplit=120 -org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false -org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false -org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block=0 -org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 -org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_record_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines -org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true -org.eclipse.jdt.core.formatter.tabulation.char=tab -org.eclipse.jdt.core.formatter.tabulation.size=4 -org.eclipse.jdt.core.formatter.text_block_indentation=0 -org.eclipse.jdt.core.formatter.use_on_off_tags=true -org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false -org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true -org.eclipse.jdt.core.formatter.wrap_before_assertion_message_operator=true -org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false -org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true -org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true -org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true -org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true -org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true -org.eclipse.jdt.core.formatter.wrap_before_relational_operator=true -org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true -org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true -org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true -org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter diff --git a/bundles/org.eclipse.equinox.servletbridge.extensionbundle/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.equinox.servletbridge.extensionbundle/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index 9e213f6259..0000000000 --- a/bundles/org.eclipse.equinox.servletbridge.extensionbundle/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,3 +0,0 @@ -eclipse.preferences.version=1 -formatter_profile=org.eclipse.jdt.ui.default.eclipse_profile -formatter_settings_version=21 diff --git a/bundles/org.eclipse.equinox.servletbridge.extensionbundle/.settings/org.eclipse.pde.prefs b/bundles/org.eclipse.equinox.servletbridge.extensionbundle/.settings/org.eclipse.pde.prefs deleted file mode 100644 index 29f9a83ae6..0000000000 --- a/bundles/org.eclipse.equinox.servletbridge.extensionbundle/.settings/org.eclipse.pde.prefs +++ /dev/null @@ -1,25 +0,0 @@ -#Tue Oct 06 22:52:35 EDT 2009 -compilers.f.unresolved-features=1 -compilers.f.unresolved-plugins=1 -compilers.incompatible-environment=1 -compilers.p.build=1 -compilers.p.deprecated=1 -compilers.p.discouraged-class=1 -compilers.p.internal=1 -compilers.p.missing-packages=2 -compilers.p.missing-version-export-package=2 -compilers.p.missing-version-import-package=2 -compilers.p.missing-version-require-bundle=2 -compilers.p.no-required-att=0 -compilers.p.not-externalized-att=2 -compilers.p.unknown-attribute=1 -compilers.p.unknown-class=1 -compilers.p.unknown-element=1 -compilers.p.unknown-identifier=1 -compilers.p.unknown-resource=1 -compilers.p.unresolved-ex-points=0 -compilers.p.unresolved-import=1 -compilers.s.create-docs=false -compilers.s.doc-folder=doc -compilers.s.open-tags=1 -eclipse.preferences.version=1 diff --git a/bundles/org.eclipse.equinox.servletbridge.extensionbundle/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.servletbridge.extensionbundle/META-INF/MANIFEST.MF deleted file mode 100644 index a21691b491..0000000000 --- a/bundles/org.eclipse.equinox.servletbridge.extensionbundle/META-INF/MANIFEST.MF +++ /dev/null @@ -1,13 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: Servletbridge Extension bundle -Bundle-SymbolicName: org.eclipse.equinox.servletbridge.extensionbundle -Bundle-Version: 1.3.200.qualifier -Fragment-Host: system.bundle;extension:=framework -X-Deploy-Export-Package: javax.servlet;version="2.6.0";uses:="javax.servlet.annotation,javax.servlet.descriptor", - javax.servlet.annotation;version="2.6.0";uses:="javax.servlet", - javax.servlet.descriptor;version="2.6.0", - javax.servlet.http;version="2.6.0";uses:="javax.servlet", - javax.servlet.resources;version="2.6.0", - org.eclipse.equinox.servletbridge;version="1.1" -Automatic-Module-Name: org.eclipse.equinox.servletbridge.extensionbundle diff --git a/bundles/org.eclipse.equinox.servletbridge.extensionbundle/META-INF/p2.inf b/bundles/org.eclipse.equinox.servletbridge.extensionbundle/META-INF/p2.inf deleted file mode 100644 index 85ed4fafb2..0000000000 --- a/bundles/org.eclipse.equinox.servletbridge.extensionbundle/META-INF/p2.inf +++ /dev/null @@ -1,18 +0,0 @@ -provides.0.namespace = java.package -provides.0.name = javax.servlet -provides.0.version = 2.6.0 -provides.1.namespace = java.package -provides.1.name = javax.servlet.annotation -provides.1.version = 2.6.0 -provides.2.namespace = java.package -provides.2.name = javax.servlet.descriptor -provides.2.version = 2.6.0 -provides.3.namespace = java.package -provides.3.name = javax.servlet.http -provides.3.version = 2.6.0 -provides.4.namespace = java.package -provides.4.name = javax.servlet.resources -provides.4.version = 2.6.0 -provides.5.namespace = java.package -provides.5.name = org.eclipse.equinox.servletbridge -provides.5.version = 1.1 \ No newline at end of file diff --git a/bundles/org.eclipse.equinox.servletbridge.extensionbundle/about.html b/bundles/org.eclipse.equinox.servletbridge.extensionbundle/about.html deleted file mode 100644 index 164f781a8f..0000000000 --- a/bundles/org.eclipse.equinox.servletbridge.extensionbundle/about.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - -About - - -

About This Content

- -

November 30, 2017

-

License

- -

- The Eclipse Foundation makes available all content in this plug-in - ("Content"). Unless otherwise indicated below, the Content - is provided to you under the terms and conditions of the Eclipse - Public License Version 2.0 ("EPL"). A copy of the EPL is - available at http://www.eclipse.org/legal/epl-2.0. - For purposes of the EPL, "Program" will mean the Content. -

- -

- If you did not receive this Content directly from the Eclipse - Foundation, the Content is being redistributed by another party - ("Redistributor") and different terms and conditions may - apply to your use of any object code in the Content. Check the - Redistributor's license that was provided with the Content. If no such - license exists, contact the Redistributor. Unless otherwise indicated - below, the terms and conditions of the EPL still apply to any source - code in the Content and such source code may be obtained at http://www.eclipse.org. -

- - - \ No newline at end of file diff --git a/bundles/org.eclipse.equinox.servletbridge.extensionbundle/build.properties b/bundles/org.eclipse.equinox.servletbridge.extensionbundle/build.properties deleted file mode 100644 index 2c5a69093f..0000000000 --- a/bundles/org.eclipse.equinox.servletbridge.extensionbundle/build.properties +++ /dev/null @@ -1,3 +0,0 @@ -bin.includes = META-INF/,\ - about.html -src.includes = about.html diff --git a/bundles/org.eclipse.equinox.servletbridge.extensionbundle/forceQualifierUpdate.txt b/bundles/org.eclipse.equinox.servletbridge.extensionbundle/forceQualifierUpdate.txt deleted file mode 100644 index 56f1032a8a..0000000000 --- a/bundles/org.eclipse.equinox.servletbridge.extensionbundle/forceQualifierUpdate.txt +++ /dev/null @@ -1,2 +0,0 @@ -# To force a version qualifier update add the bug here -Bug 403352 - Update all parent versions to match our build stream diff --git a/bundles/org.eclipse.equinox.servletbridge.extensionbundle/pom.xml b/bundles/org.eclipse.equinox.servletbridge.extensionbundle/pom.xml deleted file mode 100644 index a46e4fe200..0000000000 --- a/bundles/org.eclipse.equinox.servletbridge.extensionbundle/pom.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - 4.0.0 - - rt.equinox.bundles - org.eclipse.equinox.bundles - 4.24.0-SNAPSHOT - ../../ - - org.eclipse.equinox - org.eclipse.equinox.servletbridge.extensionbundle - 1.3.200-SNAPSHOT - eclipse-plugin - diff --git a/bundles/org.eclipse.equinox.servletbridge.template/.classpath b/bundles/org.eclipse.equinox.servletbridge.template/.classpath deleted file mode 100644 index ac37fb2e4b..0000000000 --- a/bundles/org.eclipse.equinox.servletbridge.template/.classpath +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/bundles/org.eclipse.equinox.servletbridge.template/.project b/bundles/org.eclipse.equinox.servletbridge.template/.project deleted file mode 100644 index 6c6d2cb097..0000000000 --- a/bundles/org.eclipse.equinox.servletbridge.template/.project +++ /dev/null @@ -1,29 +0,0 @@ - - - org.eclipse.equinox.servletbridge.template - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - - org.eclipse.pde.PluginNature - org.eclipse.jdt.core.javanature - - - diff --git a/bundles/org.eclipse.equinox.servletbridge.template/.settings/org.eclipse.core.runtime.prefs b/bundles/org.eclipse.equinox.servletbridge.template/.settings/org.eclipse.core.runtime.prefs deleted file mode 100644 index 5a0ad22d2a..0000000000 --- a/bundles/org.eclipse.equinox.servletbridge.template/.settings/org.eclipse.core.runtime.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -line.separator=\n diff --git a/bundles/org.eclipse.equinox.servletbridge.template/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.servletbridge.template/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 7795690891..0000000000 --- a/bundles/org.eclipse.equinox.servletbridge.template/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,387 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false -org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 -org.eclipse.jdt.core.formatter.align_type_members_on_columns=false -org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false -org.eclipse.jdt.core.formatter.align_with_spaces=false -org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_enum_constant=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_local_variable=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_method=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_package=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_parameter=0 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_type=49 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_assertion_message=16 -org.eclipse.jdt.core.formatter.alignment_for_assignment=0 -org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain=0 -org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0 -org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 -org.eclipse.jdt.core.formatter.alignment_for_module_statements=16 -org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 -org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_record_components=16 -org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0 -org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 -org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_shift_operator=0 -org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16 -org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_record_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_type_annotations=0 -org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0 -org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0 -org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 -org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration=0 -org.eclipse.jdt.core.formatter.blank_lines_after_package=1 -org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method=1 -org.eclipse.jdt.core.formatter.blank_lines_before_field=0 -org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 -org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 -org.eclipse.jdt.core.formatter.blank_lines_before_method=1 -org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 -org.eclipse.jdt.core.formatter.blank_lines_before_package=0 -org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 -org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch=0 -org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 -org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_record_constructor=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_record_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true -org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false -org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true -org.eclipse.jdt.core.formatter.comment.format_block_comments=true -org.eclipse.jdt.core.formatter.comment.format_header=false -org.eclipse.jdt.core.formatter.comment.format_html=true -org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true -org.eclipse.jdt.core.formatter.comment.format_line_comments=true -org.eclipse.jdt.core.formatter.comment.format_source_code=true -org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false -org.eclipse.jdt.core.formatter.comment.indent_root_tags=false -org.eclipse.jdt.core.formatter.comment.indent_tag_description=false -org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags=do not insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert -org.eclipse.jdt.core.formatter.comment.line_length=80 -org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true -org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true -org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false -org.eclipse.jdt.core.formatter.compact_else_if=true -org.eclipse.jdt.core.formatter.continuation_indentation=2 -org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 -org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off -org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on -org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false -org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_record_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true -org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_empty_lines=false -org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true -org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false -org.eclipse.jdt.core.formatter.indentation.size=4 -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert -org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_record_components=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert -org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_not_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_record_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert -org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert -org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert -org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_record_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_record_components=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_constructor=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_record_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert -org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.join_lines_in_comments=true -org.eclipse.jdt.core.formatter.join_wrapped_lines=true -org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false -org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false -org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_record_constructor_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_record_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false -org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.lineSplit=120 -org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false -org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false -org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block=0 -org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 -org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_record_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines -org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true -org.eclipse.jdt.core.formatter.tabulation.char=tab -org.eclipse.jdt.core.formatter.tabulation.size=4 -org.eclipse.jdt.core.formatter.text_block_indentation=0 -org.eclipse.jdt.core.formatter.use_on_off_tags=true -org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false -org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true -org.eclipse.jdt.core.formatter.wrap_before_assertion_message_operator=true -org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false -org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true -org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true -org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true -org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true -org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true -org.eclipse.jdt.core.formatter.wrap_before_relational_operator=true -org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true -org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true -org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true -org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter diff --git a/bundles/org.eclipse.equinox.servletbridge.template/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.equinox.servletbridge.template/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index 9e213f6259..0000000000 --- a/bundles/org.eclipse.equinox.servletbridge.template/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,3 +0,0 @@ -eclipse.preferences.version=1 -formatter_profile=org.eclipse.jdt.ui.default.eclipse_profile -formatter_settings_version=21 diff --git a/bundles/org.eclipse.equinox.servletbridge.template/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.servletbridge.template/META-INF/MANIFEST.MF deleted file mode 100644 index 7d54ff9b24..0000000000 --- a/bundles/org.eclipse.equinox.servletbridge.template/META-INF/MANIFEST.MF +++ /dev/null @@ -1,8 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: Servletbridge Template -Bundle-SymbolicName: org.eclipse.equinox.servletbridge.template -Bundle-Version: 1.0.400.qualifier -Automatic-Module-Name: org.eclipse.equinox.servletbridge.template - - diff --git a/bundles/org.eclipse.equinox.servletbridge.template/build.properties b/bundles/org.eclipse.equinox.servletbridge.template/build.properties deleted file mode 100644 index b2b1eadba4..0000000000 --- a/bundles/org.eclipse.equinox.servletbridge.template/build.properties +++ /dev/null @@ -1,2 +0,0 @@ -output.. = bin/ -bin.includes = META-INF/ diff --git a/bundles/org.eclipse.equinox.servletbridge.template/forceQualifierUpdate.txt b/bundles/org.eclipse.equinox.servletbridge.template/forceQualifierUpdate.txt deleted file mode 100644 index 56f1032a8a..0000000000 --- a/bundles/org.eclipse.equinox.servletbridge.template/forceQualifierUpdate.txt +++ /dev/null @@ -1,2 +0,0 @@ -# To force a version qualifier update add the bug here -Bug 403352 - Update all parent versions to match our build stream diff --git a/bundles/org.eclipse.equinox.servletbridge.template/pom.xml b/bundles/org.eclipse.equinox.servletbridge.template/pom.xml deleted file mode 100644 index 46a6f619d5..0000000000 --- a/bundles/org.eclipse.equinox.servletbridge.template/pom.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - 4.0.0 - - rt.equinox.bundles - org.eclipse.equinox.bundles - 4.24.0-SNAPSHOT - ../../ - - org.eclipse.equinox - org.eclipse.equinox.servletbridge.template - 1.0.400-SNAPSHOT - eclipse-plugin - - - true - - diff --git a/bundles/org.eclipse.equinox.servletbridge.template/templates/build.properties b/bundles/org.eclipse.equinox.servletbridge.template/templates/build.properties deleted file mode 100644 index 5a7c93a86f..0000000000 --- a/bundles/org.eclipse.equinox.servletbridge.template/templates/build.properties +++ /dev/null @@ -1,5 +0,0 @@ -root=rootfiles -bin.includes = feature.xml,\ - rootfiles/,\ - build.properties,\ - template.product diff --git a/bundles/org.eclipse.equinox.servletbridge.template/templates/feature.xml b/bundles/org.eclipse.equinox.servletbridge.template/templates/feature.xml deleted file mode 100644 index be8ebfd594..0000000000 --- a/bundles/org.eclipse.equinox.servletbridge.template/templates/feature.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - [Enter Feature Description here.] - - - - [Enter Copyright Description here.] - - - - [Enter License Description here.] - - - - - diff --git a/bundles/org.eclipse.equinox.servletbridge.template/templates/rootfiles/launch.ini b/bundles/org.eclipse.equinox.servletbridge.template/templates/rootfiles/launch.ini deleted file mode 100644 index a96f99e954..0000000000 --- a/bundles/org.eclipse.equinox.servletbridge.template/templates/rootfiles/launch.ini +++ /dev/null @@ -1,11 +0,0 @@ -# Eclipse Runtime Configuration Overrides -# These properties are loaded prior to starting the framework and can also be used to override System Properties -# @null is a special value used to override and clear the framework's copy of a System Property prior to starting the framework -# "*" can be used together with @null to clear System Properties that match a prefix name. - -osgi.*=@null -org.osgi.*=@null -eclipse.*=@null - -osgi.parentClassloader=app -osgi.contextClassLoaderParent=app diff --git a/bundles/org.eclipse.equinox.servletbridge.template/templates/rootfiles/lib/org.eclipse.equinox.servletbridge_1.2.0.v20091026.jar b/bundles/org.eclipse.equinox.servletbridge.template/templates/rootfiles/lib/org.eclipse.equinox.servletbridge_1.2.0.v20091026.jar deleted file mode 100644 index c6ebb4a767e79d90ca13439ec16e5e2378264f9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39796 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 W`8O{r#wn!+yv_knLRU|6-u)jTI+k7l diff --git a/bundles/org.eclipse.equinox.servletbridge.template/templates/rootfiles/web.xml b/bundles/org.eclipse.equinox.servletbridge.template/templates/rootfiles/web.xml deleted file mode 100644 index 8e4e008c66..0000000000 --- a/bundles/org.eclipse.equinox.servletbridge.template/templates/rootfiles/web.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - equinoxbridgeservlet - Equinox Bridge Servlet - Equinox Bridge Servlet - org.eclipse.equinox.servletbridge.BridgeServlet - - commandline - -console - - - enableFrameworkControls - true - - - - extendedFrameworkExports - - - - - - - overrideAndReplaceExtensionBundle - true - - 1 - - - equinoxbridgeservlet - /* - - - - equinoxbridgeservlet - *.jsp - - diff --git a/bundles/org.eclipse.equinox.servletbridge.template/templates/template.product b/bundles/org.eclipse.equinox.servletbridge.template/templates/template.product deleted file mode 100644 index 9402b26688..0000000000 --- a/bundles/org.eclipse.equinox.servletbridge.template/templates/template.product +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts - - - - - - - - - - - - - - - - - - - - - - - diff --git a/bundles/org.eclipse.equinox.util/.classpath b/bundles/org.eclipse.equinox.util/.classpath deleted file mode 100644 index 098194ca4b..0000000000 --- a/bundles/org.eclipse.equinox.util/.classpath +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/bundles/org.eclipse.equinox.util/.project b/bundles/org.eclipse.equinox.util/.project deleted file mode 100644 index 25f0d0c179..0000000000 --- a/bundles/org.eclipse.equinox.util/.project +++ /dev/null @@ -1,34 +0,0 @@ - - - org.eclipse.equinox.util - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - org.eclipse.pde.api.tools.apiAnalysisBuilder - - - - - - org.eclipse.pde.PluginNature - org.eclipse.jdt.core.javanature - org.eclipse.pde.api.tools.apiAnalysisNature - - diff --git a/bundles/org.eclipse.equinox.util/.settings/org.eclipse.core.runtime.prefs b/bundles/org.eclipse.equinox.util/.settings/org.eclipse.core.runtime.prefs deleted file mode 100644 index 5a0ad22d2a..0000000000 --- a/bundles/org.eclipse.equinox.util/.settings/org.eclipse.core.runtime.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -line.separator=\n diff --git a/bundles/org.eclipse.equinox.util/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.util/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 5c82e1bf18..0000000000 --- a/bundles/org.eclipse.equinox.util/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,528 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.builder.cleanOutputFolder=clean -org.eclipse.jdt.core.builder.duplicateResourceTask=warning -org.eclipse.jdt.core.builder.invalidClasspath=abort -org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch -org.eclipse.jdt.core.circularClasspath=error -org.eclipse.jdt.core.classpath.exclusionPatterns=enabled -org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled -org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled -org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore -org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull -org.eclipse.jdt.core.compiler.annotation.nonnull.secondary= -org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault -org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary= -org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable -org.eclipse.jdt.core.compiler.annotation.nullable.secondary= -org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.7 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.doc.comment.support=enabled -org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000 -org.eclipse.jdt.core.compiler.problem.APILeak=warning -org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.autoboxing=ignore -org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning -org.eclipse.jdt.core.compiler.problem.deadCode=warning -org.eclipse.jdt.core.compiler.problem.deprecation=warning -org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled -org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled -org.eclipse.jdt.core.compiler.problem.discouragedReference=error -org.eclipse.jdt.core.compiler.problem.emptyStatement=warning -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore -org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore -org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled -org.eclipse.jdt.core.compiler.problem.fieldHiding=warning -org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore -org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning -org.eclipse.jdt.core.compiler.problem.forbiddenReference=error -org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning -org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled -org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning -org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore -org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning -org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private -org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning -org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning -org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore -org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning -org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled -org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled -org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public -org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled -org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning -org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore -org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning -org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning -org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore -org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning -org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning -org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error -org.eclipse.jdt.core.compiler.problem.nullReference=warning -org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error -org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning -org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning -org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore -org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning -org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning -org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore -org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore -org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning -org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning -org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore -org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore -org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore -org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore -org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore -org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled -org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning -org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled -org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled -org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled -org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning -org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning -org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning -org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled -org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning -org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning -org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore -org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning -org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning -org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled -org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info -org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning -org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning -org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled -org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedImport=error -org.eclipse.jdt.core.compiler.problem.unusedLabel=warning -org.eclipse.jdt.core.compiler.problem.unusedLocal=warning -org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled -org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error -org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning -org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning -org.eclipse.jdt.core.compiler.release=disabled -org.eclipse.jdt.core.compiler.source=1.7 -org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false -org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 -org.eclipse.jdt.core.formatter.align_type_members_on_columns=false -org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false -org.eclipse.jdt.core.formatter.align_with_spaces=false -org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_enum_constant=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_local_variable=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_method=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_package=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_parameter=0 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_type=49 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_assertion_message=16 -org.eclipse.jdt.core.formatter.alignment_for_assignment=0 -org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain=0 -org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0 -org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 -org.eclipse.jdt.core.formatter.alignment_for_module_statements=16 -org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 -org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_record_components=16 -org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0 -org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 -org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_shift_operator=0 -org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16 -org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_record_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_type_annotations=0 -org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0 -org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0 -org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 -org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration=0 -org.eclipse.jdt.core.formatter.blank_lines_after_package=1 -org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method=1 -org.eclipse.jdt.core.formatter.blank_lines_before_field=0 -org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 -org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 -org.eclipse.jdt.core.formatter.blank_lines_before_method=1 -org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 -org.eclipse.jdt.core.formatter.blank_lines_before_package=0 -org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 -org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch=0 -org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 -org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_record_constructor=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_record_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true -org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false -org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true -org.eclipse.jdt.core.formatter.comment.format_block_comments=true -org.eclipse.jdt.core.formatter.comment.format_header=false -org.eclipse.jdt.core.formatter.comment.format_html=true -org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true -org.eclipse.jdt.core.formatter.comment.format_line_comments=true -org.eclipse.jdt.core.formatter.comment.format_source_code=true -org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false -org.eclipse.jdt.core.formatter.comment.indent_root_tags=false -org.eclipse.jdt.core.formatter.comment.indent_tag_description=false -org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags=do not insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert -org.eclipse.jdt.core.formatter.comment.line_length=80 -org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true -org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true -org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false -org.eclipse.jdt.core.formatter.compact_else_if=true -org.eclipse.jdt.core.formatter.continuation_indentation=2 -org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 -org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off -org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on -org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false -org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_record_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true -org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_empty_lines=false -org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true -org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false -org.eclipse.jdt.core.formatter.indentation.size=4 -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert -org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_record_components=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert -org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_not_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_record_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert -org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert -org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert -org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_record_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_record_components=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_constructor=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_record_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert -org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.join_lines_in_comments=true -org.eclipse.jdt.core.formatter.join_wrapped_lines=true -org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false -org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false -org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_record_constructor_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_record_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false -org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.lineSplit=120 -org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false -org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false -org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block=0 -org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 -org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_record_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines -org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true -org.eclipse.jdt.core.formatter.tabulation.char=tab -org.eclipse.jdt.core.formatter.tabulation.size=4 -org.eclipse.jdt.core.formatter.text_block_indentation=0 -org.eclipse.jdt.core.formatter.use_on_off_tags=true -org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false -org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true -org.eclipse.jdt.core.formatter.wrap_before_assertion_message_operator=true -org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false -org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true -org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true -org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true -org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true -org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true -org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true -org.eclipse.jdt.core.formatter.wrap_before_relational_operator=true -org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true -org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true -org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true -org.eclipse.jdt.core.incompatibleJDKLevel=ignore -org.eclipse.jdt.core.incompleteClasspath=error -org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter diff --git a/bundles/org.eclipse.equinox.util/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.equinox.util/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index 950790ec0b..0000000000 --- a/bundles/org.eclipse.equinox.util/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,65 +0,0 @@ -eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true -formatter_profile=org.eclipse.jdt.ui.default.eclipse_profile -formatter_settings_version=21 -org.eclipse.jdt.ui.ignorelowercasenames=true -org.eclipse.jdt.ui.importorder=; -org.eclipse.jdt.ui.ondemandthreshold=3 -org.eclipse.jdt.ui.staticondemandthreshold=99 -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=false -sp_cleanup.add_serial_version_id=false -sp_cleanup.always_use_blocks=true -sp_cleanup.always_use_parentheses_in_expressions=false -sp_cleanup.always_use_this_for_non_static_field_access=false -sp_cleanup.always_use_this_for_non_static_method_access=false -sp_cleanup.convert_functional_interfaces=false -sp_cleanup.convert_to_enhanced_for_loop=false -sp_cleanup.correct_indentation=false -sp_cleanup.format_source_code=true -sp_cleanup.format_source_code_changes_only=false -sp_cleanup.insert_inferred_type_arguments=false -sp_cleanup.make_local_variable_final=false -sp_cleanup.make_parameters_final=false -sp_cleanup.make_private_fields_final=true -sp_cleanup.make_type_abstract_if_missing_method=false -sp_cleanup.make_variable_declarations_final=false -sp_cleanup.never_use_blocks=false -sp_cleanup.never_use_parentheses_in_expressions=true -sp_cleanup.on_save_use_additional_actions=true -sp_cleanup.organize_imports=true -sp_cleanup.qualify_static_field_accesses_with_declaring_class=false -sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_with_declaring_class=false -sp_cleanup.qualify_static_method_accesses_with_declaring_class=false -sp_cleanup.remove_private_constructors=true -sp_cleanup.remove_redundant_type_arguments=true -sp_cleanup.remove_trailing_whitespaces=false -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -sp_cleanup.remove_unused_imports=false -sp_cleanup.remove_unused_local_variables=false -sp_cleanup.remove_unused_private_fields=true -sp_cleanup.remove_unused_private_members=false -sp_cleanup.remove_unused_private_methods=true -sp_cleanup.remove_unused_private_types=true -sp_cleanup.sort_members=false -sp_cleanup.sort_members_all=false -sp_cleanup.use_anonymous_class_creation=false -sp_cleanup.use_blocks=false -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_lambda=false -sp_cleanup.use_parentheses_in_expressions=false -sp_cleanup.use_this_for_non_static_field_access=false -sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true -sp_cleanup.use_this_for_non_static_method_access=false -sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true diff --git a/bundles/org.eclipse.equinox.util/.settings/org.eclipse.pde.core.prefs b/bundles/org.eclipse.equinox.util/.settings/org.eclipse.pde.core.prefs deleted file mode 100644 index 5ead3a631c..0000000000 --- a/bundles/org.eclipse.equinox.util/.settings/org.eclipse.pde.core.prefs +++ /dev/null @@ -1,4 +0,0 @@ -#Fri Mar 30 10:11:50 EEST 2007 -eclipse.preferences.version=1 -pluginProject.extensions=false -resolve.requirebundle=false diff --git a/bundles/org.eclipse.equinox.util/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.util/META-INF/MANIFEST.MF deleted file mode 100644 index 4e73243193..0000000000 --- a/bundles/org.eclipse.equinox.util/META-INF/MANIFEST.MF +++ /dev/null @@ -1,29 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-SymbolicName: org.eclipse.equinox.util -Bundle-Name: %bundleName -Bundle-Version: 1.1.400.qualifier -Bundle-Vendor: %bundleVendor -Bundle-Activator: org.eclipse.equinox.internal.util.UtilActivator -Bundle-Description: The Equinox Util Bundle contains services to facilitate bundle developers in their programming, and to lighten resource usage at runtime. -Import-Package: - org.osgi.framework;version="1.3", - org.osgi.service.cm;version="1.0", - org.osgi.service.log;version="1.0.0", - org.osgi.util.tracker;version="1.2" -Export-Package: - org.eclipse.equinox.internal.util;x-internal:=true, - org.eclipse.equinox.internal.util.event;version="1.0";x-friends:="org.eclipse.equinox.ds", - org.eclipse.equinox.internal.util.hash;version="1.0";x-friends:="org.eclipse.equinox.ds,org.eclipse.equinox.io,org.eclipse.equinox.wireadmin", - org.eclipse.equinox.internal.util.impl.tpt;x-internal:=true, - org.eclipse.equinox.internal.util.impl.tpt.threadpool;x-internal:=true, - org.eclipse.equinox.internal.util.impl.tpt.timer;x-internal:=true, - org.eclipse.equinox.internal.util.pool;version="1.0";x-friends:="org.eclipse.equinox.ds,org.eclipse.equinox.io", - org.eclipse.equinox.internal.util.ref;version="1.0";x-friends:="org.eclipse.equinox.ds,org.eclipse.equinox.io,org.eclipse.equinox.ip,org.eclipse.equinox.wireadmin", - org.eclipse.equinox.internal.util.security;x-internal:=true, - org.eclipse.equinox.internal.util.threadpool;version="1.0";x-friends:="org.eclipse.equinox.ds", - org.eclipse.equinox.internal.util.timer;version="1.0";x-friends:="org.eclipse.equinox.ds,org.eclipse.equinox.ip" -Bundle-RequiredExecutionEnvironment: JavaSE-1.7 -Bundle-ActivationPolicy: lazy -Bundle-Localization: plugin -Automatic-Module-Name: org.eclipse.equinox.util diff --git a/bundles/org.eclipse.equinox.util/OSGI-INF/permissions.perm b/bundles/org.eclipse.equinox.util/OSGI-INF/permissions.perm deleted file mode 100644 index 5a965875d0..0000000000 --- a/bundles/org.eclipse.equinox.util/OSGI-INF/permissions.perm +++ /dev/null @@ -1 +0,0 @@ -(java.security.AllPermission "*" "*") \ No newline at end of file diff --git a/bundles/org.eclipse.equinox.util/about.html b/bundles/org.eclipse.equinox.util/about.html deleted file mode 100644 index 164f781a8f..0000000000 --- a/bundles/org.eclipse.equinox.util/about.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - -About - - -

About This Content

- -

November 30, 2017

-

License

- -

- The Eclipse Foundation makes available all content in this plug-in - ("Content"). Unless otherwise indicated below, the Content - is provided to you under the terms and conditions of the Eclipse - Public License Version 2.0 ("EPL"). A copy of the EPL is - available at http://www.eclipse.org/legal/epl-2.0. - For purposes of the EPL, "Program" will mean the Content. -

- -

- If you did not receive this Content directly from the Eclipse - Foundation, the Content is being redistributed by another party - ("Redistributor") and different terms and conditions may - apply to your use of any object code in the Content. Check the - Redistributor's license that was provided with the Content. If no such - license exists, contact the Redistributor. Unless otherwise indicated - below, the terms and conditions of the EPL still apply to any source - code in the Content and such source code may be obtained at http://www.eclipse.org. -

- - - \ No newline at end of file diff --git a/bundles/org.eclipse.equinox.util/build.properties b/bundles/org.eclipse.equinox.util/build.properties deleted file mode 100644 index 41490f2f19..0000000000 --- a/bundles/org.eclipse.equinox.util/build.properties +++ /dev/null @@ -1,22 +0,0 @@ -############################################################################### -# Copyright (c) 1997-2009 by ProSyst Software GmbH -# http://www.prosyst.com -# -# This program and the accompanying materials -# are made available under the terms of the Eclipse Public License 2.0 -# which accompanies this distribution, and is available at -# https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# ProSyst Software GmbH - initial API and implementation -############################################################################### -source.. = src/ -output.. = bin/ -bin.includes = META-INF/,\ - .,\ - about.html,\ - plugin.properties,\ - OSGI-INF/ -src.includes = about.html diff --git a/bundles/org.eclipse.equinox.util/forceQualifierUpdate.txt b/bundles/org.eclipse.equinox.util/forceQualifierUpdate.txt deleted file mode 100644 index 56f1032a8a..0000000000 --- a/bundles/org.eclipse.equinox.util/forceQualifierUpdate.txt +++ /dev/null @@ -1,2 +0,0 @@ -# To force a version qualifier update add the bug here -Bug 403352 - Update all parent versions to match our build stream diff --git a/bundles/org.eclipse.equinox.util/plugin.properties b/bundles/org.eclipse.equinox.util/plugin.properties deleted file mode 100644 index 4b6309e1b8..0000000000 --- a/bundles/org.eclipse.equinox.util/plugin.properties +++ /dev/null @@ -1,17 +0,0 @@ -############################################################################### -# Copyright (c) 1997-2009 by ProSyst Software GmbH -# http://www.prosyst.com -# -# This program and the accompanying materials -# are made available under the terms of the Eclipse Public License 2.0 -# which accompanies this distribution, and is available at -# https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# ProSyst Software GmbH - initial API and implementation -############################################################################### -#Properties file for org.eclipse.equinox.util -bundleVendor = Eclipse.org - Equinox -bundleName = Equinox Util Bundle \ No newline at end of file diff --git a/bundles/org.eclipse.equinox.util/pom.xml b/bundles/org.eclipse.equinox.util/pom.xml deleted file mode 100644 index da554180b8..0000000000 --- a/bundles/org.eclipse.equinox.util/pom.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - 4.0.0 - - rt.equinox.bundles - org.eclipse.equinox.bundles - 4.24.0-SNAPSHOT - ../../ - - org.eclipse.equinox - org.eclipse.equinox.util - 1.1.400-SNAPSHOT - eclipse-plugin - diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/TracerMap.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/TracerMap.java deleted file mode 100644 index 58707edcc3..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/TracerMap.java +++ /dev/null @@ -1,53 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.util; - -import org.eclipse.equinox.internal.util.hash.HashIntObjNS; - -/** - * @author Pavlin Dobrev - * @version 1.0 - */ - -public class TracerMap { - - public static HashIntObjNS getMap() { - HashIntObjNS map = new HashIntObjNS(29); - - map.put(1, "[BEGIN - start method]"); - map.put(1001, "[BEGIN - Log instance] Loading referent classes took"); - map.put(101, "Getting system props, bundle id and log service took "); - map.put(102, "Getting Trace Service took "); - map.put(3001, "Loading tracer map took "); - map.put(2001, "[END - Log instance] Creating log instance took "); - map.put(3, "Creating Thread Pool service took "); - map.put(4, "Registering Thread Pool service took "); - map.put(33, "Creating Timer service took "); - map.put(5, "Registering Timer service took "); - map.put(16, "[END - start method] PutilActivator.start() method executed for "); - map.put(0, "Putil Activator"); - map.put(-0x0100, "Threadpool"); - map.put(10001, "Registering commands with groupname "); - map.put(10002, "Unregistering commands with groupname "); - map.put(10003, "START Running: "); - map.put(10004, "END Running: "); - map.put(10005, "Going to run: "); - return map; - } - - public static HashIntObjNS getStarts() { - return null; - } -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/UtilActivator.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/UtilActivator.java deleted file mode 100644 index 2e2c8da6c4..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/UtilActivator.java +++ /dev/null @@ -1,200 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2018 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.util; - -import org.eclipse.equinox.internal.util.impl.tpt.ServiceFactoryImpl; -import org.eclipse.equinox.internal.util.impl.tpt.threadpool.ThreadPoolFactoryImpl; -import org.eclipse.equinox.internal.util.impl.tpt.timer.TimerFactory; -import org.eclipse.equinox.internal.util.ref.Log; -import org.eclipse.equinox.internal.util.ref.TimerRef; -import org.eclipse.equinox.internal.util.threadpool.ThreadPoolFactory; -import org.eclipse.equinox.internal.util.threadpool.ThreadPoolManager; -import org.eclipse.equinox.internal.util.timer.Timer; -import org.osgi.framework.*; - -/** - * Bundle activator for the Utility Bundle. This class is responsible to the - * registration of ProSyst utility services as Parser Service, Thread Pool - * Service, etc. - * - * @author Maria Ivanova - * @author Daniel Yanev - * @author Plamen K. Kosseff - * @author Pavlin Dobrev - * @version 1.0 - */ -public class UtilActivator implements BundleActivator { - - public static ThreadPoolFactoryImpl thMan; - private ServiceRegistration thManReg; - - public static TimerFactory timer; - private ServiceRegistration timerReg; - public static Log log; - public static int debugLevel = 1; - public static BundleContext bc; - public static boolean LOG_DEBUG; - public static boolean startup; - - static long time[] = null; - - static void timeLog(int id) { - time[1] = time[0]; - log.debug(0, id, String.valueOf((time[0] = System.currentTimeMillis()) - time[1]), null, false, true); - } - - public static long[] points = null; - - /** - * This is implementation of BundleActivator start method. Thsi method is - * responsible to the registering of the thread pool, system, pasrser and - * timer services. Also adds the framework and system pluggable commands to - * the parser service pluggable commands. - * - * @param context - * The execution context of the bundle being started. - * @exception BundleException - * If this method throws an exception, the bundle is marked - * as stopped and the framework will remove the bundle's - * listeners, unregister all service's registered by the - * bundle, release all services used by the bundle. - */ - @Override - public void start(BundleContext context) throws BundleException { - UtilActivator.bc = context; - startup = getBoolean("equinox.measurements.bundles"); - if (startup) { - long tmp = System.currentTimeMillis(); - time = new long[] {tmp, 0, tmp}; - points = new long[3]; - } - - UtilActivator.bc = context; - try { - log = new Log(context, false); - LOG_DEBUG = getBoolean("equinox.putil.debug"); - log.setDebug(LOG_DEBUG); - log.setPrintOnConsole(getBoolean("equinox.putil.console")); - debugLevel = getInteger("equinox.putil.debug.level", 1); - - if (startup) { - if (LOG_DEBUG) - log.setMaps(TracerMap.getMap(), TracerMap.getStarts()); - - /* 1 = "[BEGIN - start method]" */ - log.debug(0, 1, null, null, false, true); - /* 1001 = "[BEGIN - Log instance] Loading referent classes took" */ - log.debug(0, 1001, String.valueOf(points[0] - time[0]), null, false, true); - /* 101 = "Getting system props, bundle id and log service took " */ - log.debug(0, 101, String.valueOf(points[1] - points[0]), null, false, true); - /* 102 = "Getting Trace Service took " */ - log.debug(0, 102, String.valueOf(points[2] - points[1]), null, false, true); - time[1] = time[0]; - /* 3001 = "Loading tracer map took " */ - log.debug(0, 3001, String.valueOf((time[0] = System.currentTimeMillis()) - points[2]), null, false, true); - /* 2001 = "[END - Log instance] Creating log instance took " */ - log.debug(0, 2001, String.valueOf(time[0] - time[1]), null, false, true); - } - - String bundleName = ServiceFactoryImpl.getName(context.getBundle()); - thMan = new ThreadPoolFactoryImpl(bundleName, log); - if (startup) - timeLog(3); /* 3 = "Creating Thread Pool service took " */ - - thManReg = context.registerService(new String[] {ThreadPoolManager.class.getName(), ThreadPoolFactory.class.getName()}, thMan, null); - if (startup) - timeLog(4); /* 4 = "Registering Thread Pool service took " */ - - timer = new TimerFactory(bundleName, thMan, log); - if (startup) - timeLog(33); /* 33 = "Creating Timer service took " */ - - int i = getInteger("equinox.util.threadpool.inactiveTime", 30); - timerReg = context.registerService(Timer.class, timer, null); - timer.addNotifyListener(ThreadPoolFactoryImpl.threadPool, Thread.NORM_PRIORITY, Timer.PERIODICAL_TIMER, (i * 1000L), 0); - - TimerRef.timer = timer; - - if (startup) - timeLog(5); /* 5 = "Registering Timer service took " */ - - if (startup) { - - /* - * 16 = "[END - start method] PutilActivator.start() method - * executed for " - */ - log.debug(0, 16, String.valueOf(time[0] - time[2]), null, false, true); - time = points = null; - } - - } catch (Throwable ee) { - ee.printStackTrace(); - System.out.println("log1: " + log); - log.error("[UtilActivator] An error has occurred while starting ProSyst Utility Bundle.", ee); - throw new BundleException("Error while starting ProSyst Utililty Bundle!", ee); - } - } - - /** - * This is implementation of BundleActivator stop method. This method - * unregisteres the thread pool, system, parser and timer services. - * - * @param bc - * The execution context of the bundle being stopped. - * @exception BundleException - * If this method throws an exception, the bundle is still - * marked as stopped and the framework will remove the - * bundle's listeners, unregister all service's registered by - * the bundle, release all service's used by the bundle. - */ - @Override - public void stop(BundleContext bc) throws BundleException { - try { - thManReg.unregister(); - - timerReg.unregister(); - TimerFactory.stopTimer(); - TimerRef.timer = timer = null; - - ThreadPoolFactoryImpl.stopThreadPool(); - thMan = null; - } catch (Throwable e) { - log.error("[UtilActivator] An error has occurred while stopping ProSyst Utility Bundle.", e); - throw new BundleException("Error while stopping ProSyst Utililty Bundle!", e); - } finally { - log.close(); - log = null; - } - } - - public static boolean getBoolean(String property) { - String prop = (bc != null) ? bc.getProperty(property) : System.getProperty(property); - return ((prop != null) && prop.equalsIgnoreCase("true")); - } - - public static int getInteger(String property, int defaultValue) { - String prop = (bc != null) ? bc.getProperty(property) : System.getProperty(property); - if (prop != null) { - try { - return Integer.decode(prop).intValue(); - } catch (NumberFormatException e) { - //do nothing - } - } - return defaultValue; - } - -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/event/EventThread.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/event/EventThread.java deleted file mode 100644 index 100e9f7a44..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/event/EventThread.java +++ /dev/null @@ -1,315 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2018 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.util.event; - -import java.security.AccessController; -import java.security.PrivilegedAction; -import org.eclipse.equinox.internal.util.UtilActivator; - -/** - * Abstract class for asynchronous event dispatching - * - * @author Pavlin Dobrev - * @version 1.0 - */ - -public abstract class EventThread implements Runnable { - - /** - * The last callbacked listener. If the events thread is not responding, - * subclasses can take the appropriate actions - remove the listener for - * example - */ - public Object bad; - - /** - * The event queue. This object must be used for synchronization with the - * events thread's state - */ - protected Queue queue; - - /** - * The state of the thread. - *
  • bit 0: 0 = started / 1 = stopped; - *
  • bit 1: 0 not waiting / 1 = waiting - */ - protected int state; - - /** - * The time spent in the current callback, or 0 if the thread is not in a - * callback - */ - protected long time = 0; - /** - * Instancies counter. Subclasses must not modify it. - */ - protected int counter = 1; - - /** - * The event to be dispatched - */ - protected Object element; - protected String baseName; - protected String name; - protected Thread thread; - protected ThreadGroup group; - private static PrivilegedActionImpl privilegedAction = null; - - /** - * Constructs the first instance of the EventThread - * - * @param group - * The ThreadGroup of the thread, or null for the current thread - * group - * @param name - * The base name of the thread. The counter value - * will be added at the end of the string to construct the full - * name. - * @param size - * The initial number of elements of the events queue - */ - public EventThread(ThreadGroup group, String name, int size) { - makeThread(this.group = group, this.name = name + '0'); - baseName = name; - queue = new Queue(size); - int priority = getThreadPriority(); - if (priority != Thread.NORM_PRIORITY) - thread.setPriority(priority); - } - - /** - * Constructs the first instance of the EventThread - * - * @param group - * The ThreadGroup of the thread, or null for the current thread - * group - * @param name - * The base name of the thread. The counter value - * will be added at the end of the string to construct the full - * name. - * @param queue - * The events queue - */ - public EventThread(ThreadGroup group, String name, Queue queue) { - makeThread(this.group = group, this.name = name + '0'); - baseName = name; - this.queue = queue; - int priority = getThreadPriority(); - if (priority != Thread.NORM_PRIORITY) - thread.setPriority(priority); - } - - /** - * Constructs a new EventThread, after the old event thread - * has stopped responding - * - * @param old - * The previous instance - */ - protected EventThread(EventThread old) { - makeThread(group = old.thread.getThreadGroup(), name = old.baseName + old.counter++); - baseName = old.baseName; - counter = old.counter; - queue = old.queue; - int priority = getThreadPriority(); - if (priority != Thread.NORM_PRIORITY) - thread.setPriority(priority); - } - - public void start() { - thread.start(); - } - - /** - * Adds an event in the event queue. The method must be synchronized - * outside, on the queue field. - * - * @param event - * The event to add - * @param check - * If true, the method will check if the EventThread is still - * responding - */ - public void addEvent(Object event, boolean check) { - try { - queue.put(event); - } catch (Throwable t) { - print(t); - return; - } - if ((state & 2) != 0) - queue.notify(); - else if (check && checkTime()) - try { - state |= 1; - newEventDispatcher(); // must call start - } catch (Throwable t) { - print(t); - state &= 254; - } - } - - /** - * Processes the event queue. Sets the event to be dispathed in the - * element field and calls processEvent - */ - @Override - public void run() { - synchronized (queue) { - queue.notifyAll(); - } - while (true) { - try { - synchronized (queue) { - if ((state & 1) != 0) - return; // closed - while ((element = queue.get()) == null) - try { - state |= 2; // waiting - queue.wait(); - if ((state & 1) != 0) - return; // closed - state &= 253; // not waiting - } catch (InterruptedException ie) { - } - } - processEvent(); - - } catch (Throwable t) { - print(t); - try { // fix memory leak - throw new Exception(); - } catch (Exception _) { - } - } - } - } - - private void makeThread(ThreadGroup threadGroup, String threadName) { - try { - if (privilegedAction == null) { - privilegedAction = new PrivilegedActionImpl(); - } - privilegedAction.set(threadGroup, this, threadName); - thread = AccessController.doPrivileged(privilegedAction); - // thread = new Thread(group, this, name); - // thread.setDaemon(false); - // if (!disableContextClassLoader) - // thread.setContextClassLoader(null); - } catch (RuntimeException re) { - throw re; - } catch (Exception exc) { - throw new RuntimeException(exc.toString()); - } - } - - public Thread getThread() { - return thread; - } - - public String getName() { - return name; - } - - /** - * Returns the desired thread priority. Called in the constructors of the - * class in order to set the returned value to the thread. - * - * @return priority of the thread - */ - public abstract int getThreadPriority(); - - /** - * Performs the actual event delivery. The event is stored in the - * element field. The method is supposed to perform the - * following for every listener: - *
  • synchronized on queue check the state of the thread - - * if it si closed - return - *
  • set the fields bad and time - *
  • callback - *
  • set bad to null and time to 0 - */ - public abstract void processEvent(); - - /** - * Checks if the thread is still active. The fields time and - * bad must be used. The method is called from the addEvent - * method - thus should be synchronizes on the queue field - * outside and additional synchronization is not needed. - */ - public abstract boolean checkTime(); - - /** - * The method must create a new EventThread instance, using - * super.EventThread(this) and start it. - */ - public abstract void newEventDispatcher(); - - /** - * Logs the error. - * - * @param t - */ - public abstract void print(Throwable t); -} - -class PrivilegedActionImpl implements PrivilegedAction { - private ThreadGroup group; - private Runnable runnable; - private String name; - - private boolean locked = false; - private int waiting = 0; - - void set(ThreadGroup group, Runnable runnable, String name) { - lock(); - this.group = group; - this.runnable = runnable; - this.name = name; - } - - @Override - public Thread run() { - ThreadGroup group1 = this.group; - Runnable runnable1 = this.runnable; - String name1 = this.name; - unlock(); - Thread th = new Thread(group1, runnable1, name1); - if (!UtilActivator.getBoolean("equinox.disableContextClassLoader")) //$NON-NLS-1$ - th.setContextClassLoader(null); - th.setDaemon(false); - return th; - } - - private synchronized void lock() { - while (locked) - try { - waiting++; - wait(); - waiting--; - } catch (Exception exc) { - } - locked = true; - } - - private synchronized void unlock() { - locked = false; - group = null; - runnable = null; - name = null; - if (waiting > 0) - notifyAll(); - } -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/event/Queue.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/event/Queue.java deleted file mode 100644 index 4ec3772e8d..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/event/Queue.java +++ /dev/null @@ -1,100 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ - -package org.eclipse.equinox.internal.util.event; - -/** - * @author Pavlin Dobrev - * @version 1.0 - */ - -public class Queue { - - protected Object[] queue; - protected int first, last = -1; - protected int initial, count; - protected int increment; - protected int decrement; - - public Queue(int size) { - queue = new Object[initial = size]; - increment = initial / 2; - decrement = increment + (increment / 2); - } - - public void put(Object element) { - if (count == queue.length) - resize(true); - queue[++last == queue.length ? last = 0 : last] = element; - count++; - } - - public void unget(Object element) { - if (count == queue.length) - resize(true); - queue[--first == -1 ? first = queue.length - 1 : first] = element; - count++; - } - - public Object get() { - if (count == 0) - return null; - if (queue.length > initial && queue.length - count > decrement) - resize(false); - Object element = queue[first]; - queue[first++] = null; - if (first == queue.length) - first = 0; - count--; - return element; - } - - public void clear() { - if (queue.length > initial) { - queue = new Object[initial]; - count = 0; - } else - for (; count > 0; count--) { - queue[first++] = null; - if (first == queue.length) - first = 0; - } - first = 0; - last = -1; - } - - public int size() { - return count; - } - - protected void resize(boolean up) { - Object[] tmp = new Object[queue.length + (up ? increment : -increment)]; - if (first <= last) - System.arraycopy(queue, first, tmp, 0, count); - else { - int count1 = queue.length - first; - if (count1 > 0) - System.arraycopy(queue, first, tmp, 0, count1); - if (count > count1) - System.arraycopy(queue, 0, tmp, count1, count - count1); - } - queue = tmp; - first = 0; - last = count - 1; - - increment = queue.length / 2; - decrement = increment + (increment / 2); - } -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/event/SystemListener.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/event/SystemListener.java deleted file mode 100644 index 468a882c05..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/event/SystemListener.java +++ /dev/null @@ -1,43 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.util.event; - -/** - * This interface marks any listener implementation as system listener. System - * listener are very important for the correct functionality of the system. When - * the execution of user implemented listener's methods is too slow this - * listener is presumed as "bad" listener and it is removed automatically by the - * framework unless it is implementing the SystemListener interface. Instead of - * removing it automatically as a bad listener, the system dispatchers will - * notify the listener by calling timeoutOccured(). - * - * @author Stoyan Boshev - * @author Pavlin Dobrev - * @version 1.0 - * - */ -public interface SystemListener { - - /** - * Notifies the listener that a timeout has occured while processing one of - * its methods. The listeners logic may decide whether it has to be removed - * as listener or not - * - * @return true, if the listener has to be removed from the list of - * listeners - */ - public boolean timeoutOccured(); - -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/event/package.html b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/event/package.html deleted file mode 100644 index ef2d0dda5b..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/event/package.html +++ /dev/null @@ -1 +0,0 @@ -

    This package provides APIs for event dispatching.

    Bundles wishing to use this package must list the package in the Import-Package header of the bundle's manifest. For example:

    Import-Package: org.eclipse.equinox.util.framework.event; specification-version=1.0
    
    \ No newline at end of file diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashIntObjNS.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashIntObjNS.java deleted file mode 100644 index 81b5e16e99..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashIntObjNS.java +++ /dev/null @@ -1,276 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.util.hash; - -/** - * Hashtable for mapping int keys to Object values. The methods of this - * hashtable are not synchronized, and if used concurently must be externally - * synchronized - * - * @author Pavlin Dobrev - * @version 1.0 - */ - -public class HashIntObjNS { - - static final float LOAD_FACTOR = 0.75f; - - // count of elements available in table - private int count = 0; - // used for computation of next position - private int step = 499979; - - /** - * Used to enumerate the keys in the hash table. The key at index - * i is valid only if - *
      - * values[i] != null - *
    - */ - public int[] keys; - - /** - * Used to enumerate the values in the hash table. The value at index - * i is valid only if - *
      - * values[i] != null - *
    - */ - public Object[] values; - - /** - * Can be used to check if a key or value is valid. The value or key at - * index i is valid if the following expression is true - *
      - * next[i] != -1 && next[i] < next.length - *
    - */ - public int[] next; - - private int limit; - private double loadFactor; - - /** - * Constructs an empty hash table with keys of type int and values af type - * Object. Uses default load factor (0.75) and default capacity (89) - * - */ - public HashIntObjNS() { - this(101, LOAD_FACTOR); - } - - /** - * Constructs an empty hash table with keys of type int and values af type - * Object. Uses default load factor (0.75). - * - * @param capacity - * initial capacity of the table - * - * @exception IllegalArgumentException - * if capacity < 1. - */ - public HashIntObjNS(int capacity) { - this(capacity, LOAD_FACTOR); - } - - /** - * Constructs an empty hash table with keys of type int and values of type - * Object. - * - * @param capacity - * initial capacity of the table - * @param lf - * load factor ot the table - * - * @exception IllegalArgumentException - * if capacity < 1 or lf < 0.0 - */ - public HashIntObjNS(int capacity, double lf) { - if (capacity < 0) { - throw new IllegalArgumentException("Invalid hashtable capacity: " + capacity + "."); - } - - if (capacity == 0) - capacity = 101; - - if (lf < 0) { - throw new IllegalArgumentException("Invalid load factor: " + lf + "."); - } - - if (lf > 1.0) { - lf = 1.0; - } - loadFactor = lf; - limit = (int) (capacity * lf); - count = 0; - - keys = new int[capacity]; - values = new Object[capacity]; - next = new int[capacity]; - for (int i = 0; i < capacity; i++) { - keys[i] = 0; - next[i] = -1; - } - } - - /** - * Adds in the hashtable an element with key key and - * value value. If an element with the specified key is - * already in the table only change it's value. - * - * @param key - * the key of the inserted element - * @param value - * the value of the inserted element - */ - public void put(int key, Object value) { - if (count >= limit) { - rehash(); - } - if (_put(key, value)) { - count++; - } - } - - /** - * Returns an value which is mapped to the key key. - * - * @param key - * the key we are searching for - * @return the value this key is mapped to in the table, or null - */ - public Object get(int key) { - int pos = find(key); - return (pos == -1) ? null : values[pos]; - } - - /** - * Removes an element with the specified key from the table. Does nothing if - * there is no element with this key. - * - * @param key - * the key of the element we want to remove - * @return the removed value, or null if there was nothing to remove - */ - public Object remove(int key) { - int pos = find(key); - if (pos == -1) - return null; - next[pos] += next.length; // mark this field as empty - count--; - Object tmp = values[pos]; - values[pos] = null; - return tmp; - } - - /** - * Empties the hash table - */ - public void removeAll() { - for (int i = 0; i < values.length; i++) { - values[i] = null; - keys[i] = 0; - next[i] = -1; - } - count = 0; - } - - /** - * Rehashes the contents of the hashtable into a hashtable with a larger - * capacity. This method is called automatically when the number of keys in - * the hashtable exceeds this hashtable's capacity and load factor. - */ - public void rehash() { - int[] tmpKeys = keys; - Object[] tmpValues = values; - int[] tmpNext = next; - - int capacity = keys.length * 2 + 1; - - // polzwame temp array-i za da ne se namaje hashtable-a pri OutOfMemory - int[] keys = new int[capacity]; - Object[] values = new Object[capacity]; - int[] next = new int[capacity]; - for (int i = 0; i < next.length; i++) { - next[i] = -1; - } - - this.keys = keys; - this.values = values; - this.next = next; - - for (int i = 0; i < tmpNext.length; i++) { - if ((tmpNext[i] >= 0) && (tmpNext[i] < tmpNext.length)) { - _put(tmpKeys[i], tmpValues[i]); - } - } - - limit = (int) (capacity * loadFactor); - } - - /** - * Returns the count of elements currently in the table - * - * @return the count of elements - */ - public int size() { - return count; - } - - private int find(int key) { - int pos = (key & 0x7fffffff) % keys.length; - int i = 0; - - while (next[pos] >= 0) { - if (keys[pos] == key) { - if (next[pos] < next.length) { - return pos; - } - } - if ((pos = next[pos]) >= next.length) { - pos -= next.length; - } - if (++i > next.length) { - return -1; - } - } - - return -1; - } // find - - private boolean _put(int key, Object value) { - int index = find(key); - if (index != -1) { - values[index] = value; - return false; - } - - int pos = (key & 0x7fffffff) % keys.length; - - while ((next[pos] >= 0) && (next[pos] < next.length)) { - pos = next[pos]; - } - - keys[pos] = key; - values[pos] = value; - if (next[pos] < 0) { - next[pos] = (pos + step) % next.length; - } else { - next[pos] -= next.length; - } - return true; - } // _put - -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashIntObjS.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashIntObjS.java deleted file mode 100644 index 54c41defcc..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashIntObjS.java +++ /dev/null @@ -1,62 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2018 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.util.hash; - -/** - * Synchronized extension of org.eclipse.equinox.internal.util.hash.HashIntObjNS - * - * @author Pavlin Dobrev - * @version 1.0 - */ - -public final class HashIntObjS extends HashIntObjNS { - - public HashIntObjS() { - super(101, LOAD_FACTOR); - } - - public HashIntObjS(int capacity) { - super(capacity, LOAD_FACTOR); - } - - public HashIntObjS(int capacity, double lf) { - super(capacity, lf); - } - - @Override - public synchronized void put(int key, Object value) { - super.put(key, value); - } - - @Override - public synchronized Object get(int key) { - return super.get(key); - } - - @Override - public synchronized Object remove(int key) { - return super.remove(key); - } - - @Override - public synchronized int size() { - return super.size(); - } - - @Override - public synchronized void removeAll() { - super.removeAll(); - } -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashLongObjNS.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashLongObjNS.java deleted file mode 100644 index 9f72d430da..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashLongObjNS.java +++ /dev/null @@ -1,276 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.util.hash; - -/** - * Hashtable for mapping long keys to Object values. The methods of this - * hashtable are not synchronized, and if used concurently must be externally - * synchronized - * - * @author Pavlin Dobrev - * @version 1.0 - */ - -public class HashLongObjNS { - - static final float LOAD_FACTOR = 0.75f; - - // count of elements available in table - private int count = 0; - // used for computation of next position - private int step = 499979; - - /** - * Used to enumerate the keys in the hash table. The key at index - * i is valid only if - *
      - * values[i] != null - *
    - */ - public long[] keys; - - /** - * Used to enumerate the values in the hash table. The value at index - * i is valid only if - *
      - * values[i] != null - *
    - */ - public Object[] values; - - /** - * Can be used to check if a key or value is valid. The value or key at - * index i is valid if the following expression is true - *
      - * next[i] != -1 && next[i] < next.length - *
    - */ - public int[] next; - - private int limit; - private double loadFactor; - - /** - * Constructs an empty hash table with keys of type long and values af type - * int. Uses default load factor (0.75) and default capacity (89) - * - */ - public HashLongObjNS() { - this(101, LOAD_FACTOR); - } - - /** - * Constructs an empty hash table with keys of type long and values af type - * int. Uses default load factor (0.75). - * - * @param capacity - * initial capacity of the table - * - * @exception IllegalArgumentException - * if capacity < 1. - */ - public HashLongObjNS(int capacity) { - this(capacity, LOAD_FACTOR); - } - - /** - * Constructs an empty hash table with keys of type long and values of type - * int. - * - * @param capacity - * initial capacity of the table - * @param lf - * load factor ot the table - * - * @exception IllegalArgumentException - * if capacity < 1 or lf < 0.0 - */ - public HashLongObjNS(int capacity, double lf) { - if (capacity < 0) { - throw new IllegalArgumentException("Invalid hashtable capacity: " + capacity + "."); - } - - if (capacity == 0) - capacity = 101; - - if (lf < 0) { - throw new IllegalArgumentException("Invalid load factor: " + lf + "."); - } - - if (lf > 1.0) { - lf = 1.0; - } - loadFactor = lf; - limit = (int) (capacity * lf); - count = 0; - - keys = new long[capacity]; - values = new Object[capacity]; - next = new int[capacity]; - for (int i = 0; i < capacity; i++) { - keys[i] = 0; - next[i] = -1; - } - } - - /** - * Adds in hashtable an element with key key and - * value value. If an element with the specified key is - * already in the table only change it's value. - * - * @param key - * the key of the inserted element - * @param value - * the value of the inserted element - */ - public void put(long key, Object value) { - if (count >= limit) { - rehash(); - } - if (_put(key, value)) { - count++; - } - } - - /** - * Returns an value which is mapped to the key key. - * - * @param key - * the key we are searching for - * @return the value this key is mapped to in the table, or null - */ - public Object get(long key) { - int pos = find(key); - return (pos == -1) ? null : values[pos]; - } - - /** - * Removes an element with the specified key from the table. Does nothing if - * there is no element with this key. - * - * @param key - * the key of the element we want to remove - * @return the removed value, or null if there was nothing to remove - */ - public Object remove(long key) { - int pos = find(key); - if (pos == -1) - return null; - next[pos] += next.length; // mark this field as empty - count--; - Object tmp = values[pos]; - values[pos] = null; - return tmp; - } - - /** - * Empties the hash table - */ - public void removeAll() { - for (int i = 0; i < values.length; i++) { - values[i] = null; - keys[i] = 0; - next[i] = -1; - } - count = 0; - } - - /** - * Rehashes the contents of the hashtable into a hashtable with a larger - * capacity. This method is called automatically when the number of keys in - * the hashtable exceeds this hashtable's capacity and load factor. - */ - public void rehash() { - long[] tmpKeys = keys; - Object[] tmpValues = values; - int[] tmpNext = next; - - int capacity = keys.length * 2 + 1; - - // polzwame temp array-i za da ne se namaje hashtable-a pri OutOfMemory - long[] keys = new long[capacity]; - Object[] values = new Object[capacity]; - int[] next = new int[capacity]; - for (int i = 0; i < next.length; i++) { - next[i] = -1; - } - - this.keys = keys; - this.values = values; - this.next = next; - - for (int i = 0; i < tmpNext.length; i++) { - if ((tmpNext[i] >= 0) && (tmpNext[i] < tmpNext.length)) { - _put(tmpKeys[i], tmpValues[i]); - } - } - - limit = (int) (capacity * loadFactor); - } - - /** - * Returns the count of elements currently in the table - * - * @return the count of elements - */ - public int size() { - return count; - } - - private int find(long key) { - int pos = (int) (key & 0x7fffffff) % keys.length; - int i = 0; - - while (next[pos] >= 0) { - if (keys[pos] == key) { - if (next[pos] < next.length) { - return pos; - } - } - if ((pos = next[pos]) >= next.length) { - pos -= next.length; - } - if (++i > next.length) { - return -1; - } - } - - return -1; - } // find - - private boolean _put(long key, Object value) { - int index = find(key); - if (index != -1) { - values[index] = value; - return false; - } - - int pos = (int) (key & 0x7fffffff) % keys.length; - - while ((next[pos] >= 0) && (next[pos] < next.length)) { - pos = next[pos]; - } - - keys[pos] = key; - values[pos] = value; - if (next[pos] < 0) { - next[pos] = (pos + step) % next.length; - } else { - next[pos] -= next.length; - } - return true; - } // _put - -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashLongObjS.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashLongObjS.java deleted file mode 100644 index c026af8d53..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashLongObjS.java +++ /dev/null @@ -1,62 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2018 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.util.hash; - -/** - * Synchronized extension of org.eclipse.equinox.internal.util.hash.HashLongObjNS - * - * @author Pavlin Dobrev - * @version 1.0 - */ - -public final class HashLongObjS extends HashLongObjNS { - - public HashLongObjS() { - super(101, LOAD_FACTOR); - } - - public HashLongObjS(int capacity) { - super(capacity, LOAD_FACTOR); - } - - public HashLongObjS(int capacity, double lf) { - super(capacity, lf); - } - - @Override - public synchronized void put(long key, Object value) { - super.put(key, value); - } - - @Override - public synchronized Object get(long key) { - return super.get(key); - } - - @Override - public synchronized Object remove(long key) { - return super.remove(key); - } - - @Override - public synchronized int size() { - return super.size(); - } - - @Override - public synchronized void removeAll() { - super.removeAll(); - } -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashObjIntNS.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashObjIntNS.java deleted file mode 100644 index 8cc336d660..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashObjIntNS.java +++ /dev/null @@ -1,298 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.util.hash; - -import java.util.NoSuchElementException; - -/** - * Hashtable for mapping Object keys to int values. The methods of this - * hashtable are not synchronized, and if used concurently must be externally - * synchronized - * - * @author Pavlin Dobrev - * @version 1.0 - */ - -public class HashObjIntNS { - - static final float LOAD_FACTOR = 0.75f; - - // count of elements available in table - private int count = 0; - // used for computation of next position - private int step = 499979; - - /** - * Used to enumerate the keys in the hash table. The key at index - * i is valid only if - *
      - * keys[i] != null - *
    - */ - public Object[] keys; - - /** - * Used to enumerate the values in the hash table. The value at index - * i is valid only if - *
      - * keys[i] != null - *
    - */ - public int[] values; - - /** - * Can be used to check if a key or value is valid. The value or key at - * index i is valid if the following expression is true - *
      - * next[i] != -1 && next[i] < next.length - *
    - */ - public int[] next; - - private int limit; - private double loadFactor; - - /** - * Constructs an empty hash table with keys of type int and values af type - * Object. Uses default load factor (0.75) and default capacity (89) - * - */ - public HashObjIntNS() { - this(101, LOAD_FACTOR); - } - - /** - * Constructs an empty hash table with keys of type int and values af type - * Object. Uses default load factor (0.75). - * - * @param capacity - * initial capacity of the table - * - * @exception IllegalArgumentException - * if capacity < 1. - */ - public HashObjIntNS(int capacity) { - this(capacity, LOAD_FACTOR); - } - - /** - * Constructs an empty hash table with keys of type int and values of type - * Object. - * - * @param capacity - * initial capacity of the table - * @param lf - * load factor ot the table - * - * @exception IllegalArgumentException - * if capacity < 1 or lf < 0.0 - */ - public HashObjIntNS(int capacity, double lf) { - if (capacity < 0) { - throw new IllegalArgumentException("Invalid hashtable capacity: " + capacity + "."); - } - - if (capacity == 0) - capacity = 101; - - if (lf < 0) { - throw new IllegalArgumentException("Invalid load factor: " + lf + "."); - } - - if (lf > 1.0) { - lf = 1.0; - } - loadFactor = lf; - limit = (int) (capacity * lf); - count = 0; - - keys = new Object[capacity]; - values = new int[capacity]; - next = new int[capacity]; - for (int i = 0; i < capacity; i++) { - next[i] = -1; - } - } - - /** - * Adds in hashtable an element with key key and - * value value. If an element with the specified key is - * already in the table only change it's value. - * - * @param key - * the key of the inserted element - * @param value - * the value of the inserted element - */ - public void put(Object key, int value) { - if (count >= limit) { - rehash(); - } - if (_put(key, value)) { - count++; - } - } - - /** - * Returns an value which is mapped to the key key. If there - * is no such a key, throws NoSuchElementException. - * - * @param key - * the key we are searching for - * @return the value this key is mapped to in the table. - * - * @exception NoSuchElementException - * if there is no element with the specified key. - */ - public int get(Object key) { - int pos = find(key); - if (pos == -1) - throw new NoSuchElementException(); - return values[pos]; - } - - /** - * Removes an element with the specified key from the table. throws - * NoSuchElementException if there is no element with this - * key. - * - * @param key - * the key of the element we want to remove - * @exception NoSuchElementException - * if there is no element with the specified key. - */ - public int remove(Object key) { - int pos = find(key); - if (pos == -1) - throw new NoSuchElementException(); - next[pos] += next.length; // mark this field as empty - count--; - keys[pos] = null; - return values[pos]; - } - - /** - * Empties the hash table - */ - public void removeAll() { - for (int i = 0; i < values.length; i++) { - keys[i] = null; - next[i] = -1; - } - } - - /** - * Rehashes the contents of the hashtable into a hashtable with a larger - * capacity. This method is called automatically when the number of keys in - * the hashtable exceeds this hashtable's capacity and load factor. - */ - public void rehash() { - Object[] tmpKeys = keys; - int[] tmpValues = values; - int[] tmpNext = next; - - int capacity = keys.length * 2 + 1; - - // polzwame temp array-i za da ne se namaje hashtable-a pri OutOfMemory - Object[] keys = new Object[capacity]; - int[] values = new int[capacity]; - int[] next = new int[capacity]; - for (int i = 0; i < next.length; i++) { - next[i] = -1; - } - - this.keys = keys; - this.values = values; - this.next = next; - - for (int i = 0; i < tmpNext.length; i++) { - if ((tmpNext[i] >= 0) && (tmpNext[i] < tmpNext.length)) { - _put(tmpKeys[i], tmpValues[i]); - } - } - - limit = (int) (capacity * loadFactor); - } - - /** - * Returns the count of elements currently in the table - * - * @return the count of elements - */ - public int size() { - return count; - } - - public Object[] getKeys() { - return keys; - } - - private int find(Object key) { - return find(key, (key.hashCode() & 0x7fffffff) % keys.length); - } // find - - private int find(Object key, int pos) { - int i = 0; - - // System.out.println("In Zarko's code"); - // - // if (key == null) - // System.out.println("key is null"); - // - while (next[pos] >= 0) { - - if (keys[pos] != null) { - // System.out.println("is null"); - - if (key.equals(keys[pos])) { - if (next[pos] < next.length) { - return pos; - } - } - } - if ((pos = next[pos]) >= next.length) { - pos -= next.length; - } - if (++i > next.length) { - return -1; - } - } - - return -1; - } - - private boolean _put(Object key, int value) { - int pos = (key.hashCode() & 0x7fffffff) % keys.length; - int index = find(key, pos); - if (index != -1) { - values[index] = value; - return false; - } - - while ((next[pos] >= 0) && (next[pos] < next.length)) { - pos = next[pos]; - } - - keys[pos] = key; - values[pos] = value; - if (next[pos] < 0) { - next[pos] = (pos + step) % next.length; - } else { - next[pos] -= next.length; - } - return true; - } // _put - -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashObjIntS.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashObjIntS.java deleted file mode 100644 index 95f07f8830..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashObjIntS.java +++ /dev/null @@ -1,62 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2018 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.util.hash; - -/** - * Synchronized extension of org.eclipse.equinox.internal.util.hash.HashObjIntNS - * - * @author Pavlin Dobrev - * @version 1.0 - */ - -public final class HashObjIntS extends HashObjIntNS { - - public HashObjIntS() { - super(101, LOAD_FACTOR); - } - - public HashObjIntS(int capacity) { - super(capacity, LOAD_FACTOR); - } - - public HashObjIntS(int capacity, double lf) { - super(capacity, lf); - } - - @Override - public synchronized void put(Object key, int value) { - super.put(key, value); - } - - @Override - public synchronized int get(Object key) { - return super.get(key); - } - - @Override - public synchronized int remove(Object key) { - return super.remove(key); - } - - @Override - public synchronized int size() { - return super.size(); - } - - @Override - public synchronized void removeAll() { - super.removeAll(); - } -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashObjLongNS.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashObjLongNS.java deleted file mode 100644 index bb411959ec..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashObjLongNS.java +++ /dev/null @@ -1,284 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.util.hash; - -import java.util.NoSuchElementException; - -/** - * Hashtable for mapping Object keys to long values. The methods of this - * hashtable are not synchronized, and if used concurently must be externally - * synchronized - * - * @author Pavlin Dobrev - * @version 1.0 - */ - -public class HashObjLongNS { - - static final float LOAD_FACTOR = 0.75f; - - // count of elements available in table - private int count = 0; - // used for computation of next position - private int step = 499979; - - /** - * Used to enumerate the keys in the hash table. The key at index - * i is valid only if - *
      - * keys[i] != null - *
    - */ - public Object[] keys; - - /** - * Used to enumerate the values in the hash table. The value at index - * i is valid only if - *
      - * keys[i] != null - *
    - */ - public long[] values; - - /** - * Can be used to check if a key or value is valid. The value or key at - * index i is valid if the following expression is true - *
      - * next[i] != -1 && next[i] < next.length - *
    - */ - public int[] next; - - private int limit; - private double loadFactor; - - /** - * Constructs an empty hash table with keys of type int and values af type - * Object. Uses default load factor (0.75) and default capacity (89) - * - */ - public HashObjLongNS() { - this(101, LOAD_FACTOR); - } - - /** - * Constructs an empty hash table with keys of type int and values af type - * Object. Uses default load factor (0.75). - * - * @param capacity - * initial capacity of the table - * - * @exception IllegalArgumentException - * if capacity < 1. - */ - public HashObjLongNS(int capacity) { - this(capacity, LOAD_FACTOR); - } - - /** - * Constructs an empty hash table with keys of type int and values of type - * Object. - * - * @param capacity - * initial capacity of the table - * @param lf - * load factor ot the table - * - * @exception IllegalArgumentException - * if capacity < 1 or lf < 0.0 - */ - public HashObjLongNS(int capacity, double lf) { - if (capacity < 0) { - throw new IllegalArgumentException("Invalid hashtable capacity: " + capacity + "."); - } - - if (capacity == 0) - capacity = 101; - - if (lf < 0) { - throw new IllegalArgumentException("Invalid load factor: " + lf + "."); - } - - if (lf > 1.0) { - lf = 1.0; - } - loadFactor = lf; - limit = (int) (capacity * lf); - count = 0; - - keys = new Object[capacity]; - values = new long[capacity]; - next = new int[capacity]; - for (int i = 0; i < capacity; i++) { - next[i] = -1; - } - } - - /** - * Adds in hashtable an element with key key and - * value value. If an element with the specified key is - * already in the table only change it's value. - * - * @param key - * the key of the inserted element - * @param value - * the value of the inserted element - */ - public void put(Object key, long value) { - if (count >= limit) { - rehash(); - } - if (_put(key, value)) { - count++; - } - } - - /** - * Returns an value which is mapped to the key key. If there - * is no such a key, throws NoSuchElementException. - * - * @param key - * the key we are searching for - * @return the value this key is mapped to in the table. - * - * @exception NoSuchElementException - * if there is no element with the specified key. - */ - public long get(Object key) { - int pos = find(key); - if (pos == -1) - throw new NoSuchElementException(); - return values[pos]; - } - - /** - * Removes an element with the specified key from the table. throws - * NoSuchElementException if there is no element with this - * key. - * - * @param key - * the key of the element we want to remove - * @exception NoSuchElementException - * if there is no element with the specified key. - */ - public long remove(Object key) { - int pos = find(key); - if (pos == -1) - throw new NoSuchElementException(); - next[pos] += next.length; // mark this field as empty - keys[pos] = null; - count--; - return values[pos]; - } - - /** - * Empties the hash table - */ - public void removeAll() { - for (int i = 0; i < values.length; i++) { - keys[i] = null; - next[i] = -1; - } - } - - /** - * Rehashes the contents of the hashtable into a hashtable with a larger - * capacity. This method is called automatically when the number of keys in - * the hashtable exceeds this hashtable's capacity and load factor. - */ - public void rehash() { - Object[] tmpKeys = keys; - long[] tmpValues = values; - int[] tmpNext = next; - - int capacity = keys.length * 2 + 1; - - // polzwame temp array-i za da ne se namaje hashtable-a pri OutOfMemory - Object[] keys = new Object[capacity]; - long[] values = new long[capacity]; - int[] next = new int[capacity]; - for (int i = 0; i < next.length; i++) { - next[i] = -1; - } - - this.keys = keys; - this.values = values; - this.next = next; - - for (int i = 0; i < tmpNext.length; i++) { - if ((tmpNext[i] >= 0) && (tmpNext[i] < tmpNext.length)) { - _put(tmpKeys[i], tmpValues[i]); - } - } - - limit = (int) (capacity * loadFactor); - } - - /** - * Returns the count of elements currently in the table - * - * @return the count of elements - */ - public int size() { - return count; - } - - private int find(Object key) { - return find(key, (key.hashCode() & 0x7fffffff) % keys.length); - } // find - - private int find(Object key, int pos) { - int i = 0; - - while (next[pos] >= 0) { - if (key.equals(keys[pos])) { - if (next[pos] < next.length) { - return pos; - } - } - if ((pos = next[pos]) >= next.length) { - pos -= next.length; - } - if (++i > next.length) { - return -1; - } - } - - return -1; - } - - private boolean _put(Object key, long value) { - int pos = (key.hashCode() & 0x7fffffff) % keys.length; - int index = find(key, pos); - if (index != -1) { - values[index] = value; - return false; - } - - while ((next[pos] >= 0) && (next[pos] < next.length)) { - pos = next[pos]; - } - - keys[pos] = key; - values[pos] = value; - if (next[pos] < 0) { - next[pos] = (pos + step) % next.length; - } else { - next[pos] -= next.length; - } - return true; - } // _put - -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashObjLongS.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashObjLongS.java deleted file mode 100644 index a6934fcc17..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/HashObjLongS.java +++ /dev/null @@ -1,62 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2018 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.util.hash; - -/** - * Synchronized extension of org.eclipse.equinox.internal.util.hash.HashObjLongNS - * - * @author Pavlin Dobrev - * @version 1.0 - */ - -public final class HashObjLongS extends HashObjLongNS { - - public HashObjLongS() { - super(101, LOAD_FACTOR); - } - - public HashObjLongS(int capacity) { - super(capacity, LOAD_FACTOR); - } - - public HashObjLongS(int capacity, double lf) { - super(capacity, lf); - } - - @Override - public synchronized void put(Object key, long value) { - super.put(key, value); - } - - @Override - public synchronized long get(Object key) { - return super.get(key); - } - - @Override - public synchronized long remove(Object key) { - return super.remove(key); - } - - @Override - public synchronized int size() { - return super.size(); - } - - @Override - public synchronized void removeAll() { - super.removeAll(); - } -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/package.html b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/package.html deleted file mode 100644 index 9f23940ea4..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/hash/package.html +++ /dev/null @@ -1,9 +0,0 @@ - - - -org.eclipse.equinox.util.hash - - -

    Provides hashing utilities among which are several Hashtables accepting primitive data types for keys or values.

    - - diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/ServiceFactoryImpl.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/ServiceFactoryImpl.java deleted file mode 100644 index 3aceab3fef..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/ServiceFactoryImpl.java +++ /dev/null @@ -1,91 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2018 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ - -package org.eclipse.equinox.internal.util.impl.tpt; - -import org.eclipse.equinox.internal.util.UtilActivator; -import org.eclipse.equinox.internal.util.ref.Log; -import org.osgi.framework.*; - -/** - * @author Pavlin Dobrev - * @version 1.0 - */ - -public abstract class ServiceFactoryImpl implements ServiceFactory { - - public String bundleName; - public static Log log; - - private static Bundle systemBundle = null; - static { - try { - systemBundle = UtilActivator.bc.getBundle(0); - } catch (Exception e) { - } - } - static boolean emptyStorage; - - private static boolean security = Log.security(); - - public static boolean privileged() { - emptyStorage = UtilActivator.bc.getProperty("equinox.storage.empty") != null; - return ((systemBundle.getState() != Bundle.STARTING) || emptyStorage) && security; - } - - public static boolean useNames = true; - static String suseNames; - - public ServiceFactoryImpl(String bundleName, Log log) { - this.bundleName = bundleName; - ServiceFactoryImpl.log = log; - - String tmp = UtilActivator.bc.getProperty("equinox.util.threadpool.useNames"); - if (suseNames != tmp) - useNames = tmp == null || !tmp.equals("false"); - } - - public ServiceFactoryImpl(String bundleName) { - this.bundleName = bundleName; - } - - @Override - public T getService(Bundle caller, ServiceRegistration sReg) { - return getInstance(useNames ? getName(caller) : null); - } - - public static String getName(Bundle caller) { - StringBuilder bf = new StringBuilder(13); - bf.append(" (Bundle "); - bf.append(caller.getBundleId()); - bf.append(')'); - return bf.toString(); - } - - /** - * Nothing to be done here. - * - * @param caller - * caller bundle, which releases the factory instance - * @param sReg - * @param service - * object that is released - */ - @Override - public void ungetService(Bundle caller, ServiceRegistration sReg, T service) { - } - - public abstract T getInstance(String bundleName); -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/threadpool/Executor.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/threadpool/Executor.java deleted file mode 100644 index c7d1e52556..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/threadpool/Executor.java +++ /dev/null @@ -1,157 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2018 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ - -package org.eclipse.equinox.internal.util.impl.tpt.threadpool; - -import java.security.*; -import org.eclipse.equinox.internal.util.UtilActivator; -import org.eclipse.equinox.internal.util.impl.tpt.ServiceFactoryImpl; -import org.eclipse.equinox.internal.util.threadpool.ThreadContext; - -/** - * @author Pavlin Dobrev - */ -public class Executor extends Thread implements ThreadContext { - - public static final String iname = "[ThreadPool Manager] - Idle Thread"; - public static final String nullname = "[ThreadPool Manager] - Occupied Thread "; - public static final String xname = "ThreadPool Manager Thread"; - - ThreadPoolFactoryImpl factory; - boolean accessed = false; - - private Runnable job = null; - - private boolean terminated = false; - - AccessControlContext acc; - PEA pea; - static ClassLoader defaultTCCL; - - static { - defaultTCCL = Thread.currentThread().getContextClassLoader(); - } - - public synchronized void setRunnable(Runnable job, String name, ThreadPoolFactoryImpl factory, AccessControlContext acc) { - this.job = job; - this.factory = factory; - - if (ServiceFactoryImpl.useNames) - setName(name == null ? nullname : name); - - this.acc = acc; - - notify(); - } - - @Override - public void run() { - while (!terminated) { - if (job != null) { - try { - if (UtilActivator.debugLevel == 2 && UtilActivator.LOG_DEBUG) { - UtilActivator.log.debug(0x0100, 10003, getName(), null, false); - } - accessed = true; - if (acc != null) { - if (pea == null) - pea = new PEA(); - pea.job = job; - AccessController.doPrivileged(pea, acc); - } else - job.run(); - } catch (Throwable t) { - try { // fix memory leak - throw new Exception(); - } catch (Exception _) { - } - if (ServiceFactoryImpl.log != null) { - ServiceFactoryImpl.log.error("[ThreadPool Manager]\r\nException while executing: \r\nNAME: " + this + "\r\nJOB: " + job + "\r\n", t); - } - - } finally { - if (getContextClassLoader() != defaultTCCL) { - setContextClassLoader(defaultTCCL); - } - } - if (UtilActivator.debugLevel == 2 && UtilActivator.LOG_DEBUG) { - UtilActivator.log.debug(0x0100, 10004, getName(), null, false); - } - job = null; - if (ServiceFactoryImpl.useNames) - setName(iname); - if (ThreadPoolManagerImpl.threadPool == null || (!ThreadPoolManagerImpl.threadPool.releaseObject(this))) { - terminated = true; - continue; - } - } - - if (this.job != null) { - continue; - } - synchronized (this) { - if (this.job != null || terminated) { - continue; - } - - try { - wait(); - } catch (InterruptedException ie) { - } - } - } - - clear(); - } - - void clear() { - job = null; - } - - public synchronized void terminate() { - terminated = true; - notify(); - } - - public Executor() { - super(ServiceFactoryImpl.useNames ? iname : xname); - if (getContextClassLoader() != defaultTCCL) { - setContextClassLoader(defaultTCCL); - } - start(); - } - - @Override - public Runnable getRunnable() { - return job; - } - - public void setPriorityI(int p) { - if (this.getPriority() != p) { - setPriority(p); - } - } -} - -class PEA implements PrivilegedAction { - - Runnable job; - - @Override - public Object run() { - job.run(); - return null; - } -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/threadpool/Job.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/threadpool/Job.java deleted file mode 100644 index d8fee4b47e..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/threadpool/Job.java +++ /dev/null @@ -1,110 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2018 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ - -package org.eclipse.equinox.internal.util.impl.tpt.threadpool; - -import java.security.AccessControlContext; -import org.eclipse.equinox.internal.util.pool.ObjectCreator; - -/** - * @author Pavlin Dobrev - * @version 1.0 - */ - -class Job implements ObjectCreator { - - public Runnable run; - - public String name; - - public String context; - - public int priority = -1; - public ThreadPoolFactoryImpl factory; - - AccessControlContext acc; - - private void setJob(Runnable run, String name, int priority, ThreadPoolFactoryImpl factory, AccessControlContext acc) { - this.run = run; - this.name = name; - this.priority = priority; - this.factory = factory; - this.acc = acc; - } - - @Override - public Object getInstance() { - return new Job(); - } - - public Job root = null; - - public Job last = null; - - private Job next; - - int counter = 0; - - public Job addJob(Runnable run, String name, int priority, ThreadPoolFactoryImpl factory, AccessControlContext acc) { - Job tmp = (Job) (ThreadPoolManagerImpl.jobPool.getObject()); - counter++; - tmp.setJob(run, name, priority, factory, acc); - if (root == null) { - root = tmp; - last = tmp; - return tmp; - } - last.next = tmp; - last = tmp; - return tmp; - } - - public void addJob(Job j) { - counter++; - if (root == null) { - root = j; - last = j; - return; - } - last.next = j; - last = j; - } - - private void clear() { - next = null; - } - - public void fullClear() { - next = null; - run = null; - name = null; - context = null; - acc = null; - } - - public Job getJob() { - Job r = null; - if (root == null) { - return null; - } - counter--; - r = root; - root = root.next; - if (root == null) - last = root; - r.clear(); - return r; - } -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/threadpool/ThreadPoolFactoryImpl.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/threadpool/ThreadPoolFactoryImpl.java deleted file mode 100644 index 7f397d7f60..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/threadpool/ThreadPoolFactoryImpl.java +++ /dev/null @@ -1,168 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2018 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ - -package org.eclipse.equinox.internal.util.impl.tpt.threadpool; - -import java.security.AccessControlContext; -import java.security.AccessController; -import org.eclipse.equinox.internal.util.UtilActivator; -import org.eclipse.equinox.internal.util.impl.tpt.ServiceFactoryImpl; -import org.eclipse.equinox.internal.util.ref.Log; -import org.eclipse.equinox.internal.util.threadpool.ThreadPoolFactory; -import org.eclipse.equinox.internal.util.threadpool.ThreadPoolManager; - -/** - * @author Pavlin Dobrev - * @version 1.0 - */ - -public class ThreadPoolFactoryImpl extends ServiceFactoryImpl implements ThreadPoolManager, ThreadPoolFactory { - - public static ThreadPoolManagerImpl threadPool; - private int limit; - private int used = 0; - private Job queue; - private static int defaultPercent; - - public ThreadPoolFactoryImpl(String bundleName, Log log) { - - super(bundleName, log); - threadPool = ThreadPoolManagerImpl.getThreadPool(); - defaultPercent = UtilActivator.getInteger("equinox.util.threadpool.percent", 30); - limit = (ThreadPoolManagerImpl.tMaximum * defaultPercent) / 100; - if (limit == 0) - limit = 1; - queue = new Job(); - } - - public ThreadPoolFactoryImpl(String bundleName, int size) { - super(bundleName); - limit = size; - if (limit == 0) - limit = 1; - queue = new Job(); - } - - public ThreadPoolFactoryImpl(String bundleName) { - this(bundleName, (ThreadPoolManagerImpl.tMaximum * defaultPercent) / 100); - } - - @Override - public ThreadPoolFactory getInstance(String bundleName) { - if (threadPool == null) - throw new RuntimeException("ServiceFactory is currently off!"); - return new ThreadPoolFactoryImpl(bundleName); - } - - public static void stopThreadPool() { - ThreadPoolManagerImpl tmp = threadPool; - threadPool = null; - tmp.clear(); - } - - @Override - public ThreadPoolManager getThreadPool(int size, boolean sizeIsInPercents) { - if (threadPool == null) - throw new RuntimeException("[ThreadPool] ThreadPool is inaccessible"); - - if (sizeIsInPercents) { - size = (ThreadPoolManagerImpl.tMaximum * size) / 100; - } - if (size <= 0) { - size = 1; - } - return new ThreadPoolFactoryImpl(bundleName, size); - } - - @Override - public void execute(Runnable job, String name) { - execute(job, Thread.NORM_PRIORITY, name); - } - - public void execute0(Runnable job, int priority, String name, AccessControlContext acc) { - if (job == null || name == null) { - throw new IllegalArgumentException("the job or the name parameter is/are null"); - } - - if (ServiceFactoryImpl.useNames) - name = name + bundleName; - - ThreadPoolManagerImpl tmp = threadPool; - - if (tmp != null) { - synchronized (tmp.getSyncMonitor()) { - if (used >= limit) { - if (UtilActivator.LOG_DEBUG) { - UtilActivator.log.debug("In Bundle Queue: " + name + ", bundle queue size: " + queue.counter, null); - } - queue.addJob(job, name, priority, this, acc); - - return; - } - - used++; - } - - tmp.execute(job, priority, name, this, acc - - ); - } else - throw new RuntimeException("[ThreadPool] ThreadPool is inaccessible"); - } - - public void execute(Runnable job, int priority, String name, AccessControlContext acc) { - execute0(job, priority, name, acc); - } - - @Override - public void execute(Runnable job, int priority, String name) { - execute0(job, priority, name, (Log.security() ? AccessController.getContext() : null)); - } - - public Executor getExecutor() { - ThreadPoolManagerImpl tmp = threadPool; - if (tmp != null) { - synchronized (tmp.getSyncMonitor()) { - if (used < limit) { - Executor ex = tmp.getExecutor(); - if (ex != null) - used++; - return ex; - } - } - } - return null; - } - - void finished() { - Job job = queue.getJob(); - - if (job != null) { - if (UtilActivator.LOG_DEBUG) { - UtilActivator.log.debug("To threadpool queue: " + job.name + ", queue size: " + threadPool.waiting.counter, null); - } - threadPool.waiting.addJob(job); - } else { - used--; - } - } - - @Override - public void reset() { - if (threadPool != null) { - threadPool.reset(); - } - } -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/threadpool/ThreadPoolManagerImpl.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/threadpool/ThreadPoolManagerImpl.java deleted file mode 100644 index a593f1299f..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/threadpool/ThreadPoolManagerImpl.java +++ /dev/null @@ -1,267 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2018 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ - -package org.eclipse.equinox.internal.util.impl.tpt.threadpool; - -import java.security.*; -import org.eclipse.equinox.internal.util.UtilActivator; -import org.eclipse.equinox.internal.util.impl.tpt.ServiceFactoryImpl; -import org.eclipse.equinox.internal.util.pool.ObjectPool; -import org.eclipse.equinox.internal.util.timer.TimerListener; - -/** - * @author Pavlin Dobrev - * @version 1.0 - */ - -public class ThreadPoolManagerImpl extends ObjectPool implements TimerListener, PrivilegedAction { - - static ThreadPoolManagerImpl threadPool = null; - - static ObjectPool jobPool; - - private int used = 0; - static int tMaximum = 0; - - Job waiting = new Job(); - - private static String pAutoMaximum = "equinox.util.threadpool.autoMaximum"; - - private static String pMin = "equinox.util.threadpool.minThreads"; - - private static String pMax = "equinox.util.threadpool.maxThreads"; - - private static String pIgnoreMax = "equinox.util.threadpool.ignoreMaximum"; - - private static int defMin = 1; - - private static int defMax = 48; - - private static int MAX_WAITING = 20; - - private static float MAX_OVERLOAD = 0.10F; - - private static boolean ignoreMax; - private static boolean autoMax; - - private ThreadPoolManagerImpl(int i, int j, int m) { - super((Class) null, i, j, m); - tMaximum = i * j; - ignoreMax = UtilActivator.getBoolean(pIgnoreMax); - autoMax = UtilActivator.getBoolean(pAutoMaximum); - jobPool = new ObjectPool(waiting, 5, 8, 4); - } - - public static ThreadPoolManagerImpl getThreadPool() { - if (threadPool == null) { - int intSize = UtilActivator.getInteger(pMin, defMin); - int minFill = intSize; - int factor = UtilActivator.getInteger(pMax, defMax); - intSize = intSize < 2 ? 2 : intSize; - if (intSize > factor) { - factor = (int) (intSize * 1.5 + 0.5); - } - threadPool = new ThreadPoolManagerImpl(intSize, (factor / intSize), minFill); - } - return threadPool; - } - - @Override - public void clear() { - shrink(-1); - threadPool = null; - } - - @Override - public Object getInstance() throws Exception { - if (ServiceFactoryImpl.privileged()) { - return AccessController.doPrivileged(this); - } - - return new Executor(); - } - - @Override - public Executor run() { - return new Executor(); - } - - @Override - public Object getObject() { - try { - return super.getObject(); - } catch (Throwable tw) { - if (ServiceFactoryImpl.log != null) { - ServiceFactoryImpl.log.error("Unable to create more threads!\r\nActive Thread Pool tasks: " + used, tw); - } - } - return null; - } - - public Executor getExecutor() { - synchronized (getSyncMonitor()) { - if (used < tMaximum || ignoreMax) { - Executor e = (Executor) getObject(); - if (e != null) { - used++; - return e; - } - } - } - return null; - } - - @Override - protected void shrink(int count) { - synchronized (getSyncMonitor()) { - dontExtend = true; - int x, y; - for (; nextFree > count; nextFree--) { - x = nextFree / factor; - y = nextFree % factor; - Executor e = (Executor) buff[x][y]; - buff[x][y] = null; - e.terminate(); - } - } - } - - @Override - public void shrink() { - shrink(minimumFill - 1); - dontExtend = false; - } - - @Override - public boolean releaseObject(Object obj) { - Job tmp = null; - Executor x = (Executor) obj; - - synchronized (getSyncMonitor()) { - x.factory.finished(); - - if (used <= tMaximum || ignoreMax) { - tmp = waiting.getJob(); - } - } - - if (tmp == null) { - used--; - x.clear(); - x.setPriorityI(Thread.NORM_PRIORITY); - return super.releaseObject(obj); - } - if (UtilActivator.LOG_DEBUG) { - UtilActivator.log.debug(0x0100, 10005, tmp.name, null, false); - } - x.setPriorityI(tmp.priority); - - x.setRunnable(tmp.run, tmp.name, tmp.factory, tmp.acc); - tmp.fullClear(); - jobPool.releaseObject(tmp); - return true; - } - - @Override - public void timer(int event) { - int count = 0; - int all = 0; - synchronized (getSyncMonitor()) { - for (Object[] b : buff) { - if (b != null) { - for (Object item : b) { - Executor e = (Executor) item; - if (e != null) { - all++; - if (!e.accessed) - count++; - else - e.accessed = false; - } - } - } - } - if (count > 0 && all > minimumFill - 1 && all > count) { - /* - * keep in mind current thread - shrinking one more, since the - * current thread will be back in pool - */ - if (count > minimumFill) - shrink(count - 2); - else - shrink(minimumFill - 2); - dontExtend = false; - } - } - } - - public void execute(Runnable job, int priority, String name, ThreadPoolFactoryImpl factory, AccessControlContext acc) { - Executor ex = null; - synchronized (getSyncMonitor()) { - if (used < tMaximum || ignoreMax) { - ex = (Executor) getObject(); - } - if (ex != null) { - used++; - } else { - addInTasksQueue(job, name, priority, factory, acc); - - return; - } - } - - ex.setPriorityI(priority); - ex.setRunnable(job, name, factory, acc); - } - - private void addInTasksQueue(Runnable job, String name, int priority, ThreadPoolFactoryImpl factory, AccessControlContext acc) { - - waiting.addJob(job, name, priority, factory, acc); - if (UtilActivator.LOG_DEBUG) { - UtilActivator.log.debug("In Threadpool Queue: " + name + ", queue size:" + waiting.counter, null); - } - if (autoMax && waiting.counter > MAX_WAITING) { - Executor ex = (Executor) getObject(); - if (ex != null) { - tMaximum += MAX_WAITING; - MAX_WAITING += (int) (MAX_WAITING * MAX_OVERLOAD); - for (Job j = waiting.getJob(); j != null; j = waiting.getJob()) { - if (ex == null) { - ex = (Executor) getObject(); - } - if (ex != null) { - used++; - ex.setPriorityI(j.priority); - ex.setRunnable(j.run, j.name, factory, acc); - ex = null; - } else { - waiting.addJob(j.run, j.name, j.priority, j.factory, acc); - break; - } - } - } - } - } - - public void reset() { - shrink(-1); - dontExtend = false; - } - - public Object getSyncMonitor() { - return buff; - } - -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/timer/TimerFactory.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/timer/TimerFactory.java deleted file mode 100644 index a00ead715a..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/timer/TimerFactory.java +++ /dev/null @@ -1,95 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2018 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ - -package org.eclipse.equinox.internal.util.impl.tpt.timer; - -import org.eclipse.equinox.internal.util.impl.tpt.ServiceFactoryImpl; -import org.eclipse.equinox.internal.util.impl.tpt.threadpool.ThreadPoolFactoryImpl; -import org.eclipse.equinox.internal.util.ref.Log; -import org.eclipse.equinox.internal.util.timer.Timer; -import org.eclipse.equinox.internal.util.timer.TimerListener; - -/** - * @author Pavlin Dobrev - * @version 1.0 - */ - -public class TimerFactory extends ServiceFactoryImpl implements Timer { - private static TimerImpl timer; - - public TimerFactory(String bundleName, ThreadPoolFactoryImpl factory, Log log) { - - super(bundleName, log); - timer = new TimerImpl(factory); - } - - public TimerFactory(String bundleName) { - super(bundleName); - } - - @Override - public Timer getInstance(String bundleName) { - if (timer == null) - throw new RuntimeException("ServiceFactory is currently off!"); - return new TimerFactory(bundleName); - } - - @Override - @Deprecated - public void notifyAfterMillis(TimerListener listener, long timePeriod, int event) throws IllegalArgumentException { - addNotifyListener(listener, Thread.NORM_PRIORITY, Timer.ONE_SHOT_TIMER, timePeriod, event); - } - - @Override - @Deprecated - public void notifyAfterMillis(TimerListener listener, int priority, long timePeriod, int event) throws IllegalArgumentException { - addNotifyListener(listener, priority, Timer.ONE_SHOT_TIMER, timePeriod, event); - } - - @Override - @Deprecated - public void notifyAfter(TimerListener listener, int timePeriod, int event) throws IllegalArgumentException { - addNotifyListener(listener, Thread.NORM_PRIORITY, Timer.ONE_SHOT_TIMER, timePeriod * 1000, event); - } - - @Override - @Deprecated - public void notifyAfter(TimerListener listener, int priority, int timePeriod, int event) throws IllegalArgumentException { - addNotifyListener(listener, priority, Timer.ONE_SHOT_TIMER, timePeriod * 1000, event); - } - - @Override - public void addNotifyListener(TimerListener listener, int priority, int timerType, long periodMilis, int event) { - TimerImpl tmp = timer; - if (tmp == null) - throw new RuntimeException("This is a zombie!"); - tmp.addNotifyListener(listener, priority, timerType, periodMilis, event, bundleName); - } - - public static void stopTimer() { - if (timer != null) { - timer.terminate(); - timer = null; - } - } - - @Override - public void removeListener(TimerListener listener, int event) { - TimerImpl tmp = timer; - if (tmp == null) - throw new RuntimeException("This is a zombie!"); - tmp.removeListener(listener, event); - } -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/timer/TimerImpl.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/timer/TimerImpl.java deleted file mode 100644 index 30b27a6d93..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/timer/TimerImpl.java +++ /dev/null @@ -1,282 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2018 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ - -package org.eclipse.equinox.internal.util.impl.tpt.timer; - -import java.security.*; -import java.util.Hashtable; -import org.eclipse.equinox.internal.util.UtilActivator; -import org.eclipse.equinox.internal.util.impl.tpt.ServiceFactoryImpl; -import org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor; -import org.eclipse.equinox.internal.util.impl.tpt.threadpool.ThreadPoolFactoryImpl; -import org.eclipse.equinox.internal.util.pool.ObjectPool; -import org.eclipse.equinox.internal.util.ref.Log; -import org.eclipse.equinox.internal.util.timer.Timer; -import org.eclipse.equinox.internal.util.timer.TimerListener; - -/** - * @author Pavlin Dobrev - * @version 1.0 - */ - -public class TimerImpl implements Runnable { - - static Hashtable nodes; - static ObjectPool nodePool; - - static ThreadPoolFactoryImpl threadPool; - - private TimerQueue queue; - private boolean terminated = false; - private Object sync = new Object(); - private Thread th; - - public TimerImpl(ThreadPoolFactoryImpl threadPool) { - nodePool = new ObjectPool(new TimerQueueNode(), 2, 4, 2); - TimerImpl.threadPool = threadPool; - nodes = new Hashtable<>(10); - queue = new TimerQueue(); - try { - th = ((ServiceFactoryImpl.privileged()) ? getOne() : new Thread(this, "[Timer] - Main Queue Handler")); - try { - String str = UtilActivator.bc.getProperty("equinox.timer.priority"); - if (str != null) - th.setPriority(Integer.parseInt(str)); - } catch (Throwable ignored) { - } - th.start(); - } catch (Exception e) { - throw new RuntimeException("Can not start Timer thread!" + e); - } - } - - @Override - public void run() { - TimerQueueNode n = null; - while (!terminated) { - synchronized (sync) { - if (n == null && queue.isEmpty()) { - try { - sync.wait(); - } catch (Exception e) { - } - // todo check if isEmpty is necessary - if (queue.isEmpty() || terminated) { - continue; - } - } - } - synchronized (queue) { - n = queue.getMin(); - while (n != null && !n.enabled) { - queue.removeMin(); - n.returnInPool(); - n = queue.getMin(); - } - if (n == null) - continue; - long current = System.currentTimeMillis(); - if (n.runOn <= current) { - switch (n.type) { - case (Timer.ONE_SHOT_TIMER) : { - threadPool.execute0(n, n.priority, n.getEName(), n.acc); - queue.removeMin(); - nodes.remove(n); - break; - } - case (Timer.ONE_SHOT_TIMER_NO_DELAY) : { - Executor e = threadPool.getExecutor(); - if (e != null) { - e.setPriorityI(n.priority); - e.setRunnable(n, n.getEName(), threadPool, n.acc); - } else { - Thread th = new Thread(n, n.getEName()); - th.setPriority(n.priority); - th.start(); - } - queue.removeMin(); - nodes.remove(n); - break; - } - case (Timer.PERIODICAL_TIMER) : { - threadPool.execute0(n, n.priority, n.getEName(), n.acc); - n.runOn += n.period; - if (n.runOn < current) { // time changed - n.runOn = current + n.period; - } - queue.rescheduleMin(n.runOn); - break; - } - case (Timer.PERIODICAL_TIMER_NO_DELAY) : { - Executor e = threadPool.getExecutor(); - if (e != null) { - e.setPriorityI(n.priority); - e.setRunnable(n, n.getEName(), threadPool, n.acc); - } else { - Thread th = new Thread(n, n.getEName()); - th.setPriority(n.priority); - th.start(); - } - if (n.runOn < current) { // time changed - n.runOn = current + n.period; - } - queue.rescheduleMin(n.runOn); - } - } - continue; - } - } - synchronized (sync) { - long tmpWait; - if (n != null && (tmpWait = n.runOn - System.currentTimeMillis()) > 0) { - try { - sync.wait(tmpWait); - } catch (Exception e) { - e.printStackTrace(); - } - TimerQueueNode tmp = null; - synchronized (queue) { - tmp = queue.getMin(); - if (tmp != n) { - n = tmp; - } - } - /* what's this for - we'll continue in any case */ - continue; - } - } - } // while (!terminated) - nodePool.clear(); - nodePool = null; - nodes.clear(); - nodes = null; - queue = null; - } - - public void terminate() { - terminated = true; - synchronized (sync) { - sync.notify(); - } - try { - th.join(); - } catch (InterruptedException ie) { - } - } - - private void put(TimerListener listener, int priority, int timerType, long periodMilis, int event, String name, AccessControlContext acc) { - if (terminated || nodePool == null) { - throw new RuntimeException("This Instance is a ZOMBIE!!!" + terminated + " " + nodePool); - } - - TimerQueueNode n = (TimerQueueNode) nodePool.getObject(); - n.setEvent(listener, priority, timerType, System.currentTimeMillis() + periodMilis, periodMilis, event, name, acc); - TimerQueueNode tmp = nodes.remove(n); - if (tmp != null) { - synchronized (queue) { - queue.removeTimerNode(tmp); - } - tmp.returnInPool(); - } - nodes.put(n, n); - TimerQueueNode nx; - synchronized (queue) { - queue.add(n); - nx = queue.getMin(); - } - if (nx == n) { - synchronized (sync) { - sync.notifyAll(); - } - } - } - - void addNotifyListener(TimerListener listener, int priority, int timerType, long periodMilis, int event, String name) { - if (timerType < Timer.ONE_SHOT_TIMER || timerType > Timer.PERIODICAL_TIMER_NO_DELAY) { - throw new IllegalArgumentException("Invalid Timer Type"); - } - if (listener != null) { - if (priority >= Thread.MIN_PRIORITY && priority <= Thread.MAX_PRIORITY) { - if (periodMilis > 0) { - AccessControlContext acc = Log.security() ? AccessController.getContext() : null; - put(listener, priority, timerType, periodMilis, event, name, acc); - } else { - throw new IllegalArgumentException("Time period must be positive!"); - } - } else { - throw new IllegalArgumentException("Priority must be between Thread.MIN_PRIORITY and Thread.MAX_PRIORITY!"); - } - } else { - throw new IllegalArgumentException("The timer listener is null"); - } - } - - public void removeListener(TimerListener listener, int event) { - TimerQueueNode rmTmp = (TimerQueueNode) nodePool.getObject(); - rmTmp.setEvent(listener, 0, 0, 0, 0, event, null, null); - TimerQueueNode old = nodes.remove(rmTmp); - if (old != null) { - synchronized (queue) { - queue.removeTimerNode(old); - } - old.returnInPool(); - } - rmTmp.returnInPool(); - } - - private class PrivilegedActionImpl implements PrivilegedAction { - private Runnable runnable = null; - private boolean locked = false; - private boolean waiting = false; - - PrivilegedActionImpl() { - } - - public synchronized void set(Runnable runnable) { - while (locked) { - waiting = true; - try { - wait(); - } catch (Exception _) { - } - waiting = false; - } - locked = true; - this.runnable = runnable; - } - - @Override - public Thread run() { - Runnable runnableLocal = null; - synchronized (this) { - runnableLocal = this.runnable; - this.runnable = null; - locked = false; - if (waiting) - notifyAll(); - } - return new Thread(runnableLocal, "[Timer] - Main Queue Handler"); - } - } - - public Thread getOne() throws Exception { - if (action == null) - action = new PrivilegedActionImpl(); - action.set(this); - return AccessController.doPrivileged(action); - } - - PrivilegedActionImpl action = null; -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/timer/TimerQueue.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/timer/TimerQueue.java deleted file mode 100644 index 2525fb0dd0..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/timer/TimerQueue.java +++ /dev/null @@ -1,207 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.util.impl.tpt.timer; - -/** - * @author Pavlin Dobrev - * @version 1.0 - */ - -class TimerQueue { - - static final int POOL_SIZE = 20; - QueueElement[] pool = new QueueElement[POOL_SIZE]; - int filled = 0; - - QueueElement first; - QueueElement lastInserted; - - TimerQueue() { - } - - /** - * Adds a new task to the priority queue. - */ - void add(TimerQueueNode task) { - QueueElement toAdd = getQueueElement(); - toAdd.node = task; - - if (first == null) { - first = toAdd; - } else { - insertElement(toAdd); - } - } - - /** - * Return the "head task" of the priority queue. (The head task is an task - * with the lowest nextExecutionTime.) - */ - TimerQueueNode getMin() { - return (first != null) ? first.node : null; - } - - /** - * Remove the head task from the priority queue. - */ - void removeMin() { - if (first != null) { - if (lastInserted == first) { - lastInserted = null; - } - if (filled < POOL_SIZE) { - QueueElement toFree = first; - first = first.next; - freeQueueElement(toFree); - } else { - first = first.next; - } - } - } - - /** - * Sets the nextExecutionTime associated with the head task to the specified - * value, and adjusts priority queue accordingly. - */ - void rescheduleMin(long newTime) { - first.node.runOn = newTime; - if (first.next != null) { - if (lastInserted == first) { - lastInserted = null; - } - QueueElement el = first; - first = first.next; - el.next = null; - insertElement(el); - } - } - - /** - * Returns true if the priority queue contains no elements. - */ - boolean isEmpty() { - return first == null; - } - - /** - * Removes all elements from the priority queue. - */ - void clear() { - while (first != null) { - first.node.returnInPool(); - first = first.next; - } - lastInserted = null; - } - - void insertElement(QueueElement newElement) { - if (first.node.runOn >= newElement.node.runOn) { - /* private case - insert in the beginning of the queue */ - newElement.next = first; - first = newElement; - } else if (lastInserted != null) { - if (lastInserted.node.runOn == newElement.node.runOn) { - QueueElement tmp = lastInserted.next; - lastInserted.next = newElement; - newElement.next = tmp; - } else if (lastInserted.node.runOn > newElement.node.runOn) { - // System.out.println("insert 1"); - doInsertElement(first, newElement); - } else { - // System.out.println("insert 2"); - doInsertElement(lastInserted, newElement); - } - } else { - // System.out.println("insert 3"); - doInsertElement(first, newElement); - } - } - - /** - * elToInsert should not be placed before firstEl, because firstEl may not - * be the first element of the queue - */ - void doInsertElement(QueueElement firstEl, QueueElement elToInsert) { - QueueElement tmp = firstEl; - QueueElement prev = firstEl; - while (tmp != null && tmp.node.runOn < elToInsert.node.runOn) { - prev = tmp; - tmp = tmp.next; - } - if (tmp == null) { - /* reached the end of the queue */ - prev.next = elToInsert; - } else { - prev.next = elToInsert; - elToInsert.next = tmp; - } - lastInserted = elToInsert; - } - - void removeTimerNode(TimerQueueNode node) { - QueueElement tmp = first; - QueueElement prev = null; - while (tmp != null) { - if (node.listener == tmp.node.listener && node.event == tmp.node.event) { - if (prev != null) { - if (lastInserted == tmp) { - lastInserted = prev; - } - prev.next = tmp.next; - if (filled < POOL_SIZE) { - freeQueueElement(tmp); - } - } else { - /* removing the first element */ - if (lastInserted == first) { - lastInserted = null; - } - if (filled < POOL_SIZE) { - QueueElement toFree = first; - first = first.next; - freeQueueElement(toFree); - } else { - first = first.next; - } - } - break; - } - prev = tmp; - tmp = tmp.next; - } - } - - private QueueElement getQueueElement() { - return (filled > 0) ? pool[--filled] : new QueueElement(); - } - - private void freeQueueElement(QueueElement toFree) { - if (filled < POOL_SIZE) { - pool[filled] = toFree; - filled++; - toFree.next = null; - toFree.node = null; - } - } - - private class QueueElement { - QueueElement next; - TimerQueueNode node; - - public QueueElement() { - } - } - -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/timer/TimerQueueNode.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/timer/TimerQueueNode.java deleted file mode 100644 index cc11206bd2..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/impl/tpt/timer/TimerQueueNode.java +++ /dev/null @@ -1,178 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ - -package org.eclipse.equinox.internal.util.impl.tpt.timer; - -import java.security.AccessControlContext; -import org.eclipse.equinox.internal.util.impl.tpt.ServiceFactoryImpl; -import org.eclipse.equinox.internal.util.pool.ObjectCreator; -import org.eclipse.equinox.internal.util.timer.Timer; -import org.eclipse.equinox.internal.util.timer.TimerListener; - -/** - * @author Pavlin Dobrev - * @version 1.0 - */ - -class TimerQueueNode implements Runnable, ObjectCreator { - public static final String PERIODICAL_TASK_NAME = "[Timer] - Periodical Task"; - - public static final String PERIODICAL_NO_DELAY_TASK_NAME = "[Timer] - Periodical No Delay Task"; - - public static final String ONE_SHOT_TASK_NAME = "[Timer] - One Shot Task"; - - public static final String ONE_SHOT_NO_DELAY_TASK_NAME = "[Timer] - One Shot No Delay Task"; - - public TimerQueueNode() { - } - - TimerListener listener = null; - - int event; - - long runOn = -1; - - int type = -1; - - int priority = -1; - - long period = -1; - - boolean running = false; - - private int theHash; - - String name; - - boolean named = false; - - String context; - - AccessControlContext acc; - - boolean enabled = false; - - public String getEName() { - if (ServiceFactoryImpl.useNames && !named) { - named = true; - String tmp = null; - switch (type) { - case Timer.ONE_SHOT_TIMER : { - tmp = ONE_SHOT_TASK_NAME; - break; - } - case Timer.ONE_SHOT_TIMER_NO_DELAY : { - tmp = ONE_SHOT_NO_DELAY_TASK_NAME; - break; - } - case Timer.PERIODICAL_TIMER : { - tmp = PERIODICAL_TASK_NAME; - break; - } - case Timer.PERIODICAL_TIMER_NO_DELAY : { - tmp = PERIODICAL_NO_DELAY_TASK_NAME; - break; - } - } - name = (name != null) ? tmp.concat(name) : tmp; - } - return ((name == null) ? "" : name); - } - - public void setEvent(TimerListener listener, int priority, int timerType, long runOn, long periodMilis, int event, String name, AccessControlContext acc) { - this.enabled = true; - this.listener = listener; - theHash = listener.hashCode() + event; - this.priority = priority; - type = timerType; - period = periodMilis; - this.runOn = runOn; - this.event = event; - this.name = name; - this.named = false; - this.acc = acc; - } - - void returnInPool() { - synchronized (this) { - if (!enabled || (running && type == Timer.ONE_SHOT_TIMER)) { - /* this node has already been put in pool or will be put */ - return; - } - clear(); - } - if (TimerImpl.nodePool != null) { - TimerImpl.nodePool.releaseObject(this); - } - } - - @Override - public void run() { - synchronized (this) { - running = true; - } - TimerListener tmp = listener; - try { - if (tmp != null && enabled) { - tmp.timer(event); - } - } catch (Throwable t) { - if (ServiceFactoryImpl.log != null) { - ServiceFactoryImpl.log.error("[Timer] - Error while notifying:\r\n" + tmp, t); - } - } - tmp = null; - if (type == Timer.ONE_SHOT_TIMER) - returnInPool(); - running = false; - } - - @Override - public Object getInstance() { - return new TimerQueueNode(); - } - - private void clear() { - named = false; - name = null; - enabled = false; - listener = null; - event = -1; - runOn = Long.MAX_VALUE; - type = -1; - acc = null; - - } - - @Override - public int hashCode() { - TimerListener lis = listener; - return (lis != null) ? (theHash = (lis.hashCode() + event)) : theHash; - } - - @Override - public String toString() { - return "QueueNode: " + super.toString() + "\r\n" + "\t\tListener: " + listener + "\r\n" + "\t\tEvent: " + event + "\r\n" + "\t\tType: " + type + "\r\n" + "\t\trunafter: " + (runOn - System.currentTimeMillis()) + "\r\n" + "\t\tEnabled: " + enabled; - } - - @Override - public boolean equals(Object a) { - if (a instanceof TimerQueueNode) { - TimerQueueNode b = (TimerQueueNode) a; - return b.listener == listener && b.event == event; - } - return false; - } -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/pool/ObjectCreator.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/pool/ObjectCreator.java deleted file mode 100644 index 333e35562b..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/pool/ObjectCreator.java +++ /dev/null @@ -1,25 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.util.pool; - -/** - * @author Pavlin Dobrev - * @version 1.0 - */ - -public interface ObjectCreator { - - public Object getInstance() throws Exception; -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/pool/ObjectPool.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/pool/ObjectPool.java deleted file mode 100644 index 9947b7ed76..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/pool/ObjectPool.java +++ /dev/null @@ -1,193 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2018 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ - -package org.eclipse.equinox.internal.util.pool; - -/** - * @author Pavlin Dobrev - * @version 1.0 - */ - -public class ObjectPool { - - private Class template; - - protected Object[][] buff; - - protected int nextFree; - - protected int size; - - protected int minimumFill; - - protected int factor; - - protected int minfSize; - - protected int minffactor; - - // protected int usageGet = 0; - - // protected int usageReleased = 0; - - protected boolean dontExtend = false; - - protected ObjectCreator oc; - - public Object getInstance() throws Exception { - return oc != null ? oc.getInstance() : template.getDeclaredConstructor().newInstance(); - } - - public ObjectPool(ObjectCreator oc, int size, int factor) { - this(null, oc, size, factor, size * factor); - } - - public ObjectPool(Class template, int size, int factor) { - this(template, null, size, factor, size * factor); - } - - public ObjectPool(Class template, int size, int factor, int minimumFill) { - this(template, null, size, factor, (minimumFill = (minimumFill > (size * factor)) ? (size * factor) : minimumFill)); - } - - public ObjectPool(ObjectCreator oc, int size, int factor, int minimumFill) { - this(null, oc, size, factor, (minimumFill = minimumFill > (size * factor) ? (size * factor) : minimumFill)); - } - - protected ObjectPool(Class template, ObjectCreator oc, int size, int factor, int minimumFill) { - - if (size <= 1 || factor < 1) { - throw new IllegalArgumentException(size + " is less or equal to 1"); - } - - this.minimumFill = minimumFill < 1 ? 1 : minimumFill; - this.oc = oc; - if (template != null) { - try { - template.getConstructor(); - this.template = template; - } catch (NoSuchMethodException nsm) { - throw new IllegalArgumentException(template + " don't have default constructor!"); - } - } - buff = new Object[size][]; - this.size = size; - this.factor = factor; - minfSize = this.minimumFill / factor; - minffactor = this.minimumFill % factor; - // System.out.println("minimumFill " + this.minimumFill); - // System.out.println("minfSize " + minfSize); - // System.out.println("minffactor " + minffactor); - if (minimumFill <= 1) { - nextFree = -1; - } else { - for (int i = 0; i < (minfSize == 0 ? 1 : minfSize); i++) { - buff[i] = new Object[factor]; - } - fill(); - } - // start(); - } - - private void fill() { - int i = 0; - synchronized (buff) { - for (; (i < minfSize); i++) { - put(i, factor); - } - if (minffactor > 0) { - put(i, minffactor); - } - } - nextFree = minimumFill - 1; - } - - private void put(int i, int count) { - for (int j = 0; j < count; j++) { - try { - if (buff[i] == null) { - buff[i] = new Object[factor]; - } - buff[i][j] = getInstance(); - nextFree = i * j; - } catch (Throwable t) { - throw new RuntimeException("buffer fill failed: " + t); - } - } - } - - public void clear() { - dontExtend = true; - shrink(-1); - } - - protected void shrink(int count) { - synchronized (buff) { - for (; nextFree > count; nextFree--) { - buff[(nextFree / factor)][nextFree % factor] = null; - } - } - } - - public void shrink() { - dontExtend = true; - shrink(minimumFill); - dontExtend = false; - } - - public Object getObject() { - Object tmp = null; - synchronized (buff) { - if (nextFree < 0) { - if (dontExtend) { - throw new RuntimeException(); - } - if (minimumFill <= 1) { - try { - return getInstance(); - } catch (Throwable e) { - throw new RuntimeException("buffer fill failed: " + e); - } - } - fill(); - } - tmp = buff[(nextFree / factor)][(nextFree % factor)]; - buff[(nextFree / factor)][nextFree % factor] = null; - nextFree--; - // usageGet++; - return tmp; - } - } - - public boolean releaseObject(Object obj) { - // usageReleased++; - if (dontExtend) { - return false; - } - synchronized (buff) { - int tmp = nextFree + 1; - int telement = tmp / factor; - if ((telement) < size) { - if (buff[telement] == null) { - buff[telement] = new Object[factor]; - } - buff[telement][tmp % factor] = obj; - nextFree = tmp; - return true; - } - return false; - } - } -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/pool/package.html b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/pool/package.html deleted file mode 100644 index af97828e6f..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/pool/package.html +++ /dev/null @@ -1,9 +0,0 @@ - - - -org.eclipse.equinox.util.pool - - -

    The object pool utility creates pools of reusable objects of certain type.

    - - diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/ref/Log.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/ref/Log.java deleted file mode 100644 index 0e73cb6203..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/ref/Log.java +++ /dev/null @@ -1,834 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2018 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.util.ref; - -import java.io.*; -import java.util.Vector; -import org.eclipse.equinox.internal.util.UtilActivator; -import org.eclipse.equinox.internal.util.event.Queue; -import org.eclipse.equinox.internal.util.hash.HashIntObjNS; -import org.eclipse.equinox.internal.util.security.PrivilegedRunner; -import org.eclipse.equinox.internal.util.security.SecurityUtil; -import org.osgi.framework.BundleContext; -import org.osgi.framework.ServiceReference; -import org.osgi.service.log.LogService; -import org.osgi.util.tracker.ServiceTracker; -import org.osgi.util.tracker.ServiceTrackerCustomizer; - -/** - * Log class is responsible for forwarding bundles's messages to the LogService - * or console output. - * - * @author Pavlin Dobrev - * @version 1.0 - */ - -public class Log implements LogInterface, ServiceTrackerCustomizer, PrivilegedRunner.PrivilegedDispatcher { - - /** - * Flag, pointing if printingOnConsole is allowed - * - * @deprecated since osgilib verion 1.3.9 use set/get PrintOnConsole - */ - @Deprecated - public boolean printOnConsole = false; - - /** - * Flag, pointing whether printing on console should be done if log service - * is not available - */ - public boolean autoPrintOnConsole = false; - - /** - * Flag, pointing if logging debuging info is allowed - * - * @deprecated since osgilib verion 1.3.9 use set/get Debug - */ - @Deprecated - public boolean debug = false; - - /** - * Flag, pointing whether printing on console should be done for errors - * (exceptions) and warnings - */ - private boolean logErrorLevel = false; - - private ServiceTracker logTracker; - - protected static final SecurityUtil securityUtil = new SecurityUtil(); - - private boolean isClosed = false; - - private long bundleId; - /** BundleContext to get LogService and service owner of Log object BundleId */ - protected BundleContext bc; - private static Vector logs = new Vector<>(); - private static Log listener; - - public Log(BundleContext bc) { - this(bc, true); - } - - /** - * Constructs a log object, used for logging information in the LogService. - * If the LogService is unavailble, the information is printed on the - * server's console. - * - * @param bc - * BundleContext, necessary to get LogService, in case it is - * started. - */ - public Log(BundleContext bc, boolean initDebug) { - if (initDebug) { - debug = securityUtil.getBooleanProperty("equinox.util.ref.log.debug"); - logErrorLevel = securityUtil.getBooleanProperty("equinox.log.errorlevel"); - autoPrintOnConsole = securityUtil.getBooleanProperty("equinox.util.ref.log.autoPrintOnConsole"); - printOnConsole = securityUtil.getBooleanProperty("equinox.util.ref.log.printOnConsole"); - } - if (bc != null) { - this.bc = bc; - bundleId = bc.getBundle().getBundleId(); - - if (UtilActivator.startup && UtilActivator.points != null) - UtilActivator.points[0] = System.currentTimeMillis(); - - initSysServices(); - - if (UtilActivator.startup && UtilActivator.points != null) - UtilActivator.points[1] = System.currentTimeMillis(); - synchronized (logs) { - if (listener == null) - initListener(); - logs.addElement(this); - } - - if (UtilActivator.startup && UtilActivator.points != null) - UtilActivator.points[2] = System.currentTimeMillis(); - } else - printOnConsole = true; - } - - private void initListener() { - try { - securityUtil.doPrivileged(this, OPEN_TYPE, null); - } catch (IllegalStateException ise) { - /* must be rethrown */ - throw ise; - } catch (Throwable ignore) { - ignore.printStackTrace(); - } - } - - void initListener0() { - synchronized (logs) { - initListenerNS(); - } - } - - void initListenerNS() { - logTracker = new ServiceTracker<>(bc, org.osgi.service.log.LogService.class, this); - logTracker.open(); - listener = this; - } - - /** - * Logs error messages. If printOnConsole is true, or if the - * LogService is unavailable, log info is printed on console. - * - * @param str - * Message description of the error. - * @param ex - * Throwable object, containing the stack trace; may be null. - */ - @Override - public void error(String str, Throwable ex) { - if (isClosed) - return; - - boolean logResult = logMessage(LogService.LOG_ERROR, str, ex); - if (printOnConsole || (!logResult && autoPrintOnConsole) || logErrorLevel) { - dumpOnConsole("ERROR ", str, bundleId, ex); - } - } - - /** - * Logs error messages. If printOnConsole is true, or if the - * LogService is unavailable, log info is printed on console. - * - * @param moduleID - * @param msgID - * @param msg - * Message description of the error. - * @param t - * Throwable object, containing the stack trace; may be null. - * @param synch - * Weather tracer to work synchronious or not - */ - public void error(int moduleID, int msgID, String msg, Throwable t, boolean synch) { - if (isClosed) - return; - - boolean logResult = true; - if (msg != null || t != null) { - logResult = logMessage(LogService.LOG_ERROR, msg, t); - } - if (printOnConsole || (!logResult && autoPrintOnConsole) || logErrorLevel) { - dumpOnConsole(buildDebugString(moduleID, msgID, msg, "ERROR " + bundleId + " "), t); - } - } - - /** - * Logs warning messages. If printOnConsole is true, or if - * the LogService is unavailable, log info is printed on - * console. - * - * @param str - * Message description of the error. - * @param ex - * Throwable object, containing the stack trace; may be null. - */ - @Override - public void warning(String str, Throwable ex) { - if (isClosed) - return; - - boolean logResult = logMessage(LogService.LOG_WARNING, str, ex); - if (printOnConsole || (!logResult && autoPrintOnConsole) || logErrorLevel) { - dumpOnConsole("WARNING ", str, bundleId, ex); - } - } - - /** - * Logs warning messages. If printOnConsole is true, or if - * the LogService is unavailable, log info is printed on - * console. - * - * @param moduleID - * @param msgID - * @param msg - * Message description of the error. - * @param t - * Throwable object, containing the stack trace; may be null. - * @param synch - * Weather tracer to work synchronious or not - */ - public void warning(int moduleID, int msgID, String msg, Throwable t, boolean synch) { - if (isClosed) - return; - - boolean logResult = true; - if (msg != null || t != null) { - logResult = logMessage(LogService.LOG_WARNING, msg, t); - } - if (printOnConsole || (!logResult && autoPrintOnConsole) || logErrorLevel) { - dumpOnConsole(buildDebugString(moduleID, msgID, msg, "WARNING " + bundleId + " "), t); - } - } - - /** - * Logs info messages. If printOnConsole is true, or if the - * LogService is unavailable, message is printed on console. - * - * @param str - * Message to be logged. - */ - @Override - public void info(String str) { - if (isClosed) - return; - - boolean logResult = logMessage(LogService.LOG_INFO, str, null); - if (printOnConsole || (!logResult && autoPrintOnConsole)) { - dumpOnConsole("INFO ", str, bundleId, null); - } - } - - /** - * Logs info messages. If printOnConsole is true, or if the - * LogService is unavailable, log info is printed on console. - * - * @param moduleID - * @param msgID - * @param msg - * Message description of the error. - * @param synch - * Weather tracer to work synchronious or not - */ - public void info(int moduleID, int msgID, String msg, boolean synch) { - if (isClosed) - return; - - boolean logResult = true; - if (msg != null) { - logResult = logMessage(LogService.LOG_INFO, msg, null); - } - if (printOnConsole || (!logResult && autoPrintOnConsole)) { - dumpOnConsole(buildDebugString(moduleID, msgID, msg, "INFO " + bundleId + " "), null); - } - } - - /** - * Logs debug information if debug flag is true. If - * LogService is unaccessible or printOnConsole flag is true, log info is - * printed on console. - * - * @param str - * Message description. - * @param ex - * Throwable object, containing the stack trace; may be null. - */ - @Override - public void debug(String str, Throwable ex) { - if (!debug || isClosed) - return; - - boolean logResult = logMessage(LogService.LOG_DEBUG, str, ex); - if (printOnConsole || (!logResult && autoPrintOnConsole)) { - dumpOnConsole("DEBUG ", str, bundleId, ex); - } - } - - /** - * Logs debug messages. If printOnConsole is true, or if the - * LogService is unavailable, log info is printed on console. - * - * @param moduleID - * @param msgID - * @param msg - * Message description of the error. - * @param t - * Throwable object, containing the stack trace; may be null. - * @param synch - * Indicates whether tracer should log the message synchronously - * or not - */ - public void debug(int moduleID, int msgID, String msg, Throwable t, boolean synch) { - debug(moduleID, msgID, msg, t, synch, false, false, true); - } - - /** - * Logs debug messages. If printOnConsole is true, or if the - * LogService is unavailable, log info is printed on console. - * - * @param moduleID - * @param msgID - * @param msg - * Message description of the error. - * @param t - * Throwable object, containing the stack trace; may be null. - * @param synch - * Indicates whether tracer should log the message synchronously - * or not - * @param measurement - * Indicates whether the message is a measurement or not - */ - public void debug(int moduleID, int msgID, String msg, Throwable t, boolean synch, boolean measurement) { - debug(moduleID, msgID, msg, t, synch, measurement, false, true); - } - - /** - * Logs debug messages. If printOnConsole is true, or if the - * LogService is unavailable, log info is printed on console. - * - * @param moduleID - * @param msgID - * @param msg - * Message description of the error. - * @param t - * Throwable object, containing the stack trace; may be null. - * @param synch - * Indicates whether tracer should log the message synchronously - * or not - * @param measurement - * Indicates whether the message is a measurement or not - * @param display - * Indicates whether the message should be displayed in native - * GUI - */ - public void debug(int moduleID, int msgID, String msg, Throwable t, boolean synch, boolean measurement, boolean display) { - debug(moduleID, msgID, msg, t, synch, measurement, display, true); - } - - /** - * Logs debug messages. If printOnConsole is true, or if the - * LogService is unavailable, log info is printed on console. - * - * @param moduleID - * @param msgID - * @param msg - * Message description of the error. - * @param t - * Throwable object, containing the stack trace; may be null. - * @param synch - * Indicates whether tracer should log the message synchronously - * or not - * @param measurement - * Indicates whether the message is a measurement or not - * @param display - * Indicates whether the message should be displayed in native - * GUI - * @param logInFile - * Indicates whether the message should be logged into the log - * file or not. Used for measurements' logs. - */ - public void debug(int moduleID, int msgID, String msg, Throwable t, boolean synch, boolean measurement, boolean display, boolean logInFile) { - if (!debug && !measurement || isClosed) - return; - - String message = msg; - if (measurement) { - message = buildDebugString(moduleID, msgID, msg, "DEBUG " + bundleId + " "); - } - - boolean logResult = logInFile ? true : (message == null && t == null); - if (logInFile && (message != null || t != null)) { - logResult = logMessage(LogService.LOG_DEBUG, message, t); - } - - /* Checks are added for different framework implementations. */ - if (printOnConsole || (!logResult && autoPrintOnConsole)) { - message = buildDebugString(moduleID, msgID, msg, "DEBUG " + bundleId + " "); - dumpOnConsole(message, t); - } - } - - private void initSysServices() { - if (security) { - try { - securityUtil.doPrivileged(this, GET_SYS_SERVICES_TYPE, null); - } catch (Throwable ignore) { - ignore.printStackTrace(); - } - } - } - - LogService getService0() throws IllegalArgumentException { - synchronized (logs) { - ServiceReference logRef = listener.logTracker.getServiceReference(); - LogService ls = null; - if (logRef != null) { - ls = bc.getService(logRef); - } - return ls; - } - } - - private LogService getService() throws IllegalArgumentException { - if (bc == null) - return null; // standalone hack - try { - return (LogService) securityUtil.doPrivileged(this, GET_SERVICE_TYPE, null); - } catch (IllegalArgumentException e) { - throw e; - } catch (Exception e) { - /* this will not happen */ - e.printStackTrace(); - throw new IllegalArgumentException(e.toString()); - } - } - - private boolean logMessage(int messageType, String messageText, Throwable t) { - LogService ls = null; - - try { - ls = getService(); - } catch (IllegalStateException ise) { // invalid bundle context - synchronized (logs) { - close0(); - } - return false; - } - boolean result = true; - if (ls == null) { - result = false; - testClose(); // test the listener - } else { - try { - ls.log(messageType, messageText, t); - } catch (IllegalStateException ise) { // the log service instance - // is not valid - result = false; - testClose(); // test the listener - } - } - return result; - } - - private void dumpOnConsole(String prefix, String msg, long bundleId, Throwable t) { - System.out.println(prefix + bundleId + " " + msg); - if (t != null) { - t.printStackTrace(); - } - } - - /** - * Prints a message to the console or a log dispatcher - * - * @param msg - - * the message to print, which contains the prefix and the - * bundleID in itself - * @param t - * throwable object, which stack trace should be printed - */ - private void dumpOnConsole(String msg, Throwable t) { - System.out.println(msg); - if (t != null) { - t.printStackTrace(); - } - } - - private void testClose() { - synchronized (logs) { - if (listener != null) - try { - listener.bc.getBundle(); - return; - } catch (IllegalStateException ise) { - listener.close0(); - } - } - } - - /** - * Releases the Log's resources: ungets LogService, removes the - * ServiceListener from the framework and nulls references. After invocation - * of this method, this Log object can be used no longer. - */ - @Override - public void close() { - if (bc != null) { - synchronized (logs) { - close0(); - } - } - } - - private boolean close0() { - logs.removeElement(this); - isClosed = true; - if (listener == this) { - try { - logTracker.close(); - logTracker = null; - } catch (IllegalStateException ise) { - } - Log ls = null; - while (logs.size() > 0) { - ls = logs.elementAt(0); - try { - ls.initListener(); - break; - } catch (IllegalStateException ise) { - logs.removeElementAt(0); - ls = null; - } - } - listener = ls; - } - return (listener != null); - } - - /** - * enable/disable print on console - * - * @param value - * boolean if true enables print on console else disables it - */ - @Override - public void setPrintOnConsole(boolean value) { - printOnConsole = value; - } - - /** - * enable/disable loging of debug info - * - * @param value - * boolean if true enables loging of debug info else disables it - */ - @Override - public void setDebug(boolean value) { - debug = value; - } - - /** - * Gets the flag, which enables logging debug messages. - * - * @return true if debugging is enabled - */ - @Override - public boolean getDebug() { - return debug; - } - - /** - * Gets the flag, which enables printing log messages on the console. - * - * @return true if printingon console is enabled - */ - @Override - public boolean getPrintOnConsole() { - return printOnConsole; - } - - @Override - public LogService addingService(ServiceReference reference) { - return bc.getService(reference); - } - - @Override - public void modifiedService(ServiceReference reference, LogService service) { - } - - @Override - public void removedService(ServiceReference reference, LogService service) { - } - - private HashIntObjNS map = null; - private HashIntObjNS starts = null; - - public void setMaps(HashIntObjNS map0, HashIntObjNS starts0) { - map = map0; - starts = starts0; - } - - private String getModuleName(int moduleID) { - return (String) map.get(-moduleID); - } - - private String getMsgValue(int msgID) { - String res = (String) map.get(msgID); - if (res == null && starts != null) { - try { - int startID = ((Integer) starts.get(msgID)).intValue(); - res = "END OF " + (String) map.get(startID); - } catch (Exception e) { - } - } - return res; - } - - private static final char[] chars = {']', ' ', ':', ' '}; - - private String buildDebugString(int moduleID, int msgID, String message, String prefix) { - - if (map == null) { - return prefix + " [" + moduleID + "] " + msgID + " : " + (message == null ? "" : message); - } - - StringBuilder sBuf = new StringBuilder(prefix).append("["); - - String module = getModuleName(moduleID); - sBuf.append(module != null ? module : String.valueOf(moduleID)); - - sBuf.append(chars, 0, 2); - - if (msgID != 0) { - // map msgID to String - String msg = getMsgValue(msgID); - sBuf.append(msg != null ? msg : String.valueOf(msgID)); - } - - if (message != null) - sBuf.append(chars, 2, 2).append(message); - - return sBuf.toString(); - } - - // public String toString() { - // return bc.toString(); - // } - - private static boolean security = false; - - public static boolean security() { - if (UtilActivator.bc != null) { - try { - Object ssecurity = UtilActivator.bc.getProperty("equinox.security"); - security = ssecurity != null && !"none".equals(ssecurity); - } catch (Throwable t) { - // no security implementation. - } - } else { - try { - Object ssecurity = System.getProperty("equinox.security"); - security = ssecurity != null && !"none".equals(ssecurity); - } catch (Throwable t) { - // no security implementation. - } - } - return security; - } - - String baseName; - boolean synch; - FileOutputStream fos = null; - static String logsdir = null; - - static Queue queue; - static boolean running = false; - static Saver saver; - // boolean date = false; - long lastTime; - - // byte[] bdate; - - public Log(String baseName, boolean synch, BundleContext bc) { - this(bc); - this.baseName = baseName; - this.synch = synch; - if (!synch) - synchronized (Log.class) { - if (queue == null) { - queue = new Queue(20); - saver = new Saver(); - } - } - } - - public void trace(byte[] bytes) { - if (!synch) - synchronized (queue) { - queue.put(this); - queue.put(bytes); - if (!running) { - running = true; - UtilActivator.thMan.execute(saver, "File Log Thread"); - } - } - else - trace(bytes, 0, bytes.length); - } - - public void trace(byte[] bytes, int off, int len) { - if (logsdir == null) - synchronized (Log.class) { - if (logsdir == null) { - try { - logsdir = UtilActivator.bc.getProperty("equinox.logsDir"); - if (logsdir == null) - logsdir = "./logs"; - File logs = new File(logsdir); - logs.mkdirs(); - } catch (Exception exc) { - exc.printStackTrace(); - } - } - } - if (fos == null) - synchronized (this) { - if (fos == null) { - StringBuilder fname = new StringBuilder(logsdir.length() + baseName.length() + 1); - fname.append(logsdir).append(File.separatorChar).append(baseName); - try { - fos = new FileOutputStream(fname.toString(), true); - } catch (IOException ioExc) { - ioExc.printStackTrace(); - } - } - } - try { - fos.write(bytes, off, len); - fos.write(10); - } catch (IOException ioExc) { - ioExc.printStackTrace(); - } - } - - @Override - public void finalize() { - if (fos != null) - try { - fos.close(); - } catch (IOException ioExc) { - ioExc.printStackTrace(); - } - } - - /** - * Checks the auto print on console flag - * - * @return true, if autoPrintOnConsole is enabled - */ - public boolean isAutoPrintOnConsole() { - return autoPrintOnConsole; - } - - /** - * Enables/disables auto printing on console. This flag points whether - * printing on console should be done if log service is not available - * - * @param autoPrintOnConsole - * if true enables auto print on console else disables it. - */ - public void setAutoPrintOnConsole(boolean autoPrintOnConsole) { - this.autoPrintOnConsole = autoPrintOnConsole; - } - - /** - * Returns whether printing on console should be done for errors - * (exceptions) and warnings - * - * @return Returns the error log level flag - if true the error and warnings - * will be print on console - */ - public boolean isLogErrorLevel() { - return logErrorLevel; - } - - private static final byte OPEN_TYPE = 0; - private static final byte GET_SERVICE_TYPE = 1; - private static final byte GET_SYS_SERVICES_TYPE = 2; - - /** - * @see org.eclipse.equinox.internal.util.security.PrivilegedRunner.PrivilegedDispatcher#dispatchPrivileged(int, - * java.lang.Object, java.lang.Object, java.lang.Object, - * java.lang.Object) - */ - @Override - public Object dispatchPrivileged(int type, Object arg1, Object arg2, Object arg3, Object arg4) throws Exception { - switch (type) { - case OPEN_TYPE : - initListener0(); - break; - case GET_SERVICE_TYPE : - return getService0(); - case GET_SYS_SERVICES_TYPE : - break; - } - return null; - } - -}// Log class - -class Saver implements Runnable { - - @Override - public void run() { - byte[] bytes = null; - Log log = null; - while (true) { - synchronized (Log.queue) { - log = (Log) Log.queue.get(); - if (log == null) { - Log.running = false; - bytes = null; - return; - } - bytes = (byte[]) Log.queue.get(); - } - log.trace(bytes, 0, bytes.length); - } - } -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/ref/LogInterface.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/ref/LogInterface.java deleted file mode 100644 index a475402f51..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/ref/LogInterface.java +++ /dev/null @@ -1,110 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.util.ref; - -/** - * - * @author Pavlin Dobrev - * @version 1.0 - */ - -public interface LogInterface { - - public boolean printOnConsole = true; - - public boolean debug = false; - - /** - * Logs error messages. If printOnConsole is true, or if the - * LogService is unavailable, log info is printed on console. - * - * @param str - * Message description of the error. - * @param ex - * Throwable object, containing the stack trace; may be null. - */ - public void error(String str, Throwable ex); - - /** - * Logs warning messages. If printOnConsole is true, or if - * the LogService is unavailable, log info is printed on - * console. - * - * @param str - * Message description of the error. - * @param ex - * Throwable object, containing the stack trace; may be null. - */ - public void warning(String str, Throwable ex); - - /** - * Logs info messages. If printOnConsole is true, or if the - * LogService is unavailable, message is printed on console. - * - * @param str - * Message to be logged. - */ - public void info(String str); - - /** - * Logs debug information if debug flag is true. If - * LogService is unaccessible or printOnConsole flag is true, log info is - * printed on console. - * - * @param str - * Message description. - * @param e - * Throwable object, containing the stack trace; may be null. - */ - public void debug(String str, Throwable e); - - /** - * Releases the Log's resources: ungets LogService, removes the - * ServiceListener from the framework and nulls references. After invocation - * of this method, this Log object can be used no longer. - */ - public void close(); - - /** - * enable/diasable print on console - * - * @param value - * boolean if true enables print on console else disables it - */ - public void setPrintOnConsole(boolean value); - - /** - * enable/diasable loging of debug info - * - * @param value - * boolean if true enables loging of debug info else disables it - */ - public void setDebug(boolean value); - - /** - * Gets the flag, which enables logging debug messages. - * - * @return true if debugging is enabled - */ - public boolean getDebug(); - - /** - * Gets the flag, which enables printing log messages on the console. - * - * @return true if printingon console is enabled - */ - public boolean getPrintOnConsole(); - -}// Log class diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/ref/TimerRef.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/ref/TimerRef.java deleted file mode 100644 index 6020d99501..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/ref/TimerRef.java +++ /dev/null @@ -1,43 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.util.ref; - -import org.eclipse.equinox.internal.util.timer.Timer; -import org.eclipse.equinox.internal.util.timer.TimerListener; - -/** - * @author Pavlin Dobrev - * @version 1.0 - */ - -public class TimerRef { - - public static Timer timer = null; - - public static void notifyAfter(TimerListener listener, long millis, int event) { - - if (timer == null) { - listener.timer(event); - return; - } - timer.addNotifyListener(listener, Thread.NORM_PRIORITY, Timer.ONE_SHOT_TIMER, millis, event); - } - - public static void removeListener(TimerListener listener, int event) { - if (timer == null) - return; - timer.removeListener(listener, event); - } -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/ref/package.html b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/ref/package.html deleted file mode 100644 index 63af46c85f..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/ref/package.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - package - - -The Log Reference class, included in this package, is provided to -isolate the bundle writers from the common and often used operations accompanying -logging in the LogService. The Log class deals on behalf of the bundle, -which instanciates it, while getting reference to and listening for events -from the LogService. -

    A bundle, wishing to use the Log reference, must only pass its bundle -context to the Log's constructor, from there on it can log INFO, ERROR, -and DEBUG messages in the LogService, without caring for the availability -even of the Log Bundle. -

    If there are changes in the state of the LogService (e.g. it is REGISTERED, -or UNREGISTERING), the Log class cares to get or unget reference to it. -While the LogService is unavailable, no matter what is the reason for this, -the log information is printed on the server's console. -

    When the Log object should be released, (e.g. in case the bundle owner -will be stopped) the resources, hold by the Log object should also be released: -thus including ungetting LogService reference and removal of the ServiceListener -from the framework. close() method does all the necessary -clean up of ungetting LogService, removal of ServiceListener and -internal variable clean up. -

    When multiple LogServices are available in the service registry, the -Log class gets reference to only one of them. If a bundle wishes to publish -the log information to all of the available LogServices, it can take advantage -of the org.eclipse.equinox.util.tracker.ServiceTracker utility. -

    The Log Reference class implements the LogInterface class. -
      - - diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/security/PrivilegedRunner.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/security/PrivilegedRunner.java deleted file mode 100644 index a6a64287fb..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/security/PrivilegedRunner.java +++ /dev/null @@ -1,172 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2018 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.util.security; - -import java.security.*; -import org.eclipse.equinox.internal.util.pool.ObjectCreator; -import org.eclipse.equinox.internal.util.pool.ObjectPool; - -/** - * A simple wrapper for executing privileged actions. - * - * @author Valentin Valchev - * @author Pavlin Dobrev - * @version 1.0 - */ - -public final class PrivilegedRunner implements ObjectCreator { - - private static ObjectPool POOL; - - static { - try { - POOL = new ObjectPool(new PrivilegedRunner(), 5, 10); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /* prevent instantiations */ - private PrivilegedRunner() { - } - - /** - * Same as the longer doPrivileged method, but fills in the first parameter - * only. All other parameters are set to null. - * - * @param context - * the access context - * @param dispatcher - * the dispatcher which should be called - * @param type - * the type of the action - used in the dispatcher - * @param arg1 - * a parameter received by the dispatcher - * @see #doPrivileged(Object, PrivilegedDispatcher, int, Object) - * @return the object returned from the execution - * @throws Exception - * if the dispatcher fails - */ - public static final Object doPrivileged(Object context, PrivilegedDispatcher dispatcher, int type, Object arg1) throws Exception { - return doPrivileged(context, dispatcher, type, arg1, null, null, null); - } - - /** - * Performs a privileged action. The method calls the dispatcher inside the - * privileged call passing it the same parameters that were passed to this - * method. - * - * @param context - * the access context - * @param dispatcher - * the dispatcher which should be called - * @param type - * the type of the action - used in the dispatcher - * @param arg1 - * a parameter received by the dispatcher - * @param arg2 - * a parameter received by the dispatcher - * @param arg3 - * a parameter received by the dispatcher - * @param arg4 - * a parameter received by the dispatcher - * @return the object returned from the execution - * @throws Exception - * if the dispatcher fails - */ - public static final Object doPrivileged(Object context, PrivilegedDispatcher dispatcher, int type, Object arg1, Object arg2, Object arg3, Object arg4) throws Exception { - /* init runner */ - PA runner = (PA) POOL.getObject(); - runner.dispatcher = dispatcher; - runner.type = type; - runner.arg1 = arg1; - runner.arg2 = arg2; - runner.arg3 = arg3; - runner.arg4 = arg4; - - try { - if (System.getSecurityManager() != null) { - /* - * if security manager is set - then privileged execution is - * started - */ - if (context != null) { - return AccessController.doPrivileged(runner, (AccessControlContext) context); - } - return AccessController.doPrivileged(runner); - } - /* if no security manager is set - simply run the action */ - return runner.run(); - } catch (PrivilegedActionException e) { - throw e.getException(); - } finally { - runner.recycle(); - POOL.releaseObject(runner); - } - } - - @Override - public Object getInstance() throws Exception { - return new PA(); - } - - /** - * This dispatcher is the handler that is called within the privileged call. - * It should dispatch and perform the requested actions depending on the - * action type and using the given job parameters. - * - * @author Valentin Valchev - * @version $Revision: 1.1 $ - */ - public static interface PrivilegedDispatcher { - - /** - * @param type - * the type of the action - * @param arg1 - * parameter 1 - depends on the action type - * @param arg2 - * parameter 2 - depends on the action type - * @param arg3 - * parameter 3 - depends on the action type - * @param arg4 - * parameter 4 - depends on the action type - * @return an object which should be returned from the - * PrivilegedAction.run() method - * @throws Exception - * on error - */ - Object dispatchPrivileged(int type, Object arg1, Object arg2, Object arg3, Object arg4) throws Exception; - } - - static class PA implements PrivilegedExceptionAction { - - int type; - Object arg1, arg2, arg3, arg4; - PrivilegedDispatcher dispatcher; - - void recycle() { - dispatcher = null; - type = -1; - arg1 = arg2 = arg3 = arg4 = null; - } - - @Override - public Object run() throws Exception { - return dispatcher.dispatchPrivileged(type, arg1, arg2, arg3, arg4); - } - } - -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/security/SecurityUtil.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/security/SecurityUtil.java deleted file mode 100644 index 84936360b1..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/security/SecurityUtil.java +++ /dev/null @@ -1,756 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2018 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.util.security; - -import java.io.*; -import java.util.Dictionary; -import org.eclipse.equinox.internal.util.UtilActivator; -import org.osgi.framework.*; - -/** - * Utility class to execute common privileged code. - * - * @author Valentin Valchev - * @author Pavlin Dobrev - * @version 1.0 - */ - -public final class SecurityUtil implements PrivilegedRunner.PrivilegedDispatcher { - - private Object controlContext; - - private static final int SYSTEM_GET_PROPERTY = 41; - private static final int CREATE_THREAD = 42; - private static final int CLASS_FOR_NAME = 43; - private static final int SYSTEM_SET_PROPERTY = 44; - - private static final int FILE_BASE = 50; - private static final int FILE_GET_INPUT_STREAM = FILE_BASE + 0; - private static final int FILE_GET_OUTPUT_STREAM = FILE_BASE + 1; - private static final int FILE_LENGTH = FILE_BASE + 2; - private static final int FILE_EXISTS = FILE_BASE + 3; - private static final int FILE_ISDIR = FILE_BASE + 4; - private static final int FILE_LAST_MODIFIED = FILE_BASE + 5; - private static final int FILE_LIST = FILE_BASE + 6; - private static final int FILE_DELETE = FILE_BASE + 7; - private static final int FILE_RENAME = FILE_BASE + 8; - private static final int FILE_GET_RANDOM_ACCESS_FILE = FILE_BASE + 9; - - private static final int SERVICE_BASE = 60; - private static final int SERVICE_GET_REFERENCE = SERVICE_BASE + 0; - private static final int SERVICE_GET_SERVICE = SERVICE_BASE + 1; - private static final int SERVICE_REG_CLASS = SERVICE_BASE + 2; - private static final int SERVICE_REG_CLASSES = SERVICE_BASE + 3; - - private static final int BUNDLE_BASE = 70; - private static final int BUNDLE_GET_LOCATION = BUNDLE_BASE + 0; - private static final int BUNDLE_GET_HEADERS = BUNDLE_BASE + 1; - private static final int BUNDLE_START = BUNDLE_BASE + 2; - private static final int BUNDLE_STOP = BUNDLE_BASE + 3; - private static final int BUNDLE_UNINSTALL = BUNDLE_BASE + 4; - private static final int BUNDLE_UPDATE = BUNDLE_BASE + 5; - private static final int BUNDLE_UPDATE_IS = BUNDLE_BASE + 6; - - /** - * Constructs a new SecureAction object. The constructed SecureAction object - * uses the caller's AccessControlContext to perform security checks - */ - public SecurityUtil() { - // save the control context to be used. - SecurityManager sm = System.getSecurityManager(); - if (sm != null) { - controlContext = sm.getSecurityContext(); - } - } - - /** - * Creates a new Thread from a Runnable. Same as calling new - * Thread(target,name). - * - * @param target - * the Runnable to create the Thread from. - * @param name - * The name of the Thread. - * @return The new Thread - */ - public Thread createThread(final Runnable target, final String name) { - try { - return (Thread) PrivilegedRunner.doPrivileged(controlContext, this, CREATE_THREAD, target, name, null, null); - } catch (Exception t) { - throw new RuntimeException(t.getMessage()); - } - } - - /** - * Returns a Class. Same as calling Class.forName(name) - * - * @param name - * the name of the class. - * @return a Class - * @throws ClassNotFoundException - */ - public Class forName(final String name) throws ClassNotFoundException { - try { - return (Class) PrivilegedRunner.doPrivileged(controlContext, this, CLASS_FOR_NAME, name, null, null, null); - } catch (ClassNotFoundException t) { - throw t; - } catch (Exception t) { - throw new RuntimeException(t.getMessage()); - } - } - - /** - * Returns a system property. Same as calling System.getProperty(String). - * - * @param property - * the property key. - * @return the value of the property or null if it does not exist. - */ - public String getProperty(final String property) { - if (property == null) { - throw new NullPointerException("property is null"); - } - String ret; - try { - ret = (String) PrivilegedRunner.doPrivileged(controlContext, this, SYSTEM_GET_PROPERTY, property, null, null, null); - } catch (Exception t) { - ret = null; - } - return ret; - } - - /** - * Returns a system property. Same as calling - * System.getProperty(String,String). - * - * @param property - * the property key. - * @param def - * the default value if the property key does not exist. - * @return the value of the property or the default value if the property - * does not exist. - */ - public String getProperty(final String property, final String def) { - String ret = getProperty(property); - return ret != null ? ret : def; - } - - /** - * Returns a boolean system property. Same as calling - * Boolean.getBoolean(String). - * - * @param property - * the property key. - * @return the value of the property or false, if not set - */ - public boolean getBooleanProperty(final String property) { - String ret = getProperty(property); - return ret != null ? Boolean.valueOf(ret).booleanValue() : false; - } - - /** - * Sets a system property. Same as System.setProperty() - * - * @param key - * the name of the property - * @param value - * the value of the system property - * @return the old value of the property, or null - */ - public String setProperty(final String key, final String value) { - if (key == null) { - throw new NullPointerException("key is null"); - } - if (value == null) { - throw new NullPointerException("key is null"); - } - try { - return (String) PrivilegedRunner.doPrivileged(controlContext, this, SYSTEM_SET_PROPERTY, key, value, null, null); - } catch (Exception t) { - throw new RuntimeException(t.getMessage()); - } - } - - /** - * Creates a FileInputStream from a File. Same as calling new - * FileInputStream(File). - * - * @param file - * the File to create a FileInputStream from. - * @return The FileInputStream. - * @throws FileNotFoundException - * if the File does not exist. - */ - public FileInputStream getFileInputStream(final File file) throws FileNotFoundException { - try { - return (FileInputStream) PrivilegedRunner.doPrivileged(controlContext, this, FILE_GET_INPUT_STREAM, file, null, null, null); - } catch (FileNotFoundException t) { - throw t; - } catch (Exception t) { - throw new RuntimeException(t.getMessage()); - } - } - - /** - * Creates a random access file - * - * @param file - * the file object - * @param mode - * the open mode - * @return the random seekable file object - * @throws FileNotFoundException - * if the File does not exist - */ - public RandomAccessFile getRandomAccessFile(final File file, final String mode) throws FileNotFoundException { - try { - return (RandomAccessFile) PrivilegedRunner.doPrivileged(controlContext, this, FILE_GET_RANDOM_ACCESS_FILE, file, mode, null, null); - } catch (FileNotFoundException t) { - throw t; - } catch (Exception t) { - throw new RuntimeException(t.getMessage()); - } - } - - /** - * Creates a FileInputStream from a File. Same as calling new - * FileOutputStream(File,boolean). - * - * @param file - * the File to create a FileOutputStream from. - * @param append - * indicates if the OutputStream should append content. - * @return The FileOutputStream. - * @throws FileNotFoundException - * if the File does not exist. - */ - public FileOutputStream getFileOutputStream(final File file, final boolean append) throws FileNotFoundException { - try { - return (FileOutputStream) PrivilegedRunner.doPrivileged(// - controlContext, this, FILE_GET_OUTPUT_STREAM, file, // - append ? Boolean.TRUE : Boolean.FALSE, null, null); - } catch (FileNotFoundException t) { - throw t; - } catch (Exception t) { - throw new RuntimeException(t.getMessage()); - } - } - - /** - * Returns true if a file exists, otherwise false is returned. Same as - * calling file.exists(). - * - * @param file - * a file object - * @return true if a file exists, otherwise false - */ - public boolean exists(final File file) { - try { - return ((Boolean) PrivilegedRunner.doPrivileged(controlContext, this, FILE_EXISTS, file, null, null, null)).booleanValue(); - } catch (Exception t) { - throw new RuntimeException(t.getMessage()); - } - } - - /** - * Returns true if a file is a directory, otherwise false is returned. Same - * as calling file.isDirectory(). - * - * @param file - * a file object - * @return true if a file is a directory, otherwise false - */ - public boolean isDirectory(final File file) { - try { - return ((Boolean) PrivilegedRunner.doPrivileged(controlContext, this, FILE_ISDIR, file, null, null, null)).booleanValue(); - } catch (Exception t) { - throw new RuntimeException(t.getMessage()); - } - } - - /** - * Returns the length of a file. Same as calling file.length(). - * - * @param file - * a file object - * @return the length of a file or -1 if file doesn't exists - */ - public long length(final File file) { - try { - return ((Long) PrivilegedRunner.doPrivileged(controlContext, this, FILE_LENGTH, file, null, null, null)).longValue(); - } catch (Throwable t) { - return -1L; - } - } - - /** - * Returns a file's last modified stamp. Same as calling - * file.lastModified(). - * - * @param file - * a file object - * @return a file's last modified stamp or -1 if file doesn't exists - */ - public long lastModified(final File file) { - try { - return ((Long) PrivilegedRunner.doPrivileged(controlContext, this, FILE_LAST_MODIFIED, file, null, null, null)).longValue(); - } catch (Exception t) { - return -1L; - } - } - - /** - * Returns a file's list. Same as calling file.list(). - * - * @param file - * a file object - * @return a file's list. - */ - public String[] list(final File file) { - try { - return (String[]) PrivilegedRunner.doPrivileged(controlContext, this, FILE_LIST, file, null, null, null); - } catch (Exception t) { - return null; - } - } - - /** - * Deletes the specified file. Same as File.delete() - * - * @param file - * the file object - * @return if delete succeeded - */ - public boolean delete(final File file) { - try { - return ((Boolean) PrivilegedRunner.doPrivileged(controlContext, this, FILE_DELETE, file, null, null, null)).booleanValue(); - } catch (Exception t) { - throw new RuntimeException(t.getMessage()); - } - } - - /** - * Renames the source file to the target name. Same as File.renameTo(File) - * - * @param source - * the file object, that will be renamed - * @param target - * the target file name - * @return if rename succeeded - */ - public boolean renameTo(final File source, final File target) { - try { - return ((Boolean) PrivilegedRunner.doPrivileged(controlContext, this, FILE_RENAME, source, target, null, null)).booleanValue(); - } catch (Exception t) { - throw new RuntimeException(t.getMessage()); - } - } - - /** - * Gets a service object. Same as calling context.getService(reference) - * - * @param reference - * the ServiceReference - * @param context - * the BundleContext - * @return a service object - */ - public Object getService(final ServiceReference reference, final BundleContext context) { - if (context == null) { - throw new NullPointerException("Context is null"); - } - if (reference == null) { - throw new NullPointerException("Reference is null"); - } - try { - return PrivilegedRunner.doPrivileged(controlContext, this, SERVICE_GET_SERVICE, context, reference, null, null); - } catch (Exception t) { - throw new RuntimeException(t.getMessage()); - } - } - - /** - * Gets a reference for the specified service(s). Same as calling - * context.getServiceReferences(class, filter) - * - * @param clazz - * the name of the requested service class - * @param filter - * an LDAP filter - * @param context - * the BundleContext - * @return a list of reference or null - * @throws InvalidSyntaxException - * if filter is not correct - */ - public ServiceReference[] getServiceReferences(String clazz, String filter, BundleContext context) throws InvalidSyntaxException { - if (context == null) { - throw new NullPointerException("Context is null"); - } - if (clazz == null && filter == null) { - throw new NullPointerException("Either filter or clazz parameter should not be null"); - } - try { - return (ServiceReference[]) PrivilegedRunner.doPrivileged(controlContext, this, SERVICE_GET_REFERENCE, context, clazz, filter, null); - } catch (InvalidSyntaxException e) { - throw e; - } catch (Exception t) { - throw new RuntimeException(t.getMessage()); - } - } - - /** - * Registers a service. Same as BundleContext.register(clazz, service, - * properties); - * - * @param clazz - * the class name of the service - * @param service - * the service instance - * @param properties - * the properties. - * @param context - * the bundle context - * @return a service registration - */ - public ServiceRegistration registerService(String clazz, Object service, Dictionary properties, BundleContext context) { - if (context == null) { - throw new NullPointerException("Context is null"); - } - if (service == null) { - throw new NullPointerException("Service is null"); - } - if (clazz == null) { - throw new NullPointerException("Class name is null"); - } - try { - return (ServiceRegistration) PrivilegedRunner.doPrivileged(controlContext, this, SERVICE_REG_CLASS, context, clazz, service, properties); - } catch (Exception t) { - throw new RuntimeException(t.getMessage()); - } - } - - /** - * Registers a instance that implements many services. Same as - * BundleContext.register(clases, service, properties); - * - * @param classes - * the class names of the service - * @param service - * the service instance - * @param properties - * the properties. - * @param context - * the bundle context - * @return a service registration - */ - public ServiceRegistration registerService(String[] classes, Object service, Dictionary properties, BundleContext context) { - if (context == null) { - throw new NullPointerException("Context is null"); - } - if (service == null) { - throw new NullPointerException("Service is null"); - } - if (classes == null) { - throw new NullPointerException("Class names are null"); - } - try { - return (ServiceRegistration) PrivilegedRunner.doPrivileged(controlContext, this, SERVICE_REG_CLASSES, context, classes, service, properties); - } catch (Exception t) { - throw new RuntimeException(t.getMessage()); - } - } - - /** - * Gets the location of the bundle. Same as Bundle.getLocation(). - * - * @param bundle - * the bundle - * @return the bundle location - */ - public String getLocation(Bundle bundle) { - try { - return (String) PrivilegedRunner.doPrivileged(controlContext, this, BUNDLE_GET_LOCATION, bundle, null, null, null); - } catch (Exception t) { - throw new RuntimeException(t.getMessage()); - } - } - - /** - * Gets the bundle headers. Same as Bundle.getHeaders(). - * - * @param bundle - * the bundle - * @return the bundle location - */ - public Dictionary getHeaders(Bundle bundle) { - try { - return (Dictionary) PrivilegedRunner.doPrivileged(controlContext, this, BUNDLE_GET_HEADERS, bundle, null, null, null); - } catch (Exception t) { - throw new RuntimeException(t.getMessage()); - } - } - - /** - * Starts the bundle. Same as Bundle.start() - * - * @param bundle - * the bundle - * @throws BundleException - */ - public void start(Bundle bundle) throws BundleException { - try { - PrivilegedRunner.doPrivileged(controlContext, this, BUNDLE_START, bundle, null, null, null); - } catch (BundleException t) { - throw t; - } catch (Exception t) { - throw new RuntimeException(t.getMessage()); - } - } - - /** - * Stops the bundle. Same as Bundle.stop() - * - * @param bundle - * the bundle - * @throws BundleException - */ - public void stop(Bundle bundle) throws BundleException { - try { - PrivilegedRunner.doPrivileged(controlContext, this, BUNDLE_STOP, bundle, null, null, null); - } catch (BundleException t) { - throw t; - } catch (Exception t) { - throw new RuntimeException(t.getMessage()); - } - } - - /** - * Un-installs the bundle. Same as Bundle.uninstall() - * - * @param bundle - * the bundle - * @throws BundleException - */ - public void uninstall(Bundle bundle) throws BundleException { - try { - PrivilegedRunner.doPrivileged(controlContext, this, BUNDLE_UNINSTALL, bundle, null, null, null); - } catch (BundleException t) { - throw t; - } catch (Exception t) { - throw new RuntimeException(t.getMessage()); - } - } - - /** - * Updates the bundle. Same as Bundle.update() - * - * @param bundle - * the bundle - * @throws BundleException - */ - public void update(Bundle bundle) throws BundleException { - try { - PrivilegedRunner.doPrivileged(controlContext, this, BUNDLE_UPDATE, bundle, null, null, null); - } catch (BundleException t) { - throw t; - } catch (Exception t) { - throw new RuntimeException(t.getMessage()); - } - } - - /** - * Updates the bundle from stream. Same as Bundle.update(stream) - * - * @param bundle - * the bundle - * @param is - * the stream - * @throws BundleException - */ - public void update(Bundle bundle, InputStream is) throws BundleException { - try { - PrivilegedRunner.doPrivileged(controlContext, this, BUNDLE_UPDATE_IS, bundle, is, null, null); - } catch (BundleException t) { - throw t; - } catch (Exception t) { - throw new RuntimeException(t.getMessage()); - } - } - - /** - * Performs a privileged action using the current security context. - * The method calls the dispatcher inside the privileged call passing it the - * same parameters that were passed to this method. - * - * @param dispatcher - * the dispatcher which should be called - * @param type - * the type of the action - used in the dispatcher - * @param arg1 - * a parameter received by the dispatcher - * @param arg2 - * a parameter received by the dispatcher - * @param arg3 - * a parameter received by the dispatcher - * @param arg4 - * a parameter received by the dispatcher - * @return the object returned from the execution - * @throws Exception - * if the dispatcher fails - * @see PrivilegedRunner#doPrivileged(Object, - * org.eclipse.equinox.internal.util.security.PrivilegedRunner.PrivilegedDispatcher, - * int, Object, Object, Object, Object) - */ - public Object doPrivileged(PrivilegedRunner.PrivilegedDispatcher dispatcher, int type, Object arg1, Object arg2, Object arg3, Object arg4) throws Exception { - return PrivilegedRunner.doPrivileged(controlContext, dispatcher, type, arg1, arg2, arg3, arg4); - } - - /** - * Performs a privileged action using the current security context. - * The method calls the dispatcher inside the privileged call passing it the - * same parameters that were passed to this method. - * - * @param dispatcher - * the dispatcher which should be called - * @param type - * the type of the action - used in the dispatcher - * @param arg1 - * a parameter received by the dispatcher - * @param arg2 - * a parameter received by the dispatcher - * @param arg3 - * a parameter received by the dispatcher - * @return the object returned from the execution - * @throws Exception - * if the dispatcher fails - * @see PrivilegedRunner#doPrivileged(Object, - * org.eclipse.equinox.internal.util.security.PrivilegedRunner.PrivilegedDispatcher, - * int, Object, Object, Object, Object) - */ - public Object doPrivileged(PrivilegedRunner.PrivilegedDispatcher dispatcher, int type, Object arg1, Object arg2, Object arg3) throws Exception { - return PrivilegedRunner.doPrivileged(controlContext, dispatcher, type, arg1, arg2, arg3, null); - } - - /** - * Performs a privileged action using the current security context. - * The method calls the dispatcher inside the privileged call passing it the - * same parameters that were passed to this method. - * - * @param dispatcher - * the dispatcher which should be called - * @param type - * the type of the action - used in the dispatcher - * @param arg1 - * a parameter received by the dispatcher - * @param arg2 - * a parameter received by the dispatcher - * @return the object returned from the execution - * @throws Exception - * if the dispatcher fails - * @see PrivilegedRunner#doPrivileged(Object, - * org.eclipse.equinox.internal.util.security.PrivilegedRunner.PrivilegedDispatcher, - * int, Object, Object, Object, Object) - */ - public Object doPrivileged(PrivilegedRunner.PrivilegedDispatcher dispatcher, int type, Object arg1, Object arg2) throws Exception { - return PrivilegedRunner.doPrivileged(controlContext, dispatcher, type, arg1, arg2, null, null); - } - - /** - * Performs a privileged action using the current security context. - * The method calls the dispatcher inside the privileged call passing it the - * same parameters that were passed to this method. - * - * @param dispatcher - * the dispatcher which should be called - * @param type - * the type of the action - used in the dispatcher - * @param arg1 - * a parameter received by the dispatcher - * @return the object returned from the execution - * @throws Exception - * if the dispatcher fails - * @see PrivilegedRunner#doPrivileged(Object, - * org.eclipse.equinox.internal.util.security.PrivilegedRunner.PrivilegedDispatcher, - * int, Object, Object, Object, Object) - */ - public Object doPrivileged(PrivilegedRunner.PrivilegedDispatcher dispatcher, int type, Object arg1) throws Exception { - return PrivilegedRunner.doPrivileged(controlContext, dispatcher, type, arg1, null, null, null); - } - - @SuppressWarnings("unchecked") - @Override - public Object dispatchPrivileged(int type, Object arg1, Object arg2, Object arg3, Object arg4) throws Exception { - switch (type) { - case SYSTEM_GET_PROPERTY : - return UtilActivator.bc.getProperty((String) arg1); - case CREATE_THREAD : - return new Thread((Runnable) arg1, (String) arg2); - case CLASS_FOR_NAME : - return Class.forName((String) arg1); - case SYSTEM_SET_PROPERTY : - return System.getProperties().put(arg1, arg2); - case FILE_GET_INPUT_STREAM : - return new FileInputStream((File) arg1); - case FILE_GET_OUTPUT_STREAM : - return new FileOutputStream(((File) arg1).getAbsolutePath(), ((Boolean) arg2).booleanValue()); - case FILE_LENGTH : - return Long.valueOf(((File) arg1).length()); - case FILE_EXISTS : - return ((File) arg1).exists() ? Boolean.TRUE : Boolean.FALSE; - case FILE_ISDIR : - return ((File) arg1).isDirectory() ? Boolean.TRUE : Boolean.FALSE; - case FILE_LAST_MODIFIED : - return Long.valueOf(((File) arg1).lastModified()); - case FILE_LIST : - return ((File) arg1).list(); - case FILE_DELETE : - return ((File) arg1).delete() ? Boolean.TRUE : Boolean.FALSE; - case FILE_RENAME : - return ((File) arg1).renameTo(((File) arg2)) ? Boolean.TRUE : Boolean.FALSE; - case FILE_GET_RANDOM_ACCESS_FILE : - return new RandomAccessFile((File) arg1, (String) arg2); - case SERVICE_GET_REFERENCE : - return ((BundleContext) arg1).getServiceReferences((String) arg2, (String) arg3); - case SERVICE_GET_SERVICE : - return ((BundleContext) arg1).getService((ServiceReference) arg2); - case SERVICE_REG_CLASS : - return ((BundleContext) arg1).registerService((String) arg2, arg3, (Dictionary) arg4); - case SERVICE_REG_CLASSES : - return ((BundleContext) arg1).registerService((String[]) arg2, arg3, (Dictionary) arg4); - case BUNDLE_GET_LOCATION : - return ((Bundle) arg1).getLocation(); - case BUNDLE_GET_HEADERS : - return ((Bundle) arg1).getHeaders(); - case BUNDLE_START : - ((Bundle) arg1).start(); - break; - case BUNDLE_STOP : - ((Bundle) arg1).stop(); - break; - case BUNDLE_UNINSTALL : - ((Bundle) arg1).uninstall(); - break; - case BUNDLE_UPDATE : - ((Bundle) arg1).update(); - break; - case BUNDLE_UPDATE_IS : - ((Bundle) arg1).update((InputStream) arg2); - break; - } - return null; - } - -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/security/package.html b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/security/package.html deleted file mode 100644 index 0a41244ec8..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/security/package.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - -org.eclipse.equinox.util.jar - - -

    The package provides additional functionality to java.util.jar packages.

    - - diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/threadpool/ThreadContext.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/threadpool/ThreadContext.java deleted file mode 100644 index 3307538360..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/threadpool/ThreadContext.java +++ /dev/null @@ -1,38 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.util.threadpool; - -/** - * Gives access to the user-provided Runnable object of the thread. All threads - * created by the ThreadPoolManager service implement that interface, so that in - * a method called by such a thread you can get the Runnable object provided in - * - * ThreadPoolManager.execute(Runnable job, String threadName) - * with the following line: - *

    - *

      Runnable runnable = ((ThreadContext) Thread.currentThread()).getRunnable();
    - * - * @author Pavlin Dobrev - * @version 1.0 - */ - -public interface ThreadContext { - /** - * Returns the Runnable object provided in the - * ThreadPoolManager.execute(Runnable job, String threadName) - * method. - */ - public Runnable getRunnable(); -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/threadpool/ThreadPoolFactory.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/threadpool/ThreadPoolFactory.java deleted file mode 100644 index 06740f8d8b..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/threadpool/ThreadPoolFactory.java +++ /dev/null @@ -1,45 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.util.threadpool; - - -/** - * This interface is registered as a service in the framework. It allows bundles - * to specify the amount of threads they will need for their normal work. A - * bundle may be executing no more than a specified number of threads at the - * same time. This interface is provided in order to prevent a scenario where - * one bundle allocates all threads, thus freezing all other thread requestors. - * - * @author Pavlin Dobrev - * @version 1.0 - */ - -public interface ThreadPoolFactory { - - /** - * Gets reference to the thread pool, by specifying how many threads will be - * simultaneously engaged by the requesting bundle. All execution requests - * above this number are put in a waiting queue until a threads is free. - * - * @param poolSize - * count of threads that can be simultaneously used by the - * requestor - * @param sizeIsInPercents - * indicates if the poolSize is percent of the maximum number of - * threads in the pool (true) or is a fixed count (false) - * @return reference to the thread pool manager - */ - public ThreadPoolManager getThreadPool(int poolSize, boolean sizeIsInPercents); -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/threadpool/ThreadPoolManager.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/threadpool/ThreadPoolManager.java deleted file mode 100644 index 8c0d2197df..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/threadpool/ThreadPoolManager.java +++ /dev/null @@ -1,68 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.util.threadpool; - -/** - * The ThreadPoolManager is responsible for the management of a thread pool, - * whose purpose is to provide created and started threads to clients, using - * multiple but short-lived threads. - * - * The ThreadPoolManager's main task is to accept Runnable objects, to pass them - * to threads from the pool, and after the job is finished - to return back the - * threads in pool. - * - * @author Pavlin Dobrev - * @version 1.0 - */ - -public interface ThreadPoolManager { - - /** - * Executes the job, by passing it to an idle thread process. If no idle - * threads are available, the job is moved to the pool of waiting jobs, and - * will be executed later. - * - * @param job - * job to be executed - * @param threadName - * name of job; the name will be assigned to the thread, in which - * the job will be processed - * @exception IllegalArgumentException - * If any of the arguments is null - */ - public void execute(Runnable job, String threadName) throws IllegalArgumentException; - - /** - * Executes the job, by passing it to an idle thread process. If no idle - * threads are available, the job is moved to the pool of waiting jobs, and - * will be executed later. - * - * @param job - * Runnable job to be executed - * @param priority - * the priority of the job - * @param threadName - * name of job; the name will be assigned to the thread, in which - * the job will be processed - * @exception IllegalArgumentException - * If any of the arguments is null - */ - public void execute(Runnable job, int priority, String threadName) throws IllegalArgumentException; - - /** - * All idle threads exit. New threads will be created when it is necessary. - */ - public void reset(); -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/threadpool/package.html b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/threadpool/package.html deleted file mode 100644 index d3b4098221..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/threadpool/package.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - ThreadPool - - - - - - -

    This package contains the ThreadPoolManager -interface, which is the face of the ThreadPoolManager Service. The -task of the ThreadPoolManager is to provide created and started -threads to its clients. The idea is to be saved time for the creation -and starting of threads, when multiple, short-lived threads are used. -

    -

    At startup the ThreadPoolManager creates and starts a given number -of threads put in waiting state. While working new threads can be -created but the number of all threads created by the -ThreadPoolManager can not exceed a fixed limit. -

    -

    When a client passes a job for execution to the ThreadPoolManager, -it immediately tries to run the job. If there is an idle thread in -the pool - the job is run, otherwise the job is put in waiting state -until a thread finishes its current job and is ready to accept -another one. -

    -

    If the Runnable objects, passed to the ThreadPoolManager do not -face the requirements of short-living, there is a possibility to slow -down the work of thread processing as many jobs can be put in waiting -state. Another problem appears when processing bad-written Runnable -objects (never exiting their run method), then the number of free -threads decreases, the number of already running threads will reach -the limit, and it may occur that no more threads can be processed. -

    -

    Here is a simple example of a job -(RunnableSample) that is passed to the ThreadPoolManager for -execution. The job is simple and common: it waits for an event to -occur to process an operation; if the event does not occur for a -given time period (1 second in our example) another operation is -processed. In the example below the event is the "check" -flag to be turned on, and the operations are "System.out.println". -
      -

    - - - - -
    -
    public - class RunnableSample implements Runnable {
      - private Object synch;
      - private String name;
      - private boolean check;
      -
      - //Constructs a RunnableSample.
      - public RunnableSample(String name) {
        - this.name = name;
        - check = false;
        - synch = new Object();
      - }
      -
      //This - method is executed by the ThreadPoolManager.
      - public void run() {
        - synchronized (synch) {
          - System.out.println("Job  "  + name + " - starts running!");
          - if (!check) {
            - try {
              - synch.wait(1000);
            - } catch (InterruptedException e) {
            - }
          - }
          - if (check) {
            - System.out.println("OK: CHECKED");
          - } else {
            - System.out.println("NOT OK: NOT CHECKED"); -
          - }
        - }
      - } -
    -
      - //Turns the check flag on. 
      - public void checkIt() {
        - synchronized (synch) {
          - check = true;
          - synch.notify();
        - }
      - } -
    -
      - //Wakes up this Runnable object, causing exiting its run method. -
      public - void stopIt() {
        - synchronized (synch) {
          - synch.notify();
        - }
      - }
    } -
     
    -
    -

    The sample code , which follows, gets -reference to the ThreadPoolManager, and passes a RunnableSample job -for execution.
      -

    - - - - -
    -

    import - org.eclipse.equinox.util.threadpool.ThreadPoolManager; -
    import - org.osgi.framework.BundleContext;
    import - org.osgi.framework.ServiceReference;
      - ...
      - BundleContext bc;
      - ServiceReference thManRef;
      - ThreadPoolManager thMan;
      - ... -

    -

      thManRef - = - bc.getServiceReference("org.eclipse.equinox.util.threadpool.ThreadPoolManager");  -
      thMan = - (ThreadPoolManager) bc.getService(thManRef);
      - String  jobName = "RunnableSample"; -
      - //ThreadPoolManager will execute the job, as soon as a free thread - is available
      - thMan.execute(new RunnableSample(jobName), jobName); -
      ... -
     

    -
    -

    The ThreadPoolManager has two system properties, which define the -limits of the thread pool: -

    -
      -
    • equinox.util.threadpool.minThreads - : default value: 4; this property defines the minimum number of idle - threads. The property cannot be 1 - if it is set to 1, automatically - it is turned to 2. -

      -
    • equinox.util.threadpool.maxThreads : default value: 48; - this property specifies the upper limit for the number of threads - in the thread pool. The real limit is calculated using the formula: - (((int)(max/min)) * min).

      -
    • equinox.util.threadpool.autoMaximum : default value: - false; if this property is set to true the then if there are more - then 10 waitng jobs the maximum can be exceeded.

      -
    • equinox.util.threadpool.ignoreMaximum : default value: - false; if this property is set to true, the Thread Pool Manager will - not regard the maxThread property and will always create new threads - when there are no available.

      -
    • equinox.util.threadpool.useNames : default value: false; - if this property is set to true, allows assigning names to threads, - executing runnable jobs.

      -
    • equinox.util.threadpool.percent : default value: 30; this - property specifies what default percent of the maximum number of - threads a bundle can occupy from the thread pool.

      - -
    - - \ No newline at end of file diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/timer/Timer.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/timer/Timer.java deleted file mode 100644 index 366ab1752d..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/timer/Timer.java +++ /dev/null @@ -1,197 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.util.timer; - -/** - * Timer service provides means for sending notifications at given time periods - * to each listener registered with Timer. To receive notifications, a module - * should first register a TimerListener, associated with an (int) event and a - * time period. When the time period passes, TimerListener's timer method is - * invoked, and the listener is removed from the queue with the waiting event - * notifications. - * - * @see TimerListener - * - * @author Pavlin Dobrev - * @version 1.0 - */ - -public interface Timer { - - /** - * Constant indicates that timer listener will be notified only once and - * afterwards discarded. - */ - public int ONE_SHOT_TIMER = 0; - - /** - * Constant indicates that timer listener will be notified periodically at a - * given time interval. - */ - public int PERIODICAL_TIMER = 1; - - /** - * Constant indicates that timer listener will be notified only once. Timer - * implementation would do its best to execute the notification with minimum - * possible delay. - */ - public int ONE_SHOT_TIMER_NO_DELAY = 2; - - /** - * Constant indicates that timer listener will be notified periodically at a - * given time interval. Timer implementation would do its best to execute - * the notification with minimum possible delay. - */ - public int PERIODICAL_TIMER_NO_DELAY = 3; - - /** - * Adds new TimerListener to the timer event quueue. The listener will be - * notified after the given timePeriod with specified - * event. If the event queue already contains a listener and - * event pair equal to those being passed, then the old notification object - * is removed from queue and the new data takes its place. - * - * @param listener - * the listener which will be notified after the given time - * period - * @param timePeriod - * time period in milliseconds after which the listener will be - * notified - * @param event - * which will be supplied to the listener when it is notified - * - * @exception IllegalArgumentException - * if time period is not positive - * @deprecated - */ - @Deprecated - public void notifyAfterMillis(TimerListener listener, long timePeriod, int event) throws IllegalArgumentException; - - /** - * Adds new TimerListener to the timer event quueue. The listener will be - * notified after the given timePeriod with specified - * event. If the event queue already contains a listener and - * event pair equal to those being passed, then the old notification object - * is removed from queue and the new data takes its place. - * - * @param listener - * the listener which will be notified after the given time - * period - * @param priority - * priority of executing thread - * @param timePeriod - * time period in milliseconds after which the listener will be - * notified - * @param event - * which will be supplied to the listener when it is notified - * - * @exception IllegalArgumentException - * if time period is not positive priority is not between - * Thread.MIN_PRIORITY and Thread.MAX_PRIORITY - * @deprecated - */ - @Deprecated - public void notifyAfterMillis(TimerListener listener, int priority, long timePeriod, int event) throws IllegalArgumentException; - - /** - * Adds new TimerListener to the timer event quueue. The listener will be - * notified after the given timePeriod with specified - * event. If the event queue already contains a listener and - * event pair equal to those being passed, then the old notification object - * is removed from queue and the new data takes its place. - * - * @param listener - * the listener which will be notified after the given time - * period - * @param timePeriod - * time period in seconds after which the listener will be - * notified - * @param event - * which will be supplied to the listener when it is notified - * - * @exception IllegalArgumentException - * if time period is not positive - * @deprecated - */ - @Deprecated - public void notifyAfter(TimerListener listener, int timePeriod, int event) throws IllegalArgumentException; - - /** - * Adds new TimerListener to the timer event quueue. The listener will be - * notified after the given timePeriod with specified - * event. If the event queue already contains a listener and - * event pair equal to those being passed, then the old notification object - * is removed from queue and the new data takes its place. - * - * @param listener - * the listener which will be notified after the given time - * period - * @param priority - * priority of executing thread - * @param timePeriod - * time period in seconds after which the listener will be - * notified - * @param event - * which will be supplied to the listener when it is notified - * - * @exception IllegalArgumentException - * if time period is not positive or priority is not between - * Thread.MIN_PRIORITY and Thread.MAX_PRIORITY - * @deprecated - */ - @Deprecated - public void notifyAfter(TimerListener listener, int priority, int timePeriod, int event) throws IllegalArgumentException; - - /** - * Adds new TimerListener to the timer event quueue. The listener will be - * notified after the given timePeriod with specified - * event. If the event queue already contains a listener and - * event pair equal to those being passed, then the old notification object - * is removed from queue and the new data takes its place. - * - * @param listener - * the listener which will be notified after the given time - * period - * @param priority - * priority of executing thread - * @param timerType - * the type of the timer "Periodical", "One shot", "Periodical No - * Delay", or "One shot no delay" - * @param timePeriod - * time period in seconds after which the listener will be - * notified - * @param event - * which will be supplied to the listener when it is notified - * - * @exception IllegalArgumentException - * if time period is not positive or priority is not between - * Thread.MIN_PRIORITY and Thread.MAX_PRIORITY or the - * timerType is not a correct timer type or the listener is - * null - */ - public void addNotifyListener(TimerListener listener, int priority, int timerType, long periodMilis, int event); - - /** - * Removes the TimerListener-event pair from the queue, so that the listener - * should not be notified after the time period passes. - * - * @param listener - * to be removed. - * @param event - * for which the timer listener should have been notified. - * - */ - public void removeListener(TimerListener listener, int event); -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/timer/TimerListener.java b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/timer/TimerListener.java deleted file mode 100644 index 4128f200b9..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/timer/TimerListener.java +++ /dev/null @@ -1,39 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.util.timer; - -/** - * This interface must be implemented by all classes which wish to be registered - * to the Timer service and to be notified after given time periods. - * - * @see Timer - * - * @author Pavlin Dobrev - * @version 1.0 - */ - -public interface TimerListener { - - /** - * This method will be invoked by Timer to notify the listener for the - * expiration of its time period. - * - * @param event - * the event code which is supplied when this listener had been - * registered - */ - public void timer(int event); - -} diff --git a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/timer/package.html b/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/timer/package.html deleted file mode 100644 index 1f965479b7..0000000000 --- a/bundles/org.eclipse.equinox.util/src/org/eclipse/equinox/internal/util/timer/package.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - -org.eclipse.equinox.util.timer - - - - -

    This package adds the Timer Service by -adding two additional interfaces. The idea is the Timer Service -to provide universal timers which can be used by other bundles if -they need them. When the Util Bundle is started, the Timer -Service is registered and started, too. To use the Timer Service, -you have to get it from the Bundle Context.

    - -

    To create a timer, you must invoke Timer's method notifyAfter(listener, -timePeriod, event) and pass correct parameters to it.

    - -
    -

    listener is object of a class implementing the - TimerListener interface whose time(event) method - will be invoked after the given timePeriod (in seconds) - with event specified in the notifyAfter method. The - Timer Service makes an event queue from all started timer - listeners and when some timePeriod of them passes, it - invokes its timer method with specified event and - removes it from queue. If the notifyAfter method is - invoked with listener and event that already exist in queue, - the previous listener is removed and the new one replaces it.

    -
    - -
    -

    event is an int parameter. When more than one timer - is started with the same listener, event shows which - of them is to be notified.

    -
    - -

    With the removeLisener(listener, event) method it is -possible to remove a listener with the specified event from the -queue before its timePeriod has passed. If the listener -with the specified event is not found, nothing happens.

    - -
    -

    Here is an example which starts 3 timers with diferent - timerPeriod. The timer with lisener lsn1 and event 1 will be - started again with diferent timePeriod, the Timer Service - will remove the previous timer and only new one will stay in - the queue. The timer with lisener lsn2 and event 2 will be - removed from the queue befor its timePeriod has passed. Only - timer with lisener lsn1, timePeriod 5 sec and event 1 will be - notified by the Timer Service when its timePeriod has passed.

    -
    - - - - - -
    -

     
    - public class - TestTimer {
    -   private BundleContext bc;
    -   private ServiceReference timerReference;
    -   private Timer timer;

    -

     public - TestTimer(BundleContext bc) {
    -     try {
    -       this.bc = bc;
    -       timerReference = bc.getServiceReference("org.eclipse.equinox.util.timer.Timer"); -
    -       if (timerReference != - null) {
    -         timer = (Timer)bc.getService(timerReference); -
    -         - setTimerIntervals();         -
    -       }
    -     } catch (Exception e) {
    -       System.out.println("An - error in start method.\n " + e);
    -     }
    -   } 
    -   
    -   private void setTimerIntervals() {
    -     int t;  //timePeriod
    -     int e;  //event
    -     
    -     //create lsn1 lisener implementing - TimerLisener interface
    -     TestTimerListener lsn1 = new - TestTimerListener();
    -     t = 10;
    -     e = 1;
    -     //start timer interval
    -     timer.notifyAfter(lsn1, t, e);
    -     System.out.println("Timer - with lisener lsn1 was started - timePeriod " + t - + " sec, event " + e);
    -     
    -     //create lsn2 lisener implementing - TimerLisener interface
    -     TestTimerListener lsn2 = new - TestTimerListener();
    -     t = 12;
    -     e = 2;
    -     //start timer interval
    -     timer.notifyAfter(lsn2, t, e);
    -     System.out.println("Timer - with lisener lsn2 was started - timePeriod " + t - + " sec, event " + e);

    -

        - t = 5;
    -     e = 1;
    -     //start timer interval
    -     timer.notifyAfter(lsn1, t, e);
    -     System.out.println("Timer - with lisener lsn1 was started - timePeriod " + t - + " sec, event " + e);
    -     System.out.println("\n"); -
    -     
    -     //remove lsn2 lisener with event 1 -
    -     e = 2;
    -     timer.removeListener(lsn2, e);   -
    -   } 
    -   
    - }  
    -  

    -
    -
    - -
    -

    The TestTimerListener class implements the TimerListener - interface and its method timer(event) will be invoked every - time a timerPeriod passes.

    -
    - - - - - -
    -

     
    - public class TestTimerListener implements - TimerListener {
    -   
    -   public TestTimerListener() {
    -   }
    -   
    -   public void timer(int event){
    -     System.out.println("Timer - with event " + event + " has ended");
    -   }  
    - }

    -
    -
    - -







    - - diff --git a/bundles/org.eclipse.equinox.wireadmin/.classpath b/bundles/org.eclipse.equinox.wireadmin/.classpath deleted file mode 100644 index 755d49bc03..0000000000 --- a/bundles/org.eclipse.equinox.wireadmin/.classpath +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/bundles/org.eclipse.equinox.wireadmin/.project b/bundles/org.eclipse.equinox.wireadmin/.project deleted file mode 100644 index 30bf5cbd5d..0000000000 --- a/bundles/org.eclipse.equinox.wireadmin/.project +++ /dev/null @@ -1,34 +0,0 @@ - - - org.eclipse.equinox.wireadmin - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - org.eclipse.pde.api.tools.apiAnalysisBuilder - - - - - - org.eclipse.pde.PluginNature - org.eclipse.jdt.core.javanature - org.eclipse.pde.api.tools.apiAnalysisNature - - diff --git a/bundles/org.eclipse.equinox.wireadmin/.settings/org.eclipse.core.runtime.prefs b/bundles/org.eclipse.equinox.wireadmin/.settings/org.eclipse.core.runtime.prefs deleted file mode 100644 index 5a0ad22d2a..0000000000 --- a/bundles/org.eclipse.equinox.wireadmin/.settings/org.eclipse.core.runtime.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -line.separator=\n diff --git a/bundles/org.eclipse.equinox.wireadmin/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.wireadmin/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index b1c8691de0..0000000000 --- a/bundles/org.eclipse.equinox.wireadmin/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,474 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.builder.cleanOutputFolder=clean -org.eclipse.jdt.core.builder.duplicateResourceTask=warning -org.eclipse.jdt.core.builder.invalidClasspath=abort -org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch -org.eclipse.jdt.core.circularClasspath=error -org.eclipse.jdt.core.classpath.exclusionPatterns=enabled -org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.4 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.doc.comment.support=enabled -org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000 -org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning -org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning -org.eclipse.jdt.core.compiler.problem.autoboxing=ignore -org.eclipse.jdt.core.compiler.problem.deprecation=warning -org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled -org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled -org.eclipse.jdt.core.compiler.problem.discouragedReference=error -org.eclipse.jdt.core.compiler.problem.emptyStatement=warning -org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning -org.eclipse.jdt.core.compiler.problem.fieldHiding=warning -org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore -org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning -org.eclipse.jdt.core.compiler.problem.forbiddenReference=error -org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning -org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning -org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore -org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning -org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private -org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning -org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning -org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled -org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public -org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore -org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning -org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning -org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning -org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning -org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning -org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning -org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled -org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning -org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled -org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning -org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning -org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning -org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning -org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning -org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning -org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning -org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore -org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation=warning -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled -org.eclipse.jdt.core.compiler.problem.unusedImport=error -org.eclipse.jdt.core.compiler.problem.unusedLocal=warning -org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled -org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error -org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning -org.eclipse.jdt.core.compiler.source=1.3 -org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false -org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 -org.eclipse.jdt.core.formatter.align_type_members_on_columns=false -org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false -org.eclipse.jdt.core.formatter.align_with_spaces=false -org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_enum_constant=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_local_variable=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_method=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_package=49 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_parameter=0 -org.eclipse.jdt.core.formatter.alignment_for_annotations_on_type=49 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_assertion_message=16 -org.eclipse.jdt.core.formatter.alignment_for_assignment=0 -org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain=0 -org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0 -org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 -org.eclipse.jdt.core.formatter.alignment_for_module_statements=16 -org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 -org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_record_components=16 -org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0 -org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 -org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_shift_operator=0 -org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16 -org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_record_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_type_annotations=0 -org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0 -org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0 -org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 -org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration=0 -org.eclipse.jdt.core.formatter.blank_lines_after_package=1 -org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method=1 -org.eclipse.jdt.core.formatter.blank_lines_before_field=0 -org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 -org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 -org.eclipse.jdt.core.formatter.blank_lines_before_method=1 -org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 -org.eclipse.jdt.core.formatter.blank_lines_before_package=0 -org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 -org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch=0 -org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 -org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_record_constructor=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_record_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true -org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false -org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true -org.eclipse.jdt.core.formatter.comment.format_block_comments=true -org.eclipse.jdt.core.formatter.comment.format_header=false -org.eclipse.jdt.core.formatter.comment.format_html=true -org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true -org.eclipse.jdt.core.formatter.comment.format_line_comments=true -org.eclipse.jdt.core.formatter.comment.format_source_code=true -org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false -org.eclipse.jdt.core.formatter.comment.indent_root_tags=false -org.eclipse.jdt.core.formatter.comment.indent_tag_description=false -org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags=do not insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert -org.eclipse.jdt.core.formatter.comment.line_length=80 -org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true -org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true -org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false -org.eclipse.jdt.core.formatter.compact_else_if=true -org.eclipse.jdt.core.formatter.continuation_indentation=2 -org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 -org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off -org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on -org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false -org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_record_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true -org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_empty_lines=false -org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true -org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false -org.eclipse.jdt.core.formatter.indentation.size=4 -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert -org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_record_components=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert -org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_not_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_record_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert -org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert -org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert -org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_record_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_record_components=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_constructor=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_record_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert -org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.join_lines_in_comments=true -org.eclipse.jdt.core.formatter.join_wrapped_lines=true -org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false -org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false -org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_record_constructor_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_record_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false -org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.lineSplit=120 -org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false -org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false -org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block=0 -org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 -org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_record_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines -org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true -org.eclipse.jdt.core.formatter.tabulation.char=tab -org.eclipse.jdt.core.formatter.tabulation.size=4 -org.eclipse.jdt.core.formatter.text_block_indentation=0 -org.eclipse.jdt.core.formatter.use_on_off_tags=true -org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false -org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true -org.eclipse.jdt.core.formatter.wrap_before_assertion_message_operator=true -org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false -org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true -org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true -org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true -org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true -org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true -org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true -org.eclipse.jdt.core.formatter.wrap_before_relational_operator=true -org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true -org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true -org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true -org.eclipse.jdt.core.incompatibleJDKLevel=ignore -org.eclipse.jdt.core.incompleteClasspath=error -org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter diff --git a/bundles/org.eclipse.equinox.wireadmin/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.equinox.wireadmin/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index 894ba5a9dd..0000000000 --- a/bundles/org.eclipse.equinox.wireadmin/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,56 +0,0 @@ -eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true -formatter_profile=org.eclipse.jdt.ui.default.eclipse_profile -formatter_settings_version=21 -org.eclipse.jdt.ui.ignorelowercasenames=true -org.eclipse.jdt.ui.importorder=; -org.eclipse.jdt.ui.ondemandthreshold=3 -org.eclipse.jdt.ui.staticondemandthreshold=99 -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_serial_version_id=false -sp_cleanup.always_use_blocks=true -sp_cleanup.always_use_parentheses_in_expressions=false -sp_cleanup.always_use_this_for_non_static_field_access=false -sp_cleanup.always_use_this_for_non_static_method_access=false -sp_cleanup.convert_to_enhanced_for_loop=false -sp_cleanup.correct_indentation=false -sp_cleanup.format_source_code=true -sp_cleanup.make_local_variable_final=false -sp_cleanup.make_parameters_final=false -sp_cleanup.make_private_fields_final=true -sp_cleanup.make_variable_declarations_final=true -sp_cleanup.never_use_blocks=false -sp_cleanup.never_use_parentheses_in_expressions=true -sp_cleanup.on_save_use_additional_actions=false -sp_cleanup.organize_imports=true -sp_cleanup.qualify_static_field_accesses_with_declaring_class=false -sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_with_declaring_class=false -sp_cleanup.qualify_static_method_accesses_with_declaring_class=false -sp_cleanup.remove_private_constructors=true -sp_cleanup.remove_trailing_whitespaces=false -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -sp_cleanup.remove_unused_imports=false -sp_cleanup.remove_unused_local_variables=false -sp_cleanup.remove_unused_private_fields=true -sp_cleanup.remove_unused_private_members=false -sp_cleanup.remove_unused_private_methods=true -sp_cleanup.remove_unused_private_types=true -sp_cleanup.sort_members=false -sp_cleanup.sort_members_all=false -sp_cleanup.use_blocks=false -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_parentheses_in_expressions=false -sp_cleanup.use_this_for_non_static_field_access=false -sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true -sp_cleanup.use_this_for_non_static_method_access=false -sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true diff --git a/bundles/org.eclipse.equinox.wireadmin/.settings/org.eclipse.pde.core.prefs b/bundles/org.eclipse.equinox.wireadmin/.settings/org.eclipse.pde.core.prefs deleted file mode 100644 index 5e91ab0f27..0000000000 --- a/bundles/org.eclipse.equinox.wireadmin/.settings/org.eclipse.pde.core.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Thu Mar 29 10:31:31 EEST 2007 -eclipse.preferences.version=1 -pluginProject.extensions=false diff --git a/bundles/org.eclipse.equinox.wireadmin/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.wireadmin/META-INF/MANIFEST.MF deleted file mode 100644 index 464fe9637c..0000000000 --- a/bundles/org.eclipse.equinox.wireadmin/META-INF/MANIFEST.MF +++ /dev/null @@ -1,19 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: %bundleName -Bundle-SymbolicName: org.eclipse.equinox.wireadmin -Bundle-Version: 1.0.900.qualifier -Bundle-Vendor: %bundleVendor -Bundle-Description: This bundle provides utility classes for Producer and Consumer services. -Bundle-Activator: org.eclipse.equinox.internal.wireadmin.Activator -Import-Package: org.eclipse.equinox.internal.util.hash;version="1.0.0", - org.eclipse.equinox.internal.util.ref;version="1.0.0", - org.osgi.framework, - org.osgi.service.cm;version="1.2", - org.osgi.service.event;version="1.1", - org.osgi.service.wireadmin;version="[1.0,1.1)", - org.osgi.util.tracker;version="1.3" -Export-Package: org.eclipse.equinox.internal.wireadmin; x-internal:=true -Bundle-RequiredExecutionEnvironment: OSGi/Minimum-1.0 -Bundle-Localization: plugin -Automatic-Module-Name: org.eclipse.equinox.wireadmin diff --git a/bundles/org.eclipse.equinox.wireadmin/OSGI-INF/permissions.perm b/bundles/org.eclipse.equinox.wireadmin/OSGI-INF/permissions.perm deleted file mode 100644 index acbf7723ae..0000000000 --- a/bundles/org.eclipse.equinox.wireadmin/OSGI-INF/permissions.perm +++ /dev/null @@ -1 +0,0 @@ -(java.security.AllPermission "*" "*") diff --git a/bundles/org.eclipse.equinox.wireadmin/about.html b/bundles/org.eclipse.equinox.wireadmin/about.html deleted file mode 100644 index 164f781a8f..0000000000 --- a/bundles/org.eclipse.equinox.wireadmin/about.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - -About - - -

    About This Content

    - -

    November 30, 2017

    -

    License

    - -

    - The Eclipse Foundation makes available all content in this plug-in - ("Content"). Unless otherwise indicated below, the Content - is provided to you under the terms and conditions of the Eclipse - Public License Version 2.0 ("EPL"). A copy of the EPL is - available at http://www.eclipse.org/legal/epl-2.0. - For purposes of the EPL, "Program" will mean the Content. -

    - -

    - If you did not receive this Content directly from the Eclipse - Foundation, the Content is being redistributed by another party - ("Redistributor") and different terms and conditions may - apply to your use of any object code in the Content. Check the - Redistributor's license that was provided with the Content. If no such - license exists, contact the Redistributor. Unless otherwise indicated - below, the terms and conditions of the EPL still apply to any source - code in the Content and such source code may be obtained at http://www.eclipse.org. -

    - - - \ No newline at end of file diff --git a/bundles/org.eclipse.equinox.wireadmin/build.properties b/bundles/org.eclipse.equinox.wireadmin/build.properties deleted file mode 100644 index 41490f2f19..0000000000 --- a/bundles/org.eclipse.equinox.wireadmin/build.properties +++ /dev/null @@ -1,22 +0,0 @@ -############################################################################### -# Copyright (c) 1997-2009 by ProSyst Software GmbH -# http://www.prosyst.com -# -# This program and the accompanying materials -# are made available under the terms of the Eclipse Public License 2.0 -# which accompanies this distribution, and is available at -# https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# ProSyst Software GmbH - initial API and implementation -############################################################################### -source.. = src/ -output.. = bin/ -bin.includes = META-INF/,\ - .,\ - about.html,\ - plugin.properties,\ - OSGI-INF/ -src.includes = about.html diff --git a/bundles/org.eclipse.equinox.wireadmin/forceQualifierUpdate.txt b/bundles/org.eclipse.equinox.wireadmin/forceQualifierUpdate.txt deleted file mode 100644 index 56f1032a8a..0000000000 --- a/bundles/org.eclipse.equinox.wireadmin/forceQualifierUpdate.txt +++ /dev/null @@ -1,2 +0,0 @@ -# To force a version qualifier update add the bug here -Bug 403352 - Update all parent versions to match our build stream diff --git a/bundles/org.eclipse.equinox.wireadmin/plugin.properties b/bundles/org.eclipse.equinox.wireadmin/plugin.properties deleted file mode 100644 index 746494dbcb..0000000000 --- a/bundles/org.eclipse.equinox.wireadmin/plugin.properties +++ /dev/null @@ -1,17 +0,0 @@ -############################################################################### -# Copyright (c) 1997-2009 by ProSyst Software GmbH -# http://www.prosyst.com -# -# This program and the accompanying materials -# are made available under the terms of the Eclipse Public License 2.0 -# which accompanies this distribution, and is available at -# https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# ProSyst Software GmbH - initial API and implementation -############################################################################### -#Properties file for org.eclipse.equinox.wireadmin -bundleVendor = Eclipse.org - Equinox -bundleName = Wire Admin Service \ No newline at end of file diff --git a/bundles/org.eclipse.equinox.wireadmin/pom.xml b/bundles/org.eclipse.equinox.wireadmin/pom.xml deleted file mode 100644 index f59f4e0670..0000000000 --- a/bundles/org.eclipse.equinox.wireadmin/pom.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - 4.0.0 - - rt.equinox.bundles - org.eclipse.equinox.bundles - 4.24.0-SNAPSHOT - ../../ - - org.eclipse.equinox - org.eclipse.equinox.wireadmin - 1.0.900-SNAPSHOT - eclipse-plugin - diff --git a/bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/Activator.java b/bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/Activator.java deleted file mode 100644 index 6d4fc1703e..0000000000 --- a/bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/Activator.java +++ /dev/null @@ -1,150 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.wireadmin; - -import org.eclipse.equinox.internal.util.ref.Log; -import org.osgi.framework.*; -import org.osgi.service.cm.ConfigurationAdmin; -import org.osgi.service.wireadmin.*; - -/** - * @author Pavlin Dobrev - * @version 1.0 - */ - -public class Activator implements BundleActivator, ServiceListener, ServiceFactory { - - static final String PREFIX = "[WireAdmin]: "; - - public static boolean LOG_DEBUG; - static Log log; - - private WireAdminImpl wireAdmin; - private ServiceReference cmRef; - - public static BundleContext bc; - - WireReDispatcher wireReDispatcher; - - /* - * (non-Javadoc) - * - * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext) - */ - public void start(BundleContext bc) throws Exception { - Activator.bc = bc; - log = new Log(bc, false); - log.setPrintOnConsole(getBoolean("equinox.services.wireadmin.console")); - - LOG_DEBUG = getBoolean("equinox.services.wireadmin.debug"); - log.setDebug(LOG_DEBUG); - - cmRef = bc.getServiceReference(ConfigurationAdmin.class.getName()); - - ConfigurationAdmin cm = null; - if (cmRef != null) { - cm = (ConfigurationAdmin) bc.getService(cmRef); - } - - try { - bc.addServiceListener(this, '(' + Constants.OBJECTCLASS + '=' + ConfigurationAdmin.class.getName() + ')'); - } catch (InvalidSyntaxException ise) { - /* syntax is valid */ - } - - wireAdmin = new WireAdminImpl(bc, cm); - - try { - bc.addServiceListener(wireAdmin, "(|(" + Constants.OBJECTCLASS + '=' + WireAdminListener.class.getName() + ')' + '(' + Constants.OBJECTCLASS + '=' + Consumer.class.getName() + ')' + '(' + Constants.OBJECTCLASS + '=' + Producer.class.getName() + "))"); - } catch (InvalidSyntaxException ise) { - /* syntax is valid */ - // ise.printStackTrace(); - } - wireReDispatcher = new WireReDispatcher(); - wireReDispatcher.start(bc); - } - - /* - * (non-Javadoc) - * - * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext) - */ - public void stop(BundleContext bc) throws Exception { - if (wireReDispatcher != null) { - wireReDispatcher.stop(); - wireReDispatcher = null; - } - - wireAdmin.unregister(); - - bc.removeServiceListener(wireAdmin); - bc.removeServiceListener(this); - - if (cmRef != null) { - bc.ungetService(cmRef); - cmRef = null; - } - - log.close(); - log = null; - - wireAdmin = null; - - bc = null; - } - - /* - * (non-Javadoc) - * - * @see org.osgi.framework.ServiceListener#serviceChanged(org.osgi.framework.ServiceEvent) - */ - public void serviceChanged(ServiceEvent e) { - switch (e.getType()) { - case ServiceEvent.MODIFIED : - case ServiceEvent.REGISTERED : - this.cmRef = e.getServiceReference(); - wireAdmin.cm = (ConfigurationAdmin) bc.getService(cmRef); - break; - case ServiceEvent.UNREGISTERING : - this.cmRef = null; - wireAdmin.cm = null; - break; - } - } - - public Object getService(Bundle bundle, ServiceRegistration registration) { - return null; - } - - public void ungetService(Bundle bundle, ServiceRegistration registration, Object service) { - } - - public static boolean getBoolean(String property) { - String prop = (bc != null) ? bc.getProperty(property) : System.getProperty(property); - return ((prop != null) && prop.equalsIgnoreCase("true")); - } - - public static int getInteger(String property, int defaultValue) { - String prop = (bc != null) ? bc.getProperty(property) : System.getProperty(property); - if (prop != null) { - try { - return Integer.decode(prop).intValue(); - } catch (NumberFormatException e) { - //do nothing - } - } - return defaultValue; - } -} diff --git a/bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/EventDispatcher.java b/bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/EventDispatcher.java deleted file mode 100644 index b425e9cb14..0000000000 --- a/bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/EventDispatcher.java +++ /dev/null @@ -1,268 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - * Eurotech - *******************************************************************************/ -package org.eclipse.equinox.internal.wireadmin; - -import java.util.*; -import org.osgi.framework.*; -import org.osgi.service.wireadmin.*; - -/** - * This class is responsible for dispatching notifications to WireAdminListeners - * and Consumers and Producers. - * - * @author Stoyan Boshev - * @author Pavlin Dobrev - * - * @version 1.0 - */ -public class EventDispatcher implements Runnable { - - private BundleContext bc; - - private WireAdminImpl wa; - - private Hashtable refToList; - - private Vector events; - - private Object synch = new Object(); - private Object listenersLock = new Object(); - - private boolean running = true; - - private Thread dispatcher; - - public EventDispatcher(BundleContext bc, WireAdminImpl wa) { - this.bc = bc; - this.wa = wa; - this.refToList = new Hashtable(5); - this.events = new Vector(5, 5); - - ServiceReference[] sRefs = null; - - try { - sRefs = bc.getServiceReferences(WireAdminListener.class.getName(), null); - } catch (InvalidSyntaxException ise) { - /* filter is null */ - } - - if (sRefs != null) { - WireAdminListener listener; - - for (int i = 0; i < sRefs.length; i++) { - listener = (WireAdminListener) bc.getService(sRefs[i]); - - if (listener != null) { - refToList.put(sRefs[i], listener); - } - } - } - dispatcher = new Thread(this, "[WireAdmin] - Event Dispatcher"); - dispatcher.start(); - } - - void addEvent(WireAdminEvent evt) { - if (refToList.isEmpty()) { - return; - } - - if (dispatcher == null) { - // synchronous - notifyListeners(new EventData(evt, refToList)); - } else { - // synchronized (listenersLock) { //because it does not change the - // Hashtable; - events.addElement(new EventData(evt, refToList)); - // } - synchronized (synch) { - synch.notify(); - } - } - } - - void addNotificationEvent(NotificationEvent ne) { - if (dispatcher == null) { - // synchronous - notifyConsumerProducer(ne); - } else { - events.addElement(ne); - synchronized (synch) { - synch.notify(); - } - } - } - - private String printWires(Wire[] wires) { - if (wires != null) { - StringBuffer buff = new StringBuffer(100); - buff.append("\n"); - for (int i = 0; i < wires.length; i++) { - buff.append(wires[i]).append("\n"); - } - return buff.toString(); - } - return "null"; - } - - private void notifyConsumerProducer(NotificationEvent ne) { - if (Activator.LOG_DEBUG) { - Activator.log.debug("Notification event " + ((ne.producer != null) ? "; Producer " + ne.producer : "; Consumer " + ne.consumer) + "; source: " + ne.source + "; wires " + printWires(ne.wires), null); - - Activator.log.debug(0, 10001, ((dispatcher != null) ? "asynchronous" : "synchronous"), null, false); - } - if (ne.producer != null) { - try { - ne.producer.consumersConnected(ne.wires); - } catch (Throwable t) { - wa.notifyListeners(ne.source, WireAdminEvent.PRODUCER_EXCEPTION, t); - } - } else if (ne.consumer != null) { - try { - ne.consumer.producersConnected(ne.wires); - } catch (Throwable t) { - wa.notifyListeners(ne.source, WireAdminEvent.CONSUMER_EXCEPTION, t); - } - } - } - - private void notifyListeners(EventData event) { - WireAdminEvent evt = (WireAdminEvent) event.event; - Hashtable refToList = event.listeners; - if (Activator.LOG_DEBUG) { - Activator.log.debug(0, 10002, getEvent(evt.getType()) + evt.getWire(), evt.getThrowable(), false); - Activator.log.debug(0, 10001, ((dispatcher != null) ? "asynchronous" : "synchronous"), null, false); - } - - for (Enumeration en = refToList.keys(); running && en.hasMoreElements();) { - ServiceReference current = (ServiceReference) en.nextElement(); - Integer accepts = (Integer) current.getProperty(WireConstants.WIREADMIN_EVENTS); - if ((accepts != null) && ((accepts.intValue() & evt.getType()) == evt.getType())) { - try { - ((WireAdminListener) refToList.get(current)).wireAdminEvent(evt); - } catch (Throwable t) { - if (Activator.LOG_DEBUG) { - Activator.log.debug(0, 10003, ((WireAdminListener) refToList.get(current)).toString(), t, false); - } - } - } - } - } - - /** - * @param ref - */ - public void removeListener(ServiceReference ref) { - if (refToList.containsKey(ref)) { - synchronized (listenersLock) { - refToList = (Hashtable) refToList.clone(); - if (refToList.remove(ref) != null) { - bc.ungetService(ref); - } - } - } - } - - /** - * @param ref - * @param object - */ - public void addListener(ServiceReference ref, Object object) { - synchronized (listenersLock) { - refToList = (Hashtable) refToList.clone(); - refToList.put(ref, object); - } - } - - public void run() { - while (running) { - synchronized (synch) { - while (running && events.size() == 0) { - try { - synch.wait(); - } catch (InterruptedException ie) { - } - } - } - - EventData evt = null; - NotificationEvent ne = null; - while (running && events.size() > 0) { - Object event = events.elementAt(0); - events.removeElementAt(0); - if (event instanceof EventData) { - evt = (EventData) event; - notifyListeners(evt); - } else { - ne = (NotificationEvent) event; - notifyConsumerProducer(ne); - } - } - } - } - - void terminate() { - running = false; - - if (dispatcher != null) { - synchronized (synch) { - synch.notify(); - } - } - - synchronized (listenersLock) { - for (Enumeration en = refToList.keys(); en.hasMoreElements();) { - bc.ungetService((ServiceReference) en.nextElement()); - } - refToList.clear(); - refToList = null; - } - events.removeAllElements(); - events = null; - } - - private String getEvent(int type) { - switch (type) { - case WireAdminEvent.WIRE_CREATED : - return "WIRE_CREATED"; - case WireAdminEvent.WIRE_CONNECTED : - return "WIRE_CONNECTED"; - case WireAdminEvent.WIRE_UPDATED : - return "WIRE_UPDATED"; - case WireAdminEvent.WIRE_TRACE : - return "WIRE_TRACE"; - case WireAdminEvent.WIRE_DISCONNECTED : - return "WIRE_DISCONNECTED"; - case WireAdminEvent.WIRE_DELETED : - return "WIRE_DELETED"; - case WireAdminEvent.PRODUCER_EXCEPTION : - return "PRODUCER_EXCEPTION"; - case WireAdminEvent.CONSUMER_EXCEPTION : - return "CONSUMER_EXCEPTION"; - default : - return null; - } - } - - class EventData { - Object event; - Hashtable listeners; - - public EventData(Object event, Hashtable listenersData) { - this.event = event; - listeners = listenersData; - } - } -} diff --git a/bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/NotificationEvent.java b/bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/NotificationEvent.java deleted file mode 100644 index 95aaac9f98..0000000000 --- a/bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/NotificationEvent.java +++ /dev/null @@ -1,41 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.wireadmin; - -import org.osgi.service.wireadmin.*; - -/** - * This class holds the producer and consumer which have to be notified for - * changes in their wires - * - * @author Stoyan Boshev - * @author Pavlin Dobrev - * @version 1.0 - */ -public class NotificationEvent { - - Producer producer; - Consumer consumer; - Wire source; - Wire[] wires; - - public NotificationEvent(Producer pr, Consumer cm, Wire source, Wire[] wires) { - producer = pr; - consumer = cm; - this.source = source; - this.wires = wires; - } - -} diff --git a/bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/TracerMap.java b/bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/TracerMap.java deleted file mode 100644 index aae2515f87..0000000000 --- a/bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/TracerMap.java +++ /dev/null @@ -1,54 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.wireadmin; - -import org.eclipse.equinox.internal.util.hash.HashIntObjNS; - -/** - * @author Lubomir Mitev - * @author Pavlin Dobrev - * @version 1.0 - */ -public class TracerMap { - - public static HashIntObjNS getMap() { - HashIntObjNS map = new HashIntObjNS(18); - - map.put(0, "WireAdmin"); - map.put(10001, "Event model is "); - map.put(10002, "Event type / source : "); - map.put(10003, "Exception while notifying WireAdminListener: "); - map.put(10004, "Will create wire producerPID/consumerPID/props : "); - map.put(10005, "I/O error creating a configuration!"); - map.put(10006, "Found case variants while updating wire properties"); - map.put(10007, "deleting wire with pid "); - map.put(10008, "deleting complete"); - map.put(10009, "Updating properties for wire with pid="); - map.put(10011, "Will set new properties for wire "); - map.put(10012, "Filter doesn't match value : "); - map.put(10013, "Wire started : "); - map.put(10014, "Disconnecting "); - map.put(10015, "Service is not connected to any producer/consumer : "); - map.put(10016, "The producer and consumer could not interoperate using wire "); - map.put(10017, "No ServiceReference for Wire events! event: "); - map.put(10018, "WireAdminEvent redispatched: "); - - return map; - } - - public static HashIntObjNS getStarts() { - return null; - } -} diff --git a/bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/WireAdminImpl.java b/bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/WireAdminImpl.java deleted file mode 100644 index 73594f6465..0000000000 --- a/bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/WireAdminImpl.java +++ /dev/null @@ -1,605 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2009 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.wireadmin; - -import java.io.IOException; -import java.util.*; -import org.osgi.framework.*; -import org.osgi.service.cm.*; -import org.osgi.service.wireadmin.*; - -/** - * Wire Admin service implementation - * - * @author Pavlin Dobrev - * @author Stoyan Boshev - * @version 1.0 - */ -class WireAdminImpl implements WireAdmin, ManagedServiceFactory, ServiceListener { - - private EventDispatcher evtDisp; - - private static final String PID_PREFIX = "WA_GENERATED_PID_"; - private static final String FACTORY_PID = "equinox.wireadmin.fpid"; - - private BundleContext bc; - - ConfigurationAdmin cm; - - private Hashtable wires; // maps wire pid to the WireImpl object - private ServiceRegistration regWireAdmin; - private ServiceRegistration regManagedFactory; - - private Vector waitForUpdate = new Vector(); - - long counter = System.currentTimeMillis(); - - /** - * Constructs an WireAdminImpl object, which provides - * Framework with methods for manipulating a Wire objects. - * Initialazed are hashtables for storing created wires, wires per - * Producer, and wires per Consumer. - * - * @param bc - * is the BundleContext object used for interaction with - * Framework. - */ - - WireAdminImpl(BundleContext bc, ConfigurationAdmin cm) { - this.bc = bc; - this.cm = cm; - wires = new Hashtable(); - evtDisp = new EventDispatcher(bc, this); - - Hashtable props = new Hashtable(2, 1.0f); - props.put(Constants.SERVICE_PID, FACTORY_PID); - props.put("service.factoryPid", FACTORY_PID); - - if (cm != null) { - try { - Configuration[] all = cm.listConfigurations("(service.factoryPid=" + FACTORY_PID + ")"); - if (all != null) { - WireImpl wire; - - for (int i = 0; i < all.length; i++) { - Dictionary properties = all[i].getProperties(); - String pid = (String) properties.get(WireConstants.WIREADMIN_PID); - - if (pid == null) { - pid = all[i].getPid(); - properties.put(WireConstants.WIREADMIN_PID, pid); - } - - wire = new WireImpl(bc, this, properties); - wires.put(pid, wire); - wire.start(); - } - } - } catch (IOException ioe) { - /* blocking won't be made */ - } catch (InvalidSyntaxException ise) { - /* syntax is valid */ - } - } - - // register as ManagedServiceFactory after loading the current config - // values and creating the wires !!!!!!!! - // This will not lead to bugs because of updating wire props while wire - // is not preloaded - regManagedFactory = bc.registerService(ManagedServiceFactory.class.getName(), this, props); - regWireAdmin = bc.registerService(WireAdmin.class.getName(), this, props); - } - - /* - * (non-Javadoc) - * - * @see org.osgi.service.wireadmin.WireAdmin#createWire(java.lang.String, - * java.lang.String, java.util.Dictionary) - */ - public Wire createWire(String producerPID, String consumerPID, Dictionary props) { - return createWire(producerPID, consumerPID, props, null); - } - - private Wire createWire(String producerPID, String consumerPID, Dictionary props, String pid) { - if (Activator.LOG_DEBUG) { - Activator.log.debug(0, 10004, producerPID + " / " + consumerPID + " / =" + props, null, false); - } - - if ((pid == null) && (producerPID == null || consumerPID == null)) { - throw new IllegalArgumentException("PIDs can not be null"); - } - - if (props == null) { - props = new Hashtable(7, 1.0f); - } else if (caseVariants(props)) { - throw new IllegalArgumentException("Illegal wire properties. Two or more keys with the same value, or incorrect key type!"); - } - - if (pid == null) { - // put the keys - props.put(WireConstants.WIREADMIN_PRODUCER_PID, producerPID); - props.put(WireConstants.WIREADMIN_CONSUMER_PID, consumerPID); - } - WireImpl wire = null; - - if (pid != null) { - wire = new WireImpl(bc, this, props); - wires.put(pid, wire); - wire.start(); - } else if (cm != null) { - try { - Configuration config = cm.createFactoryConfiguration(FACTORY_PID); - props.put(WireConstants.WIREADMIN_PID, config.getPid()); - wire = new WireImpl(bc, this, props); - /* Object oldWire = */wires.put(config.getPid(), wire); - // if (oldWire != null) { - // System.out.println("\n\n@@@@@@@@@@@@@@@@@@ Old wire lost!!!! - // Wire is "+oldWire); - // System.out.println("@@@@@@@@@@@@@@@@@@ New Wire is "+wire); - // } - wire.start(); - waitForUpdate.addElement(wire); - config.update(props); - } catch (IOException ioe) { - if (Activator.LOG_DEBUG) { - Activator.log.debug(0, 10005, null, ioe, false); - } - } - } else { - String wirePID = getNextPID(); - props.put(WireConstants.WIREADMIN_PID, wirePID); - props.put("service.factoryPid", "equinox.wireadmin.fpid"); - wire = new WireImpl(bc, this, props); - wires.put(wirePID, wire); - wire.start(); - - Activator.log.info(Activator.PREFIX + "CM not available! The created wire from Producer=" + producerPID + " and Consumer=" + consumerPID + " won't be presistently stored!"); - - } - - notifyListeners(wire, WireAdminEvent.WIRE_CREATED, null); - return wire; - } - - /* - * (non-Javadoc) - * - * @see org.osgi.service.wireadmin.WireAdmin#updateWire(org.osgi.service.wireadmin.Wire, - * java.util.Dictionary) - */ - public void updateWire(Wire wire, Dictionary properties) { - WireImpl wireImpl = (WireImpl) wire; - - if (wireImpl == null || !wireImpl.isValid) {// fix #1064 - return; - } - - if (properties == null) { - properties = new Hashtable(7, 1.0f); - } - - for (Enumeration en = properties.keys(); en.hasMoreElements();) { - if (!(en.nextElement() instanceof String)) { - throw new IllegalArgumentException("Illegal keys, must be String type"); - } - } - - if (caseVariants(properties)) { - if (Activator.LOG_DEBUG) { - Activator.log.debug(0, 10006, null, null, false); - } - throw new IllegalArgumentException("Found case variants in properties' keys"); - } - - String wirePID = (String) wire.getProperties().get(WireConstants.WIREADMIN_PID); - - if ((cm != null) && (wirePID.charAt(0) != 'W')) { - // CM is available and this wire was not created - // when the CM was not available - - wireImpl.setProperties(properties); - wires.put(wirePID, wire); - waitForUpdate.addElement(wire); - - try { - Configuration conf = cm.getConfiguration(wirePID); - conf.update(properties); - } catch (IOException ioe) { - Activator.log.error(Activator.PREFIX + "I/O error updating configuration!", ioe); - } - - } else { - // either CM is not available, or - // this wire was created when CM was not available - wires.remove(wirePID); - wireImpl.setProperties(properties); - wires.put(wirePID, wire); - } - } - - /* - * (non-Javadoc) - * - * @see org.osgi.service.wireadmin.WireAdmin#deleteWire(org.osgi.service.wireadmin.Wire) - */ - public void deleteWire(Wire wire) { - WireImpl wireImpl = (WireImpl) wire; - try { - if (cm != null) { - Configuration current = cm.getConfiguration(wireImpl.getWirePID()); - if (current != null) { - current.delete(); - } - } else { - disconnectWire(wireImpl); - } - } catch (IOException ioe) { - Activator.log.error(Activator.PREFIX + "I/O error getting a configuration!", ioe); - } - } - - private Wire[] getWires(String pid, boolean isProducer) throws InvalidSyntaxException { - if (isProducer) { - return getWires('(' + WireConstants.WIREADMIN_PRODUCER_PID + '=' + WireImpl.escapeSpecialCharacters(pid) + ')'); - } - - return getWires('(' + WireConstants.WIREADMIN_CONSUMER_PID + '=' + WireImpl.escapeSpecialCharacters(pid) + ')'); - } - - /* - * (non-Javadoc) - * - * @see org.osgi.service.wireadmin.WireAdmin#getWires(java.lang.String) - */ - public Wire[] getWires(String filterString) throws InvalidSyntaxException { - if (filterString == null) { - return getAllWires(); - } - - Filter filter = bc.createFilter(filterString); - - if (filter == null) { - return getAllWires(); - } - - Vector tmp = new Vector(); - - synchronized (wires) { - for (Enumeration en = wires.elements(); en.hasMoreElements();) { - Wire wire = (Wire) en.nextElement(); - Dictionary wireProps = wire.getProperties(); - - if (wire.isValid() && filter.match(wireProps)) { - tmp.addElement(wire); - } - } - } - - if (tmp.size() == 0) { - return null; - } - - Wire[] allWires = new Wire[tmp.size()]; - tmp.copyInto(allWires); - return allWires; - } - - private Wire[] getAllWires() { - if (wires.isEmpty()) { - return null; - } - - Vector tmp = new Vector(); - - synchronized (wires) { - for (Enumeration en = wires.elements(); en.hasMoreElements();) { - Wire wire = (Wire) en.nextElement(); - if (wire.isValid()) { - tmp.addElement(wire); - } - } - } - - if (tmp.size() == 0) { - return null; - } - - Wire[] allWires = new Wire[tmp.size()]; - tmp.copyInto(allWires); - return allWires; - } - - private void disconnectWire(WireImpl wire) { - if (wires == null) { - return; - } - Object result = wires.remove(wire.getWirePID());// Property(WireConstants.WIREADMIN_PID)); - if (result != null) { // the wire existed - boolean wasConnected = wire.isConnected(); - wire.stop(); - if (wasConnected) { - notifyListeners(wire, WireAdminEvent.WIRE_DISCONNECTED, null); - } - notifyListeners(wire, WireAdminEvent.WIRE_DELETED, null); - } - } - - Wire[] getConnected(String key, String value) { - if (key == null || value == null || wires.isEmpty()) { - return null; - } - - Vector connected = new Vector(); - - synchronized (wires) { - for (Enumeration en = wires.elements(); en.hasMoreElements();) { - WireImpl w = (WireImpl) en.nextElement(); - if (w.isValid() && w.isConnected() && value.equals(w.getProperties().get(key))) { - connected.addElement(w); - } - } - } - - if (connected.isEmpty()) { - return null; - } - - Wire[] cw = new Wire[connected.size()]; - connected.copyInto(cw); - return cw; - } - - /* - * (non-Javadoc) - * - * @see org.osgi.service.cm.ManagedServiceFactory#deleted(java.lang.String) - */ - public void deleted(String pid) { - if (Activator.LOG_DEBUG) { - Activator.log.debug(0, 10007, pid, null, false); - } - - if (wires == null) { - return; - } - WireImpl wire = (WireImpl) wires.get(pid); - disconnectWire(wire); - if (Activator.LOG_DEBUG) { - Activator.log.debug(0, 10008, null, null, false); - } - } - - public String getName() { - return "WireAdmin Configuration Factory"; - } - - /* - * (non-Javadoc) - * - * @see org.osgi.service.cm.ManagedServiceFactory#updated(java.lang.String, - * java.util.Dictionary) - */ - public void updated(String pid, Dictionary properties) throws ConfigurationException { - if (Activator.LOG_DEBUG) { - Activator.log.debug(0, 10009, pid, null, false); - Activator.log.debug(Activator.PREFIX + " " + properties, null); - } - - String consumerPID = (String) properties.get(WireConstants.WIREADMIN_CONSUMER_PID); - - if (consumerPID == null) { - throw new ConfigurationException(WireConstants.WIREADMIN_CONSUMER_PID, "is not provided"); - } - - String producerPID = (String) properties.get(WireConstants.WIREADMIN_PRODUCER_PID); - - if (producerPID == null) { - throw new ConfigurationException(WireConstants.WIREADMIN_PRODUCER_PID, "is not provided"); - } - - properties.put(WireConstants.WIREADMIN_PID, pid); - - if (wires == null) { - return; - } - - WireImpl wire = (WireImpl) wires.get(pid); - - if (wire != null) { - if (waitForUpdate.contains(wire)) { - // skip the first update after the wire was created - // or after the wire properties were updated - waitForUpdate.removeElement(wire); - } else { - // updating properties - if (Activator.LOG_DEBUG) { - Activator.log.debug(0, 10011, wire.toString(), null, false); - } - wire.setProperties(properties); - } - } else { - createWire(producerPID, consumerPID, properties, pid); - } - } - - /* - * (non-Javadoc) - * - * @see org.osgi.framework.ServiceListener#serviceChanged(org.osgi.framework.ServiceEvent) - */ - public void serviceChanged(ServiceEvent event) { - int type = event.getType(); - ServiceReference ref = event.getServiceReference(); - - if (type == ServiceEvent.UNREGISTERING) { - // presume that the unregistered service is a WireAdminListener - // service - evtDisp.removeListener(ref); - return; - } - - Object service = bc.getService(ref); - - if (type == ServiceEvent.REGISTERED) { - if (service instanceof WireAdminListener) { - evtDisp.addListener(ref, bc.getService(ref)); - } - - if (service instanceof Producer) { - Wire[] wires = null; - try { - wires = getWires((String) ref.getProperty(Constants.SERVICE_PID), true); - } catch (InvalidSyntaxException ise) { - /* syntax is valid */ - } - boolean doNotify = true; - if (wires != null) { - // there are wires, which may become connected - for (int i = 0; i < wires.length; i++) { - if (((WireImpl) wires[i]).consumerRef != null) { - // there is wire which will become (or is) connected - doNotify = false; - } - } - } - if (doNotify) { - notifyConsumerProducer(new NotificationEvent((Producer) service, null, null, null)); - } - } - - if (service instanceof Consumer) { - Wire[] wires = null; - try { - wires = getWires((String) ref.getProperty(Constants.SERVICE_PID), false); - } catch (InvalidSyntaxException ise) { - /* syntax is valid */ - } - - boolean doNotify = true; - if (wires != null) { - // there are wires, which may become connected - for (int i = 0; i < wires.length; i++) { - if (((WireImpl) wires[i]).producerRef != null) { - // there is wire which will become (or is) connected - doNotify = false; - } - } - } - if (doNotify) { - notifyConsumerProducer(new NotificationEvent(null, (Consumer) service, null, null)); - } - } - } - } - - // Utility methods - /** - * Sends a WireAdminEvent to all services registered as - * WireAdminListener - * - * @param type - * is the type of the WireAdminEvent that must be - * sent. - */ - void notifyListeners(Wire src, int type, Throwable t) { - if (regWireAdmin == null) { - return; - } - evtDisp.addEvent(new WireAdminEvent(regWireAdmin.getReference(), type, src, t)); - } - - void notifyConsumerProducer(NotificationEvent ne) { - evtDisp.addNotificationEvent(ne); - } - - void unregister() { - - if (regWireAdmin != null) { - regWireAdmin.unregister(); - regWireAdmin = null; - } - if (regManagedFactory != null) { - regManagedFactory.unregister(); - regManagedFactory = null; - } - - // disconnect all running wires - synchronized (wires) { - for (Enumeration en = wires.elements(); en.hasMoreElements();) { - disconnectWire((WireImpl) en.nextElement()); - } - } - - // stop event dispatcher - evtDisp.terminate(); - - cm = null; - wires.clear(); - wires = null; - bc = null; - } - - private static boolean caseVariants(Dictionary props) { - int k = 0; - int size = props.size(); - String[] keys = new String[size]; - - try { - for (Enumeration en = props.keys(); en.hasMoreElements();) { - keys[k] = (String) en.nextElement(); - k++; - } - } catch (ClassCastException cce) { - return true; - } - int j; - - for (int i = 0; i < size; i++) { - for (j = i + 1; j < size; j++) { - if (keys[i].equalsIgnoreCase(keys[j])) { - return true; - } - } - } - return false; - } - - private final String getNextPID() { - String nextPID = PID_PREFIX + counter++; - while (wires.get(nextPID) != null) { - nextPID = PID_PREFIX + counter++; - } - return nextPID; - } - - boolean hasAConnectedWire(boolean isProducer, String pid) { - String cPid; - synchronized (wires) { - for (Enumeration en = wires.elements(); en.hasMoreElements();) { - WireImpl wire = (WireImpl) en.nextElement(); - - if (wire.isValid() && wire.isConnected()) { - cPid = (String) wire.getProperties().get(isProducer ? WireConstants.WIREADMIN_PRODUCER_PID : WireConstants.WIREADMIN_CONSUMER_PID); - if (cPid.equals(pid)) { - return true; - } - } - } - } - // none of the wires in wich this service takes part - // will become connected after it's registering - return false; - } -} diff --git a/bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/WireImpl.java b/bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/WireImpl.java deleted file mode 100644 index 2ce3eb42d1..0000000000 --- a/bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/WireImpl.java +++ /dev/null @@ -1,858 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2011 by ProSyst Software GmbH and others. - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - * IBM Corporation - bug fix 347974 - *******************************************************************************/ -package org.eclipse.equinox.internal.wireadmin; - -import java.util.*; -import org.osgi.framework.*; -import org.osgi.service.wireadmin.*; - -/** - * @author Pavlin Dobrev - * @version 1.0 - */ - -class WireImpl implements Wire, ServiceListener { - - private BundleContext bc; - - /** Holds all the properties associated with this Wire object */ - private WireProperties properties; - - /** Holds a service reference to the associated Producer */ - ServiceReference producerRef; - - /** Holds a service reference to the associated Consumer */ - ServiceReference consumerRef; - - private Producer producer; - private Consumer consumer; - - private Class[] flavors; - - /** Holds the last value passed to this Wire by the Producer. */ - private Object lastValue; - /** Holds the previous value passed through this Wire to the Consumer. */ - private Object previousValue; - - private Vector envelopes; - - /** - * WireAdmin object whit which this Wire was - * created. - */ - private WireAdminImpl parent; - - private Filter filter = null; - - /** Holds the time of previous Consumer update in milliseconds */ - private long previousUpdateTime = -1; - - /** Holds the available wire values (filter attributes) */ - private Hashtable wireValues; - - /* holds a list of scopes */ - private String[] scope; - - /** Indicates that this Wire object has been deleted */ - boolean isValid = true; - - private boolean interoperate = true; - - private boolean allAccepted = true; - - /** - * Creates a Wire object, representing a connection between a - * Producer and Consumer. - * - * @param bc - * is the Wiring BundleContext. - * @param parent - * is the WireAdmin which is the creator of this - * Wire. - * @param wirePID - * is a String holding a unique presistent - * identifier of this Wire, generated by the - * parent WireAdmin. - * @param properties - * is a collection of the initial wire properties. - */ - WireImpl(BundleContext bc, WireAdminImpl parent, Dictionary properties) { - this.bc = bc; - this.parent = parent; - this.properties = new WireProperties(); - - for (Enumeration en = properties.keys(); en.hasMoreElements();) { - Object key = en.nextElement(); - this.properties.put0(key, properties.get(key)); - } - } - - /* - * (non-Javadoc) - * - * @see org.osgi.service.wireadmin.Wire#isValid() - */ - public boolean isValid() { - return isValid; - } - - /* - * (non-Javadoc) - * - * @see org.osgi.service.wireadmin.Wire#getFlavors() - */ - public Class[] getFlavors() { - return isConnected() ? flavors : null; - } - - /* - * (non-Javadoc) - * - * @see org.osgi.service.wireadmin.Wire#getProperties() - */ - public Dictionary getProperties() { - return properties; - } - - /* - * (non-Javadoc) - * - * @see org.osgi.service.wireadmin.Wire#getLastValue() - */ - public synchronized Object getLastValue() { - return lastValue; - } - - /* - * (non-Javadoc) - * - * @see org.osgi.service.wireadmin.Wire#update(java.lang.Object) - */ - public synchronized void update(Object value) { - if (!isConnected() || !interoperate || !isAcceptable(value)) { - return; - } - - if (value instanceof Envelope) { - Envelope e = (Envelope) value; - if (!hasScope(e.getScope())) { - if (Activator.LOG_DEBUG) { - Activator.log.debug(Activator.PREFIX + "Try to pass a value in an Envelop without permission, silent return.", null); - } - return; - } - } - - try { - if (filter != null) { - wireValues.put(WireConstants.WIREVALUE_CURRENT, value); - - // #3329 - if (previousValue != null) { - wireValues.put(WireConstants.WIREVALUE_PREVIOUS, previousValue); - wireValues.put(WireConstants.WIREVALUE_ELAPSED, new Long(System.currentTimeMillis() - previousUpdateTime)); - } else { - previousValue = value; // this is to "prime the pump" - } - - if (Number.class.isInstance(value) && Number.class.isInstance(previousValue)) { - double val = ((Number) value).doubleValue(); - double prevVal = ((Number) previousValue).doubleValue(); - - wireValues.put(WireConstants.WIREVALUE_DELTA_ABSOLUTE, new Double(Math.abs(val - prevVal))); - // #3328 - wireValues.put(WireConstants.WIREVALUE_DELTA_RELATIVE, new Double(Math.abs(1 - prevVal / val))); - } else { - wireValues.remove(WireConstants.WIREVALUE_DELTA_ABSOLUTE); - wireValues.remove(WireConstants.WIREVALUE_DELTA_RELATIVE); - } - - if (!filter.match(wireValues)) { - if (Activator.LOG_DEBUG) { - Activator.log.debug(0, 10012, filter + " / " + value, null, false); - } - return; - } - } - - if (consumer != null) { - try { - consumer.updated(this, value); - } catch (Throwable t) { - parent.notifyListeners(this, WireAdminEvent.CONSUMER_EXCEPTION, t); - } finally { - previousValue = value; - previousUpdateTime = System.currentTimeMillis(); - parent.notifyListeners(this, WireAdminEvent.WIRE_TRACE, null); - } - } - } finally { - lastValue = value; - } - } - - /* - * (non-Javadoc) - * - * @see org.osgi.service.wireadmin.Wire#poll() - */ - public synchronized Object poll() { - Object value = null; - if (isConnected() && interoperate) { - try { - value = producer.polled(this); - } catch (Throwable t) { - // no exception in the Producer must prevent correct Wire - // functioning - parent.notifyListeners(this, WireAdminEvent.PRODUCER_EXCEPTION, t); - return null; - } - parent.notifyListeners(this, WireAdminEvent.WIRE_TRACE, null); - if (!isAcceptable(value) && (!(value instanceof Envelope[]))) { - value = null; - } - } - - if (value != null) { - lastValue = value; - if (value instanceof Envelope[]) { - - if (allAccepted) { - return value; - } - Envelope[] envs = (Envelope[]) value; - if (scope == null) { - return value; - } - - if (envelopes == null) { - envelopes = new Vector(envs.length); - } - boolean changed = false; - for (int i = 0; i < envs.length; i++) { - if (hasScope(envs[i].getScope())) { - envelopes.addElement(envs[i]); - } else { - changed = true; - } - } - - if (changed) { - value = new Envelope[envelopes.size()]; - envelopes.copyInto((Envelope[]) value); - envelopes.removeAllElements(); - } - } - } - return value; - } - - /* - * (non-Javadoc) - * - * @see org.osgi.service.wireadmin.Wire#isConnected() - */ - public boolean isConnected() { - return isValid && (consumerRef != null) && (producerRef != null); - } - - /* - * (non-Javadoc) - * - * @see org.osgi.service.wireadmin.Wire#getScope() - */ - public synchronized String[] getScope() { - return scope; - } - - private void setScope() { - if ((producerRef == null) || (consumerRef == null)) { - return; - } - - Vector prodScope = checkPermission((String[]) producerRef.getProperty(WireConstants.WIREADMIN_PRODUCER_SCOPE), WirePermission.PRODUCE, producerRef.getBundle()); - - Vector consScope = checkPermission((String[]) consumerRef.getProperty(WireConstants.WIREADMIN_CONSUMER_SCOPE), WirePermission.CONSUME, consumerRef.getBundle()); - - if ((prodScope == null) || (consScope == null)) { - return; - } - - if ((consScope.size() == 1) && consScope.elementAt(0).equals("*")) { - scope = new String[prodScope.size()]; - prodScope.copyInto(scope); - return; - } - - if ((prodScope.size() != ((String[]) producerRef.getProperty(WireConstants.WIREADMIN_PRODUCER_SCOPE)).length) || (consScope.size() != ((String[]) consumerRef.getProperty(WireConstants.WIREADMIN_CONSUMER_SCOPE)).length)) { - this.allAccepted = false; - } - - Vector cloning = (Vector) prodScope.clone(); - - for (Enumeration en = cloning.elements(); en.hasMoreElements();) { - Object next = en.nextElement(); - if (!consScope.contains(next)) { - prodScope.removeElement(next); - this.allAccepted = false; - } - } - - scope = new String[prodScope.size()]; - prodScope.copyInto(scope); - } - - private static Vector checkPermission(String[] scope, String action, Bundle b) { - if (scope == null) { - return null; - } - - Vector v = new Vector(); - for (int i = 0; i < scope.length; i++) { - WirePermission wp = new WirePermission(scope[i], action); - if (b.hasPermission(wp)) { - v.addElement(scope[i]); - } - } - return v; - } - - /* - * (non-Javadoc) - * - * @see org.osgi.service.wireadmin.Wire#hasScope(java.lang.String) - */ - public boolean hasScope(String name) { - if ((scope == null) || ((scope.length == 1) && scope[0].equals("*"))) { - return true; - } - - for (int i = 0; i < scope.length; i++) { - if (name.equals(scope[i]) || scope[i].equals(WireConstants.WIREADMIN_SCOPE_ALL[0])) { - return true; - } - } - return false; - } - - // Utility methods - /** - * Creates a string representation for this Wire - * - * @return a string representation of this object. - */ - public String toString() { - StringBuffer sb = new StringBuffer(100); - sb.append("Wire[PID="); - sb.append(properties.get(WireConstants.WIREADMIN_PID)); - sb.append(";prodPID="); - sb.append(properties.get(WireConstants.WIREADMIN_PRODUCER_PID)); - sb.append(";consPID="); - sb.append(properties.get(WireConstants.WIREADMIN_CONSUMER_PID)); - sb.append(";connected="); - sb.append(isConnected()); - // sb.append(";valid="); - // sb.append(isValid()); - // sb.append(";Scope={"); - // if (scope == null) { - // sb.append("null"); - // } else { - // for (int i = 0; i < scope.length; i++) { - // sb.append(scope[i]); - // if (i != scope.length - 2) { - // sb.append(", "); - // } - // } - // } - sb.append("}]"); - - return sb.toString(); - } - - /** - * This method starts tracking of - * Producer Consumerservices associated with - * this Wire object. First we check if there are already such - * services started on the framework, after that two - * ServiceTracker objects are created to handle - * Producer and Consumer service tracking. - */ - synchronized void start() { - String producerPID = (String) properties.get(WireConstants.WIREADMIN_PRODUCER_PID); - String consumerPID = (String) properties.get(WireConstants.WIREADMIN_CONSUMER_PID); - updateListenerFilter(); - // check if there are such services already started - ServiceReference ref = getSingleRef(Producer.class.getName(), producerPID); - - if (ref != null) { - serviceRegistered(ref); - } - - ref = getSingleRef(Consumer.class.getName(), consumerPID); - - if (ref != null) { - serviceRegistered(ref); - } - - if (Activator.LOG_DEBUG) { - Activator.log.debug(0, 10013, properties.get(WireConstants.WIREADMIN_PID).toString(), null, false); - } - } - - void updateListenerFilter() { - String producerPID = escapeSpecialCharacters((String) properties.get(WireConstants.WIREADMIN_PRODUCER_PID)); - String consumerPID = escapeSpecialCharacters((String) properties.get(WireConstants.WIREADMIN_CONSUMER_PID)); - - try { - // Create filter for tracking services regstered as Consumer's with - // the current - // WIRE_CONSUMER_PID and as Producer's with current - // WIRE_PRODUCER_PID - // escaping *, ) and ( in the pid. - StringBuffer sb = new StringBuffer();// "("); - sb.append('('); - sb.append('|'); - - sb.append('(').append('&'); - sb.append('(').append(Constants.SERVICE_PID).append('=').append(consumerPID).append(')'); - sb.append('(').append(Constants.OBJECTCLASS).append('=').append(Consumer.class.getName()).append(')'); - sb.append(')'); - - sb.append('(').append('&'); - sb.append('(').append(Constants.SERVICE_PID).append('=').append(producerPID).append(')'); - sb.append('(').append(Constants.OBJECTCLASS).append('=').append(Producer.class.getName()).append(')'); - sb.append(')'); - - if (consumerRef != null) {// in case service.pid changes - Long id = (Long) consumerRef.getProperty(Constants.SERVICE_ID); - sb.append('(').append(Constants.SERVICE_ID).append('=').append(id).append(')'); - } - - if (producerRef != null) {// in case service.pid changes - Long id = (Long) producerRef.getProperty(Constants.SERVICE_ID); - sb.append('(').append(Constants.SERVICE_ID).append('=').append(id).append(')'); - } - - sb.append(')'); - - // System.out.println("Filter is: " + sb.toString()); - - bc.addServiceListener(this, sb.toString()); - } catch (InvalidSyntaxException ise) { - /* Syntax is valid */ - } - - } - - private ServiceReference getSingleRef(String clazz, String pid) { - ServiceReference[] ref = null; - - try { - ref = bc.getServiceReferences(clazz, "(" + Constants.SERVICE_PID + "=" + escapeSpecialCharacters(pid) + ")"); - } catch (InvalidSyntaxException e) { - } - - if (ref != null) { - if (ref.length > 1) { - if (Activator.LOG_DEBUG) { - Activator.log.debug(Activator.PREFIX + "Found more than one " + clazz + " services registered with the same pid: " + pid + "Wire was not created, please unregister all services which duplicate the pid.", null); - } - - parent.deleteWire(this); - } else if (ref.length == 1) { - return ref[0]; - } - } - return null; - } - - /** - * Stops service tracking, removes this Wire from the wire - * lists of the associated Consumer and Producer services and informs them - * for disconnecting. - */ - synchronized void stop() { - if (!isValid) - return; // already stopped - - if (Activator.LOG_DEBUG) { - Activator.log.debug(0, 10014, this.toString(), null, false); - } - bc.removeServiceListener(this); - if ((producerRef != null) && (consumerRef != null)) { - // if this wire was connected - isValid = false; - informServices(); - } - isValid = false; - - if (producerRef != null) { - bc.ungetService(producerRef); - } - if (consumerRef != null) { - bc.ungetService(consumerRef); - } - - // let gc do his work - producerRef = null; - consumerRef = null; - - producer = null; - consumer = null; - - lastValue = null; - previousValue = null; - parent = null; - filter = null; - wireValues = null; - scope = null; - bc = null; - } - - /** - * This method is invoked when the Wiring tracker detects a service - * registration or when the Wire is created The service type is determined - * (Producer or Consumer) and added to this Wire. Both - * Consumer and Producer (if available) are informed for connecting. - * - * @param sRef - * the service reference of the wire's producer or consumer - * @param notifyService - * specifies whether notification of the Producer/Consumer is - * necessary if it is the only one available part. - */ - private void serviceRegistered(ServiceReference sRef) { - String pid = (String) sRef.getProperty(Constants.SERVICE_PID); - - if (pid.equals(properties.get(WireConstants.WIREADMIN_PRODUCER_PID))) { - if (producerRef == null) { - this.producerRef = sRef; - this.producer = (Producer) bc.getService(producerRef); - if (Activator.LOG_DEBUG) { - Activator.log.debug(Activator.PREFIX + "Wire " + properties.get(WireConstants.WIREADMIN_PID) + " detected producer " + pid, null); - } - } else - return; - } else { - if (consumerRef == null) { - if (Activator.LOG_DEBUG) { - Activator.log.debug(Activator.PREFIX + "Wire " + properties.get(WireConstants.WIREADMIN_PID) + " detected consumer " + pid, null); - } - this.consumerRef = sRef; - this.consumer = (Consumer) bc.getService(consumerRef); - try { - this.flavors = (Class[]) consumerRef.getProperty(WireConstants.WIREADMIN_CONSUMER_FLAVORS); - } catch (ClassCastException cce) { - /* won't be initialized */ - } - } else - return; - } - - if (isConnected()) { - // inform the Producer/Consumer for connecting - setScope(); - informServices(); - parent.notifyListeners(this, WireAdminEvent.WIRE_CONNECTED, null); - checkInteroperability(); - } else if (!parent.hasAConnectedWire(pid.equals(properties.get(WireConstants.WIREADMIN_PRODUCER_PID)), pid)) { - // this service has no connected wire objects attached to it - if (Activator.LOG_DEBUG) { - Activator.log.debug(0, 10015, pid, null, false); - } - // if (notifyService) { // The service is notified if it is only - // just registered - // informServices(); - // } - } - - updateListenerFilter(); - checkWireFilter(); - } - - private void checkWireFilter() { - boolean performFiltering = ((producerRef != null) && producerRef.getProperty(WireConstants.WIREADMIN_PRODUCER_FILTERS) == null) && (properties.get(WireConstants.WIREADMIN_FILTER) != null); - - if (performFiltering) { - if ((wireValues == null)) { - wireValues = new Hashtable(6, 1.0f); - } - - try { - filter = bc.createFilter((String) properties.get(WireConstants.WIREADMIN_FILTER)); - } catch (InvalidSyntaxException ise) { - if (Activator.LOG_DEBUG) { - Activator.log.debug(Activator.PREFIX + "Filter syntax is invalid, filtering won't be made", null); - } - } - } else { - filter = null; - } - } - - private void serviceModified(ServiceReference sRef) { // fix #1073 - String pid = (String) sRef.getProperty(Constants.SERVICE_PID); - - if (sRef.equals(producerRef)) { - String currentPID = (String) properties.get(WireConstants.WIREADMIN_PRODUCER_PID); - - if (!currentPID.equals(pid)) { - // System.out.println("The pid of the PRODUCER is changed"); - serviceUnregistered(sRef); - return; - } - } - - if (sRef.equals(consumerRef)) { - String currentPID = (String) properties.get(WireConstants.WIREADMIN_CONSUMER_PID); - - if (!currentPID.equals(pid)) { - serviceUnregistered(sRef); - // System.out.println("The pid of the CONSUMER is changed"); - return; - } - try { - this.flavors = (Class[]) consumerRef.getProperty(WireConstants.WIREADMIN_CONSUMER_FLAVORS); - } catch (ClassCastException cce) { - /* won't be initialized */ - } - } - - if (producerRef == null || consumerRef == null) { - // System.out.println("Check if PID is BACK"); - serviceRegistered(sRef); - return; - } - - if (!isConnected()) { - return; - } - - setScope(); - checkInteroperability(); - checkWireFilter(); - } - - private void checkInteroperability() { - String[] p = (String[]) producerRef.getProperty(WireConstants.WIREADMIN_PRODUCER_COMPOSITE); - String[] c = (String[]) consumerRef.getProperty(WireConstants.WIREADMIN_CONSUMER_COMPOSITE); - - if ((p != null) && (c != null)) { - for (int i = 0; i < p.length; i++) { - for (int j = 0; j < c.length; j++) { - if (p[i].equals(c[j])) { - // found at least one match - interoperate = true; - return; - } - } - } - if (Activator.LOG_DEBUG) { - Activator.log.debug(0, 10016, this.toString(), null, false); - } - interoperate = false; - } else { - interoperate = true; - } - } - - private void serviceUnregistered(ServiceReference sRef) { - boolean lastStatus = isConnected(); - - if (sRef.equals(producerRef)) { - this.producerRef = null; - this.producer = null; - } else if (sRef.equals(consumerRef)) { - this.consumerRef = null; - this.consumer = null; - this.flavors = null; - } else { - if (Activator.LOG_DEBUG) { - Activator.log.debug(Activator.PREFIX + "Unregistering another consumer with the same pid, ignoring it ...", null); - } - return; - } - - updateListenerFilter(); - - if (lastStatus) { - // last wire state was connected - now it is disconnected - informServices(); - parent.notifyListeners(this, WireAdminEvent.WIRE_DISCONNECTED, null); - } - if (bc != null) { - bc.ungetService(sRef); - } - - } - - /** - * This method checks if the given String contains one of the characters *, (, - * and ) which have a special meaning for the LDAP search filters. If there - * are such characters they are escaped with the backslash character ('\'). - */ - static String escapeSpecialCharacters(String s) { - char[] content = s.toCharArray(); - StringBuffer result = new StringBuffer(s); - int offset = 0; - - for (int i = 0; i < content.length; i++) { - if ((content[i] == 40) || (content[i] == 41) || (content[i] == 42)) { - result.insert(i + offset, "\\"); // fix #1078 - offset++; - } - } - return result.toString(); - } - - /** - * Change the properties of this wire. If the changes concern one of the - * properties WIRE_PRODUCER_PID and WIRE_CONSUMER_PID this wire must be - * stopped and started again to begin tracking of the new Services. - */ - void setProperties(Dictionary newProps) { - if (newProps != null) { - String newConsPID = (String) newProps.get(WireConstants.WIREADMIN_CONSUMER_PID); - String newProdPID = (String) newProps.get(WireConstants.WIREADMIN_PRODUCER_PID); - - String oldConsPID = (String) properties.get(WireConstants.WIREADMIN_CONSUMER_PID); - String oldProdPID = (String) properties.get(WireConstants.WIREADMIN_PRODUCER_PID); - - boolean restart = false; - - if (newConsPID == null) { - newProps.put(WireConstants.WIREADMIN_CONSUMER_PID, oldConsPID); - } else if (!newConsPID.equals(oldConsPID)) { - restart = true; - } - - if (newProdPID == null) { - newProps.put(WireConstants.WIREADMIN_PRODUCER_PID, oldProdPID); - } else if (!newProdPID.equals(oldProdPID)) { - restart = true; - } - // fix #1074 - if (newProps.get(WireConstants.WIREADMIN_PID) == null) { - newProps.put(WireConstants.WIREADMIN_PID, properties.get(WireConstants.WIREADMIN_PID)); - } - - // WireProperties wprops = new WireProperties(); - properties.clear(); - - for (Enumeration en = newProps.keys(); en.hasMoreElements();) { - Object key = en.nextElement(); - properties.put0(key, newProps.get(key)); - } - - checkWireFilter(); - - if (restart) { - // One of the Consumer or Producer has been changed so restart - // the wire - stop(); - start(); - return; - } - } - - if (isConnected()) { - informServices(); - } - - parent.notifyListeners(this, WireAdminEvent.WIRE_UPDATED, null); - } - - private boolean isAcceptable(Object value) { - Class[] flavors = getFlavors(); - - if (flavors == null) { - return true; - } - - for (int i = 0; i < flavors.length; i++) { - if (flavors[i].isInstance(value)) { - return true; - } - } - return false; - } - - /* - * (non-Javadoc) - * - * @see org.osgi.framework.ServiceListener#serviceChanged(org.osgi.framework.ServiceEvent) - */ - public void serviceChanged(ServiceEvent evt) { - if (bc == null) { - return; - } - switch (evt.getType()) { - case ServiceEvent.REGISTERED : - // System.out.println("E V E N T : registered"); - serviceRegistered(evt.getServiceReference()); - break; - - case ServiceEvent.UNREGISTERING : - // System.out.println("E V E N T : unregistering"); - serviceUnregistered(evt.getServiceReference()); - break; - - case ServiceEvent.MODIFIED : - // System.out.println("E V E N T : modified"); - serviceModified(evt.getServiceReference()); - } - } - - String getWirePID() { - return (String) properties.get(WireConstants.WIREADMIN_PID); - } - - /** - * This method simply informs both Producer and Consumer with the methods - * consumersConnected, producersConnected if a wire bacames connected and - * the remaining service if the wire becames disconnected. - */ - private void informServices() { - if (producerRef != null) { - String producerPID = (String) properties.get(WireConstants.WIREADMIN_PRODUCER_PID); - NotificationEvent ne = new NotificationEvent(producer, null, this, parent.getConnected(WireConstants.WIREADMIN_PRODUCER_PID, producerPID)); - parent.notifyConsumerProducer(ne); - - // try { - // producer.consumersConnected(parent.getConnected(WireConstants.WIREADMIN_PRODUCER_PID, - // producerPID)); - // } catch (Exception ex) { - // parent.notifyListeners(this, WireAdminEvent.PRODUCER_EXCEPTION , - // ex); - // } - } - - if (consumerRef != null) { - String consumerPID = (String) properties.get(WireConstants.WIREADMIN_CONSUMER_PID); - NotificationEvent ne = new NotificationEvent(null, consumer, this, parent.getConnected(WireConstants.WIREADMIN_CONSUMER_PID, consumerPID)); - parent.notifyConsumerProducer(ne); - - // try { - // consumer.producersConnected(parent.getConnected(WireConstants.WIREADMIN_CONSUMER_PID, - // consumerPID)); - // } catch (Exception ex) { - // parent.notifyListeners(this, WireAdminEvent.CONSUMER_EXCEPTION , - // ex); - // } - } - } - -} diff --git a/bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/WireProperties.java b/bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/WireProperties.java deleted file mode 100644 index e02bae635e..0000000000 --- a/bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/WireProperties.java +++ /dev/null @@ -1,43 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997, 2008 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.wireadmin; - -import java.util.Hashtable; - -/** - * @author Pavlin Dobrev - * @version 1.0 - */ - -class WireProperties extends Hashtable { - - static final long serialVersionUID = -8836718065933570367L; - - public synchronized Object put(Object key, Object value) { - throw new RuntimeException("Unsupported operation"); - } - - public synchronized Object remove(Object key) { - throw new RuntimeException("Unsupported operation"); - } - - Object put0(Object key, Object value) { - return super.put(key, value); - } - - Object remove0(Object key) { - return super.remove(key); - } -} diff --git a/bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/WireReDispatcher.java b/bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/WireReDispatcher.java deleted file mode 100644 index 5f45ae6629..0000000000 --- a/bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/WireReDispatcher.java +++ /dev/null @@ -1,392 +0,0 @@ -/******************************************************************************* - * Copyright (c) 1997-2009 by ProSyst Software GmbH - * http://www.prosyst.com - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * ProSyst Software GmbH - initial API and implementation - * Eurotech - *******************************************************************************/ -package org.eclipse.equinox.internal.wireadmin; - -import java.security.AccessController; -import java.security.PrivilegedAction; -import java.util.Dictionary; -import java.util.Hashtable; -import org.eclipse.equinox.internal.util.ref.Log; -import org.osgi.framework.*; -import org.osgi.service.event.*; -import org.osgi.service.wireadmin.*; -import org.osgi.util.tracker.ServiceTracker; -import org.osgi.util.tracker.ServiceTrackerCustomizer; - -/** - * This is an implementation of log events redispatching. - * - * /** - * - * @author Pavlin Dobrev - * @version 1.0 - */ -public class WireReDispatcher implements WireAdminListener { - - static final String BUNDLE = "bundle"; - static final String BUNDLE_ID = "bundle.id"; - static final String BUNDLE_SYMBOLICNAME = "bundle.symbolicName"; - static final String EVENT = "event"; - static final String EXCEPTION = "exception"; - static final String EXCEPTION_CLASS = "exception.class"; - static final String EXCEPTION_MESSAGE = "exception.message"; - static final String SERVICE = "service"; - static final String SERVICE_ID = "service.id"; - static final String SERVICE_OBJECTCLASS = "service.objectClass"; - static final String SERVICE_PID = "service.pid"; - static final char TOPIC_SEPARATOR = '/'; - /* ///////WIRE ADMIN EVENTS////////// */ - static final String WIRE_HEADER = "org/osgi/service/wireadmin/WireAdminEvent"; - static final String WIRE_CREATED = "WIRE_CREATED"; - static final String WIRE_CONNECTED = "WIRE_CONNECTED"; - static final String WIRE_UPDATED = "WIRE_UPDATED"; - static final String WIRE_TRACE = "WIRE_TRACE"; - static final String WIRE_DISCONNECTED = "WIRE_DISCONNECTED"; - static final String WIRE_DELETED = "WIRE_DELETED"; - static final String PRODUCER_EXCEPTION = "PRODUCER_EXCEPTION"; - static final String CONSUMER_EXCEPTION = "CONSUMER_EXCEPTION"; - - static final String[] EVENT_TOPICS; - - static final String WIRE_ENTRY = "wire.entry"; - static final String WA_WIRE = "wire"; - static final String WA_WIRE_FLAVORS = "wire.flavors"; - static final String WA_WIRE_SCOPE = "wire.scope"; - static final String WA_WIRE_CONNECTED = "wire.connected"; - static final String WA_WIRE_VALID = "wire.valid"; - - static { - EVENT_TOPICS = new String[8]; - EVENT_TOPICS[0] = WIRE_HEADER + TOPIC_SEPARATOR + WIRE_CREATED; - EVENT_TOPICS[1] = WIRE_HEADER + TOPIC_SEPARATOR + WIRE_CONNECTED; - EVENT_TOPICS[2] = WIRE_HEADER + TOPIC_SEPARATOR + WIRE_UPDATED; - EVENT_TOPICS[3] = WIRE_HEADER + TOPIC_SEPARATOR + WIRE_TRACE; - EVENT_TOPICS[4] = WIRE_HEADER + TOPIC_SEPARATOR + WIRE_DISCONNECTED; - EVENT_TOPICS[5] = WIRE_HEADER + TOPIC_SEPARATOR + WIRE_DELETED; - EVENT_TOPICS[6] = WIRE_HEADER + TOPIC_SEPARATOR + PRODUCER_EXCEPTION; - EVENT_TOPICS[7] = WIRE_HEADER + TOPIC_SEPARATOR + CONSUMER_EXCEPTION; - } - - BundleContext bc; - ServiceRegistration waReg; - Log log; - ServiceTracker eventAdminTracker; - ServiceTracker eventHandlerTracker; - EventHandlerIndex eventHandlerIndex; - - /* - * (non-Javadoc) - * - * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext) - */ - public void start(BundleContext bc) throws Exception { - this.bc = bc; - log = new Log(bc, false); - eventHandlerIndex = new EventHandlerIndex(); - log.setDebug(Activator.getBoolean("equinox.wireadmin.redispatcher.debug")); - log.setPrintOnConsole(Activator.getBoolean("equinox.wireadmin.redispatcher.console")); - - eventHandlerTracker = new ServiceTracker(bc, EventHandler.class.getName(), eventHandlerIndex); - eventHandlerTracker.open(); - - eventAdminTracker = new ServiceTracker(bc, EventAdmin.class.getName(), null); - eventAdminTracker.open(); - } - - /* - * (non-Javadoc) - * - * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext) - */ - public void stop() throws Exception { - if (eventAdminTracker != null) { - eventAdminTracker.close(); - eventAdminTracker = null; - } - if (eventHandlerTracker != null) { - eventHandlerTracker.close(); - eventHandlerTracker = null; - } - log.close(); - this.bc = null; - } - - /* ////////UTILITY METHODS//////// */ - - /* - * Add exception properties needed in event by EventAdmin specification. - */ - void addExceptionProps(Hashtable props, Throwable t) { - props.put(EXCEPTION, t); - props.put(EXCEPTION_CLASS, t.getClass().getName()); - String message = t.getMessage(); - if (message != null) { - props.put(EXCEPTION_MESSAGE, t.getMessage()); - } - } - - /* - * Add service properties needed in event by EventAdmin specification. - */ - void addServiceProps(Hashtable props, ServiceReference ref) { - props.put(SERVICE, ref); - props.put(SERVICE_ID, ref.getProperty(Constants.SERVICE_ID)); - Object tmp = ref.getProperty(Constants.SERVICE_PID); - if (tmp != null && tmp instanceof String) { - props.put(SERVICE_PID, tmp); - } - tmp = ref.getProperty(Constants.OBJECTCLASS); - if (tmp != null && tmp instanceof String[]) { - props.put(SERVICE_OBJECTCLASS, tmp); - } - } - - /* ////////LISTENER METHODS//////// */ - - /* - * (non-Javadoc) - * - * @see org.osgi.service.wireadmin.WireAdminListener#wireAdminEvent(org.osgi.service.wireadmin.WireAdminEvent) - */ - public void wireAdminEvent(WireAdminEvent event) { - ServiceTracker st = eventAdminTracker; - final EventAdmin eventAdmin = st == null ? null : ((EventAdmin) st.getService()); - if (eventAdmin != null) { - ServiceReference ref = event.getServiceReference(); - if (ref == null) { - throw new RuntimeException("Wire Admin ServiceReference is null"); - } - final int topicIndex; - switch (event.getType()) { - case WireAdminEvent.WIRE_CREATED : - topicIndex = 0; - break; - case WireAdminEvent.WIRE_CONNECTED : - topicIndex = 1; - break; - case WireAdminEvent.WIRE_UPDATED : - topicIndex = 2; - break; - case WireAdminEvent.WIRE_TRACE : - topicIndex = 3; - break; - case WireAdminEvent.WIRE_DISCONNECTED : - topicIndex = 4; - break; - case WireAdminEvent.WIRE_DELETED : - topicIndex = 5; - break; - case WireAdminEvent.PRODUCER_EXCEPTION : - topicIndex = 6; - break; - case WireAdminEvent.CONSUMER_EXCEPTION : - topicIndex = 7; - break; - default : /* ignore: unknown/new events */ - return; - } - if (!eventHandlerIndex.hasEventHandlers(topicIndex)) { - if (Activator.LOG_DEBUG) - log.debug(0, 10017, event.toString(), null, false); - return; /* - * no service references for this topic do not bother - * EventAdmin - */ - } - Hashtable props = new Hashtable(); - addServiceProps(props, ref); - Wire wire = event.getWire(); - if (wire != null) { - props.put(WA_WIRE, wire); - props.put(WA_WIRE_CONNECTED, wire.isConnected() ? Boolean.TRUE : Boolean.FALSE); - if (wire.getFlavors() != null) { - props.put(WA_WIRE_FLAVORS, wire.getFlavors()); - } - if (wire.getScope() != null) { - props.put(WA_WIRE_SCOPE, wire.getScope()); - } - props.put(WA_WIRE_VALID, wire.isValid() ? Boolean.TRUE : Boolean.FALSE); - } - Throwable throwable = event.getThrowable(); - if (throwable != null) { - addExceptionProps(props, throwable); - } - props.put(EVENT, event); - final Event eaEvent = new Event(EVENT_TOPICS[topicIndex], (Dictionary) props); - AccessController.doPrivileged(new PrivilegedAction() { - public Object run() { - eventAdmin.postEvent(eaEvent); - return null; - } - }); - if (Activator.LOG_DEBUG) - log.debug(0, 10018, event.toString(), null, false); - } - } - - /** - * Checks if a topic filter string matches the target topic string. - * - * @param pattern - * A topic filter like "company/product/*" - * @param topic - * Target topic to be checked against like - * "company/product/topicA" - * @return true if topicProperty matches topic, false if otherwise. - */ - protected static boolean matchTopic(String pattern, String topic) { - // //two fast checks - if (pattern.length() > topic.length()) - return false; - if ("*".equals(pattern) || pattern.equals(topic)) - return true; - - // //assume pattern is not NULL ... or check! - int index = pattern.indexOf(TOPIC_SEPARATOR); - if (index == -1 || index == 0 || index == pattern.length() - 1) { - // //syntax problem - // //we have no '/' or starts with '/' or ends with '/' - return false; - } - - for (index = 0; index < pattern.length(); index++) { - if (pattern.charAt(index) == '*') { - // //wildcard!!! - if (pattern.charAt(index - 1) != TOPIC_SEPARATOR) - return false; // we have not '/' before '*' - if (index != pattern.length() - 1) - return false; // we have something after the '*' - return true; - } - if (pattern.charAt(index) != topic.charAt(index)) - return false; - } - - if (index != topic.length()) - return false; - if (pattern.charAt(index - 1) == TOPIC_SEPARATOR) - return false; - return true; - } - - synchronized void register() { - unregister(); - - Hashtable props = new Hashtable(3); - props.put(WireConstants.WIREADMIN_EVENTS, new Integer(Integer.MAX_VALUE)); - waReg = bc.registerService(WireAdminListener.class.getName(), this, props); - } - - synchronized void unregister() { - if (waReg != null) { - waReg.unregister(); - waReg = null; - } - } - - static class EventHandlerTopics { - int topics; - - public EventHandlerTopics(final int topics) { - this.topics = topics; - } - } - - class EventHandlerIndex implements ServiceTrackerCustomizer { - - final int[] eventHandlerCount = new int[EVENT_TOPICS.length]; - int totalEventHandlerCount = 0; - - public synchronized Object addingService(final ServiceReference reference) { - - final int topics = process(reference); - - if (topics != 0 && totalEventHandlerCount++ == 0) { - register(); - } - - return new EventHandlerTopics(topics); - } - - public void modifiedService(ServiceReference reference, Object service) { - - removedService(reference, service); - - final EventHandlerTopics newTopics = (EventHandlerTopics) addingService(reference); - - ((EventHandlerTopics) service).topics = newTopics.topics; - } - - public synchronized void removedService(ServiceReference reference, Object service) { - - final int topics = ((EventHandlerTopics) service).topics; - - if (topics == 0) { - return; - } - - remove(topics); - - if (--totalEventHandlerCount == 0) { - unregister(); - } - } - - int process(final ServiceReference ref) { - - final Object topic = ref.getProperty(EventConstants.EVENT_TOPIC); - - if (!(topic instanceof String[])) { - return 0; - } - - final String[] topics = (String[]) topic; - - int matchingTopics = 0; - - for (int i = 0; i < topics.length; i++) { - matchingTopics |= processTopicPattern(topics[i]); - } - - return matchingTopics; - } - - int processTopicPattern(final String pattern) { - int matchingTopics = 0; - for (int i = 0; i < EVENT_TOPICS.length; i++) { - if (matchTopic(pattern, EVENT_TOPICS[i])) { - eventHandlerCount[i]++; - matchingTopics |= 1 << i; - } - } - return matchingTopics; - } - - void remove(final int topics) { - for (int i = 0; i < EVENT_TOPICS.length; i++) { - if ((topics & (1 << i)) != 0) { - eventHandlerCount[i]--; - } - } - } - - boolean hasEventHandlers(final int topicIndex) { - return eventHandlerCount[topicIndex] != 0; - } - - } - -} diff --git a/features/org.eclipse.equinox.server.servletbridge/.project b/features/org.eclipse.equinox.server.servletbridge/.project deleted file mode 100644 index 649ef74949..0000000000 --- a/features/org.eclipse.equinox.server.servletbridge/.project +++ /dev/null @@ -1,17 +0,0 @@ - - - org.eclipse.equinox.server.servletbridge - - - - - - org.eclipse.pde.FeatureBuilder - - - - - - org.eclipse.pde.FeatureNature - - diff --git a/features/org.eclipse.equinox.server.servletbridge/.settings/org.eclipse.core.runtime.prefs b/features/org.eclipse.equinox.server.servletbridge/.settings/org.eclipse.core.runtime.prefs deleted file mode 100644 index 5a0ad22d2a..0000000000 --- a/features/org.eclipse.equinox.server.servletbridge/.settings/org.eclipse.core.runtime.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -line.separator=\n diff --git a/features/org.eclipse.equinox.server.servletbridge/build.properties b/features/org.eclipse.equinox.server.servletbridge/build.properties deleted file mode 100644 index 0d9b9dc8ef..0000000000 --- a/features/org.eclipse.equinox.server.servletbridge/build.properties +++ /dev/null @@ -1,17 +0,0 @@ -############################################################################### -# Copyright (c) 2011 IBM Corporation and others. -# -# This program and the accompanying materials -# are made available under the terms of the Eclipse Public License 2.0 -# which accompanies this distribution, and is available at -# https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# IBM Corporation - initial API and implementation -############################################################################### -root=rootfiles -bin.includes = feature.xml,\ - rootfiles/,\ - feature.properties diff --git a/features/org.eclipse.equinox.server.servletbridge/feature.properties b/features/org.eclipse.equinox.server.servletbridge/feature.properties deleted file mode 100644 index b68c54acab..0000000000 --- a/features/org.eclipse.equinox.server.servletbridge/feature.properties +++ /dev/null @@ -1,39 +0,0 @@ -############################################################################### -# Copyright (c) 2010, 2011 IBM, Composent, Inc. and others. -# -# This program and the accompanying materials -# are made available under the terms of the Eclipse Public License 2.0 -# which accompanies this distribution, and is available at -# https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# IBM - initial API and implementation -############################################################################### -# feature.properties -# contains externalized strings for feature.xml -# "%foo" in feature.xml corresponds to the key "foo" in this file -# java.io.Properties file (ISO 8859-1 with "\" escapes) -# This file should be translated. - -# "featureName" property - name of the feature -featureName=Servletbridge Feature - -# "providerName" property - name of the company that provides the feature -providerName=Eclipse Equinox Project - -# "copyright" property - text of the "Feature Update Copyright" -copyright=\ -Copyright (c) 2010 IBM, Composent, Inc. and others.\n\ - -This program and the accompanying materials\n\ -are made available under the terms of the Eclipse Public License 2.0\n\ -which accompanies this distribution, and is available at\n\ -https://www.eclipse.org/legal/epl-2.0/ - -SPDX-License-Identifier: EPL-2.0\n\ -\n\ -Contributors:\n\ - IBM - initial API and implementation\n -################ end of copyright property #################################### \ No newline at end of file diff --git a/features/org.eclipse.equinox.server.servletbridge/feature.xml b/features/org.eclipse.equinox.server.servletbridge/feature.xml deleted file mode 100644 index 984d4e8d8d..0000000000 --- a/features/org.eclipse.equinox.server.servletbridge/feature.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - %copyright - - - - %license - - - - - - - - - diff --git a/features/org.eclipse.equinox.server.servletbridge/forceQualifierUpdate.txt b/features/org.eclipse.equinox.server.servletbridge/forceQualifierUpdate.txt deleted file mode 100644 index db46fa6a83..0000000000 --- a/features/org.eclipse.equinox.server.servletbridge/forceQualifierUpdate.txt +++ /dev/null @@ -1,4 +0,0 @@ -# To force a version qualifier update add the bug here -Bug 403352 - Update all parent versions to match our build stream -Bug 458346 - Unusual, hard to decipher error in I-build -Bug 506597 - Build failure on I20161026-2000 diff --git a/features/org.eclipse.equinox.server.servletbridge/pom.xml b/features/org.eclipse.equinox.server.servletbridge/pom.xml deleted file mode 100644 index 71bb1d518b..0000000000 --- a/features/org.eclipse.equinox.server.servletbridge/pom.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - 4.0.0 - - rt.equinox.bundles - org.eclipse.equinox.bundles - 4.24.0-SNAPSHOT - ../../ - - org.eclipse.equinox.feature - org.eclipse.equinox.server.servletbridge - 1.7.100-SNAPSHOT - eclipse-feature - diff --git a/features/org.eclipse.equinox.server.servletbridge/rootfiles/launch.ini b/features/org.eclipse.equinox.server.servletbridge/rootfiles/launch.ini deleted file mode 100644 index b4dd51e43f..0000000000 --- a/features/org.eclipse.equinox.server.servletbridge/rootfiles/launch.ini +++ /dev/null @@ -1,12 +0,0 @@ -# Eclipse Runtime Configuration Overrides -# These properties are loaded prior to starting the framework and can also be used to override System Properties -# @null is a special value used to override and clear the framework's copy of a System Property prior to starting the framework -# "*" can be used together with @null to clear System Properties that match a prefix name. - -osgi.*=@null -org.osgi.*=@null -eclipse.*=@null -org.eclipse.*=@null - -osgi.parentClassloader=app -osgi.contextClassLoaderParent=app diff --git a/features/org.eclipse.equinox.server.servletbridge/rootfiles/lib/org.eclipse.equinox.servletbridge_1.2.0.v20100201.jar b/features/org.eclipse.equinox.server.servletbridge/rootfiles/lib/org.eclipse.equinox.servletbridge_1.2.0.v20100201.jar deleted file mode 100644 index 03659595ee6643ba5f8af44e3009a38ce835620c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41162 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

    >&v>&Tib)cu#it}kP%)eW^?~R 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 mUVYO0$?ZYA9ZcB%lKzkH{C=W;I{ - - - - equinoxbridgeservlet - Equinox Bridge Servlet - Equinox Bridge Servlet - org.eclipse.equinox.servletbridge.BridgeServlet - - commandline - -console - - - enableFrameworkControls - true - - - - - 1 - - - equinoxbridgeservlet - /* - - - - equinoxbridgeservlet - *.jsp - - diff --git a/pom.xml b/pom.xml index 52c8d1f74e..7d0be2cd38 100644 --- a/pom.xml +++ b/pom.xml @@ -60,10 +60,6 @@ features/org.eclipse.equinox.server.p2 features/org.eclipse.equinox.core.sdk - - features/org.eclipse.equinox.server.simple features/org.eclipse.equinox.serverside.sdk bundles/org.eclipse.equinox.bidi.tests @@ -94,16 +90,8 @@ bundles/org.eclipse.equinox.console.tests bundles/org.eclipse.equinox.coordinator bundles/org.eclipse.equinox.device - bundles/org.eclipse.equinox.event - - bundles/org.eclipse.equinox.http.jetty bundles/org.eclipse.equinox.http.registry bundles/org.eclipse.equinox.http.servlet @@ -116,11 +104,6 @@ bundles/org.eclipse.equinox.region bundles/org.eclipse.equinox.servletbridge - - - bundles/org.eclipse.equinox.servletbridge.template bundles/org.eclipse.equinox.slf4j.stub bundles/org.eclipse.equinox.transforms.hook bundles/org.eclipse.equinox.transforms.xslt