You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2013/09/30 12:28:10 UTC
svn commit: r1527508 [1/4] - in /sling/trunk/tooling/ide: ./ api-test/ api/
api/META-INF/ api/OSGI-INF/ api/src/org/apache/sling/ide/filter/
api/src/org/apache/sling/ide/osgi/
api/src/org/apache/sling/ide/serialization/
api/src/org/apache/sling/ide/tra...
Author: rombert
Date: Mon Sep 30 10:28:08 2013
New Revision: 1527508
URL: http://svn.apache.org/r1527508
Log:
Merged branches/tooling-ide-vlt back into trunk
Base directory: tooling/ide
Now that we have a Jackrabbit FileVault release, we can start working on trunk.
Added:
sling/trunk/tooling/ide/README.txt
- copied unchanged from r1527500, sling/branches/tooling-ide-vlt/tooling/ide/README.txt
sling/trunk/tooling/ide/api-test/ (props changed)
- copied from r1527500, sling/branches/tooling-ide-vlt/tooling/ide/api-test/
sling/trunk/tooling/ide/api/OSGI-INF/
- copied from r1527500, sling/branches/tooling-ide-vlt/tooling/ide/api/OSGI-INF/
sling/trunk/tooling/ide/api/src/org/apache/sling/ide/osgi/
- copied from r1527500, sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/osgi/
sling/trunk/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationData.java
- copied unchanged from r1527500, sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationData.java
sling/trunk/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationDataBuilder.java
- copied unchanged from r1527500, sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationDataBuilder.java
sling/trunk/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationException.java
- copied unchanged from r1527500, sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationException.java
sling/trunk/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationKind.java
- copied unchanged from r1527500, sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationKind.java
sling/trunk/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationKindManager.java
- copied unchanged from r1527500, sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationKindManager.java
sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/TracingCommand.java
- copied unchanged from r1527500, sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/transport/TracingCommand.java
sling/trunk/tooling/ide/artifacts/
- copied from r1527500, sling/branches/tooling-ide-vlt/tooling/ide/artifacts/
sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/ResourceUtil.java
- copied unchanged from r1527500, sling/branches/tooling-ide-vlt/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/ResourceUtil.java
sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/SetBundleVersionCommand.java
- copied unchanged from r1527500, sling/branches/tooling-ide-vlt/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/SetBundleVersionCommand.java
sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/BundleStateHelper.java
- copied unchanged from r1527500, sling/branches/tooling-ide-vlt/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/BundleStateHelper.java
sling/trunk/tooling/ide/eclipse-ui/lib/
- copied from r1527500, sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/lib/
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/OpenHtmlInBrowserAction.java
- copied unchanged from r1527500, sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/OpenHtmlInBrowserAction.java
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/editors/
- copied from r1527500, sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/editors/
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportRepositoryContentAction.java
- copied unchanged from r1527500, sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportRepositoryContentAction.java
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ServerModuleDecorator.java
- copied unchanged from r1527500, sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ServerModuleDecorator.java
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/unstructured.png
- copied unchanged from r1527500, sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/unstructured.png
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/Sorter.java
- copied unchanged from r1527500, sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/Sorter.java
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/TolerantXMLTokenizer.java
- copied unchanged from r1527500, sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/TolerantXMLTokenizer.java
sling/trunk/tooling/ide/impl-vlt/ (props changed)
- copied from r1527500, sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/
sling/trunk/tooling/ide/impl-vlt-test/ (props changed)
- copied from r1527500, sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt-test/
sling/trunk/tooling/ide/target-definition/Sling IDE Tooling.launch
- copied unchanged from r1527500, sling/branches/tooling-ide-vlt/tooling/ide/target-definition/Sling IDE Tooling.launch
sling/trunk/tooling/ide/target-definition/org.apache.sling.ide.target-definition-dev.target
- copied unchanged from r1527500, sling/branches/tooling-ide-vlt/tooling/ide/target-definition/org.apache.sling.ide.target-definition-dev.target
sling/trunk/tooling/ide/upload-p2-site.sh
- copied unchanged from r1527500, sling/branches/tooling-ide-vlt/tooling/ide/upload-p2-site.sh
sling/trunk/tooling/ide/vlt-wrapper/ (props changed)
- copied from r1527500, sling/branches/tooling-ide-vlt/tooling/ide/vlt-wrapper/
Removed:
sling/trunk/tooling/ide/api/src/org/apache/sling/slingclipse/
sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/wst/internal/
sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/slingclipse/helper/
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/wst/ui/
sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/AddNodeCommand.java
sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/TracingCommand.java
sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/serialization/
sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/slingclipse/http/
Modified:
sling/trunk/tooling/ide/ (props changed)
sling/trunk/tooling/ide/api/META-INF/MANIFEST.MF
sling/trunk/tooling/ide/api/build.properties
sling/trunk/tooling/ide/api/src/org/apache/sling/ide/filter/Filter.java
sling/trunk/tooling/ide/api/src/org/apache/sling/ide/filter/FilterLocator.java
sling/trunk/tooling/ide/api/src/org/apache/sling/ide/filter/FilterResult.java
sling/trunk/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationManager.java
sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/Command.java
sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/FileInfo.java
sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/Repository.java
sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/ResourceProxy.java
sling/trunk/tooling/ide/api/src/org/apache/sling/ide/util/PathUtil.java
sling/trunk/tooling/ide/eclipse-core/META-INF/MANIFEST.MF
sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/ConfigurationHelper.java
sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/ISlingLaunchpadServer.java
sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/MavenLaunchHelper.java
sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/ProjectUtil.java
sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/ServerUtil.java
sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/Activator.java
sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/ProjectHelper.java
sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadBehaviour.java
sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadServer.java
sling/trunk/tooling/ide/eclipse-m2e-ui/META-INF/MANIFEST.MF
sling/trunk/tooling/ide/eclipse-m2e-ui/build.properties
sling/trunk/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/EmbeddedArchetypeInstaller.java
sling/trunk/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/internal/Activator.java
sling/trunk/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/AbstractNewSlingApplicationWizard.java
sling/trunk/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/ArchetypeParametersWizardPage.java
sling/trunk/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/ChooseArchetypeWizardPage.java
sling/trunk/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/NewSlingBundleWizard.java
sling/trunk/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/SetupServerWizardPage.java
sling/trunk/tooling/ide/eclipse-ui/META-INF/MANIFEST.MF
sling/trunk/tooling/ide/eclipse-ui/build.properties
sling/trunk/tooling/ide/eclipse-ui/plugin.xml
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/WhitelabelSupport.java
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/Activator.java
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ConnectionEditorSection.java
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportContentAction.java
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportWizard.java
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportWizardPage.java
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/InstallEditorSection.java
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/SharedImages.java
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/JcrContentContentProvider.java
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/DirNode.java
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/GenericJcrRootFile.java
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/LinkHelper.java
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/ModifiableProperties.java
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/wizards/ConvertToBundleAction.java
sling/trunk/tooling/ide/feature/feature.xml
sling/trunk/tooling/ide/impl-resource-test/pom.xml
sling/trunk/tooling/ide/impl-resource-test/src/test/java/org/apache/sling/ide/impl/resource/serialization/SimpleXmlSerializationManagerTest.java
sling/trunk/tooling/ide/impl-resource/META-INF/MANIFEST.MF
sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/filer/SimpleFilter.java
sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/filer/SimpleFilterLocator.java
sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/serialization/SimpleXmlSerializationManager.java
sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/AbstractCommand.java
sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/AbstractRepository.java
sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/DeleteNodeCommand.java
sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/GetNodeContentCommand.java
sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/RepositoryImpl.java
sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/UpdateContentCommand.java
sling/trunk/tooling/ide/m2e-feature/feature.xml
sling/trunk/tooling/ide/pom.xml
sling/trunk/tooling/ide/target-definition/ (props changed)
sling/trunk/tooling/ide/target-definition/org.apache.sling.ide.target-definition.target
Propchange: sling/trunk/tooling/ide/
------------------------------------------------------------------------------
svn:mergeinfo = /sling/branches/tooling-ide-vlt/tooling/ide:1514633-1527500
Propchange: sling/trunk/tooling/ide/api-test/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Mon Sep 30 10:28:08 2013
@@ -0,0 +1,4 @@
+target
+.classpath
+.settings
+.project
Modified: sling/trunk/tooling/ide/api/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/api/META-INF/MANIFEST.MF?rev=1527508&r1=1527507&r2=1527508&view=diff
==============================================================================
--- sling/trunk/tooling/ide/api/META-INF/MANIFEST.MF (original)
+++ sling/trunk/tooling/ide/api/META-INF/MANIFEST.MF Mon Sep 30 10:28:08 2013
@@ -3,11 +3,20 @@ Bundle-ManifestVersion: 2
Bundle-Name: Slingclipse-api
Bundle-SymbolicName: org.apache.sling.ide.api
Bundle-Version: 0.0.1.qualifier
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Export-Package: org.apache.sling.ide.filter,
+ org.apache.sling.ide.osgi,
org.apache.sling.ide.serialization,
org.apache.sling.ide.transport,
org.apache.sling.ide.util
+Import-Package: org.apache.commons.httpclient;version="3.1.0",
+ org.apache.commons.httpclient.auth;version="3.1.0",
+ org.apache.commons.httpclient.methods;version="3.1.0",
+ org.apache.commons.httpclient.methods.multipart;version="3.1.0",
+ org.apache.commons.httpclient.params;version="3.1.0",
+ org.apache.commons.io;version="2.0.1",
+ org.json,
+ org.osgi.framework;version="1.6.0",
+ org.osgi.service.event
+Service-Component: OSGI-INF/*.xml
Modified: sling/trunk/tooling/ide/api/build.properties
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/api/build.properties?rev=1527508&r1=1527507&r2=1527508&view=diff
==============================================================================
--- sling/trunk/tooling/ide/api/build.properties (original)
+++ sling/trunk/tooling/ide/api/build.properties Mon Sep 30 10:28:08 2013
@@ -1,4 +1,5 @@
source.. = src/
output.. = bin/
bin.includes = META-INF/,\
- .
+ .,\
+ OSGI-INF/
Modified: sling/trunk/tooling/ide/api/src/org/apache/sling/ide/filter/Filter.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/api/src/org/apache/sling/ide/filter/Filter.java?rev=1527508&r1=1527507&r2=1527508&view=diff
==============================================================================
--- sling/trunk/tooling/ide/api/src/org/apache/sling/ide/filter/Filter.java (original)
+++ sling/trunk/tooling/ide/api/src/org/apache/sling/ide/filter/Filter.java Mon Sep 30 10:28:08 2013
@@ -16,6 +16,10 @@
*/
package org.apache.sling.ide.filter;
+import java.io.File;
+
+import org.apache.sling.ide.transport.RepositoryInfo;
+
public interface Filter {
/**
@@ -23,5 +27,5 @@ public interface Filter {
* @param relativeFilePath a relative path
* @return the filter result
*/
- FilterResult filter(String relativeFilePath);
+ FilterResult filter(File contentSyncRoot, String relativeFilePath, RepositoryInfo repositoryInfo);
}
Modified: sling/trunk/tooling/ide/api/src/org/apache/sling/ide/filter/FilterLocator.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/api/src/org/apache/sling/ide/filter/FilterLocator.java?rev=1527508&r1=1527507&r2=1527508&view=diff
==============================================================================
--- sling/trunk/tooling/ide/api/src/org/apache/sling/ide/filter/FilterLocator.java (original)
+++ sling/trunk/tooling/ide/api/src/org/apache/sling/ide/filter/FilterLocator.java Mon Sep 30 10:28:08 2013
@@ -22,7 +22,19 @@ import java.io.InputStream;
public interface FilterLocator {
+ // TODO - should be File[] to allow multiple lookups, see {filter-vlt.xml, filter.xml}
File findFilterLocation(File syncDirectory);
+ /**
+ * Loads a filter based on the raw <tt>filterFileContents</tt>
+ *
+ * <p>
+ * If the <tt>filterFileContents</tt> is null it returns a default filter
+ * </p>
+ *
+ * @param filterFileContents the raw contents of the filter file, possibly null
+ * @return
+ * @throws IOException
+ */
Filter loadFilter(InputStream filterFileContents) throws IOException;
}
Modified: sling/trunk/tooling/ide/api/src/org/apache/sling/ide/filter/FilterResult.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/api/src/org/apache/sling/ide/filter/FilterResult.java?rev=1527508&r1=1527507&r2=1527508&view=diff
==============================================================================
--- sling/trunk/tooling/ide/api/src/org/apache/sling/ide/filter/FilterResult.java (original)
+++ sling/trunk/tooling/ide/api/src/org/apache/sling/ide/filter/FilterResult.java Mon Sep 30 10:28:08 2013
@@ -17,5 +17,17 @@
package org.apache.sling.ide.filter;
public enum FilterResult {
- ALLOW, DENY;
+ /**
+ * Signals that the resource is allowed by the filter
+ */
+ ALLOW,
+ /**
+ * Signals that the resource is not allowed by the filter
+ */
+ DENY,
+ /**
+ * Signals that the resources is not explicitly included in the filter definitions but it is a parent of a resource
+ * which is allowed
+ */
+ PREREQUISITE;
}
Modified: sling/trunk/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationManager.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationManager.java?rev=1527508&r1=1527507&r2=1527508&view=diff
==============================================================================
--- sling/trunk/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationManager.java (original)
+++ sling/trunk/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationManager.java Mon Sep 30 10:28:08 2013
@@ -16,19 +16,30 @@
*/
package org.apache.sling.ide.serialization;
+import java.io.File;
import java.io.IOException;
import java.io.InputStream;
-import java.util.Map;
+
+import org.apache.sling.ide.transport.Repository;
+import org.apache.sling.ide.transport.ResourceProxy;
public interface SerializationManager {
+ void destroy();
+
boolean isSerializationFile(String filePath);
String getBaseResourcePath(String serializationFilePath);
- String getSerializationFilePath(String baseFilePath);
+ String getSerializationFilePath(String baseFilePath, SerializationKind serializationKind);
- String buildSerializationData(Map<String, Object> content) throws IOException;
+ SerializationDataBuilder newBuilder(Repository repository, File contentSyncRoot) throws SerializationException;
- Map<String, Object> readSerializationData(InputStream source) throws IOException;
+ /**
+ * @param filePath The filePath, in repository format
+ * @param source
+ * @return
+ * @throws IOException
+ */
+ ResourceProxy readSerializationData(String filePath, InputStream source) throws IOException;
}
Modified: sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/Command.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/Command.java?rev=1527508&r1=1527507&r2=1527508&view=diff
==============================================================================
--- sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/Command.java (original)
+++ sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/Command.java Mon Sep 30 10:28:08 2013
@@ -19,4 +19,6 @@ package org.apache.sling.ide.transport;
public interface Command<T> {
Result<T> execute();
+
+ String getPath();
}
Modified: sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/FileInfo.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/FileInfo.java?rev=1527508&r1=1527507&r2=1527508&view=diff
==============================================================================
--- sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/FileInfo.java (original)
+++ sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/FileInfo.java Mon Sep 30 10:28:08 2013
@@ -36,6 +36,9 @@ public class FileInfo {
this.relativeLocation = relativeLocation;
}
+ /**
+ * @return the absolute location of the file on the filesystem
+ */
public String getLocation() {
return location;
}
@@ -44,6 +47,9 @@ public class FileInfo {
return name;
}
+ /**
+ * @return the location of the file relative to the repository root
+ */
public String getRelativeLocation() {
return relativeLocation;
}
Modified: sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/Repository.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/Repository.java?rev=1527508&r1=1527507&r2=1527508&view=diff
==============================================================================
--- sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/Repository.java (original)
+++ sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/Repository.java Mon Sep 30 10:28:08 2013
@@ -16,8 +16,6 @@
*/
package org.apache.sling.ide.transport;
-import java.util.Map;
-
public interface Repository {
public static String JCR_PRIMARY_TYPE= "jcr:primaryType";
@@ -81,15 +79,27 @@ public interface Repository {
// FIXME this is not thread-safe and with multiple sling servers will fail intermitently
public void setRepositoryInfo(RepositoryInfo repositoryInfo);
- Command<Void> newAddNodeCommand(FileInfo fileInfo);
-
- Command<Void> newUpdateContentNodeCommand(FileInfo fileInfo, Map<String, Object> serializationData);
+ RepositoryInfo getRepositoryInfo();
+
+ Command<Void> newAddOrUpdateNodeCommand(FileInfo fileInfo, ResourceProxy resourceProxy);
- Command<Void> newDeleteNodeCommand(FileInfo fileInfo);
+ Command<Void> newDeleteNodeCommand(ResourceProxy resourceProxy);
+ /**
+ * Retrieves information about the resource located at <tt>path</tt> and its direct descendants
+ *
+ * @param path
+ * @return a <tt>ResourceProxy</tt> rooted at <tt>path</tt> and its direct descendants
+ */
Command<ResourceProxy> newListChildrenNodeCommand(String path);
- Command<Map<String, Object>> newGetNodeContentCommand(String path);
+ /**
+ * Retrieves all properties of a resource located at <tt>path</tt>
+ *
+ * @param path
+ * @return all properties for the resource located at <tt>path</tt>
+ */
+ Command<ResourceProxy> newGetNodeContentCommand(String path);
Command<byte[]> newGetNodeCommand(String path);
}
Modified: sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/ResourceProxy.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/ResourceProxy.java?rev=1527508&r1=1527507&r2=1527508&view=diff
==============================================================================
--- sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/ResourceProxy.java (original)
+++ sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/ResourceProxy.java Mon Sep 30 10:28:08 2013
@@ -24,11 +24,17 @@ import java.util.Map;
public class ResourceProxy {
private final String path;
- private final Map<String, Object> properties = new HashMap<String, Object>();
+ private final Map<String, Object> properties;
private final List<ResourceProxy> children = new ArrayList<ResourceProxy>();
+ private final Map<Class<?>, Object> adapted = new HashMap<Class<?>, Object>(1);
public ResourceProxy(String path) {
+ this(path, new HashMap<String, Object>());
+ }
+
+ public ResourceProxy(String path, Map<String, Object> properties) {
this.path = path;
+ this.properties = properties;
}
public void addChild(ResourceProxy child) {
@@ -53,6 +59,19 @@ public class ResourceProxy {
return properties;
}
+ public <T> void addAdapted(Class<T> klazz, T adaptedInstance) {
+
+ adapted.put(klazz, adaptedInstance);
+ }
+
+ public <T> T adaptTo(Class<T> klazz) {
+
+ // OK to suppress warnings since type safety is insured by addAdapted
+ @SuppressWarnings("unchecked")
+ T res = (T) adapted.get(klazz);
+
+ return res;
+ }
@Override
public String toString() {
Modified: sling/trunk/tooling/ide/api/src/org/apache/sling/ide/util/PathUtil.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/api/src/org/apache/sling/ide/util/PathUtil.java?rev=1527508&r1=1527507&r2=1527508&view=diff
==============================================================================
--- sling/trunk/tooling/ide/api/src/org/apache/sling/ide/util/PathUtil.java (original)
+++ sling/trunk/tooling/ide/api/src/org/apache/sling/ide/util/PathUtil.java Mon Sep 30 10:28:08 2013
@@ -32,4 +32,9 @@ public class PathUtil {
throw new AssertionError("unreachable");
}
+
+ public static String getName(String path) {
+
+ return path.substring(path.lastIndexOf('/') + 1);
+ }
}
Modified: sling/trunk/tooling/ide/eclipse-core/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-core/META-INF/MANIFEST.MF?rev=1527508&r1=1527507&r2=1527508&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-core/META-INF/MANIFEST.MF (original)
+++ sling/trunk/tooling/ide/eclipse-core/META-INF/MANIFEST.MF Mon Sep 30 10:28:08 2013
@@ -7,27 +7,20 @@ Require-Bundle: org.eclipse.core.runtime
org.eclipse.equinox.ds;bundle-version="1.2.1",
org.eclipse.osgi.services;bundle-version="3.2.100",
org.eclipse.core.resources,
- org.eclipse.ui,
- org.eclipse.m2e.core;bundle-version="1.4.0",
- org.eclipse.m2e.archetype.common;bundle-version="1.4.0"
+ org.eclipse.ui
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-ClassPath: .
Import-Package: org.apache.commons.httpclient;version="3.1.0",
org.apache.commons.httpclient.auth;version="3.1.0",
org.apache.commons.httpclient.methods;version="3.1.0",
- org.apache.maven,
- org.apache.maven.artifact,
- org.apache.maven.artifact.handler,
- org.apache.maven.artifact.installer,
- org.apache.maven.artifact.repository,
- org.apache.maven.execution,
- org.apache.maven.model,
- org.apache.maven.plugin,
+ org.apache.commons.httpclient.params;version="3.1.0",
+ org.apache.commons.io;version="2.0.1",
+ org.apache.sling.ide.artifacts,
org.apache.sling.ide.filter,
+ org.apache.sling.ide.osgi,
org.apache.sling.ide.serialization,
org.apache.sling.ide.transport,
- org.codehaus.plexus,
org.eclipse.core.commands,
org.eclipse.core.commands.operations,
org.eclipse.core.resources,
@@ -46,8 +39,8 @@ Import-Package: org.apache.commons.httpc
org.eclipse.wst.server.core,
org.eclipse.wst.server.core.model,
org.eclipse.wst.server.core.util,
- org.osgi.service.component;version="1.1.0",
- org.sonatype.aether
+ org.json,
+ org.osgi.service.component;version="1.1.0"
Export-Package: org.apache.sling.ide.eclipse.core,
org.apache.sling.ide.eclipse.core.internal
Service-Component: OSGI-INF/Tracer.xml
Modified: sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/ConfigurationHelper.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/ConfigurationHelper.java?rev=1527508&r1=1527507&r2=1527508&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/ConfigurationHelper.java (original)
+++ sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/ConfigurationHelper.java Mon Sep 30 10:28:08 2013
@@ -16,11 +16,6 @@
*/
package org.apache.sling.ide.eclipse.core;
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -37,15 +32,6 @@ public class ConfigurationHelper {
fp2.installProjectFacet(slingContentFacet.getLatestVersion(), null, null);
ProjectUtil.setSyncDirectoryPath(aContentProject, jcr_root);
-
- // temp hack: install the launch file
- IFolder dotLaunches = aContentProject.getFolder(".settings").getFolder(".launches");
- dotLaunches.create(true, true, monitor);
- IFile launchFile = dotLaunches.getFile("clean_package_content_package_install.launch");
- String l = MavenLaunchHelper.createMavenLaunchConfigMemento(aContentProject.getLocation().toOSString(),
- "clean package content-package:install", null, false, null);
- InputStream in = new ByteArrayInputStream(l.getBytes());
- launchFile.create(in, true, monitor);
}
public static void convertToBundleProject(IProject aBundleProject)
Modified: sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/ISlingLaunchpadServer.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/ISlingLaunchpadServer.java?rev=1527508&r1=1527507&r2=1527508&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/ISlingLaunchpadServer.java (original)
+++ sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/ISlingLaunchpadServer.java Mon Sep 30 10:28:08 2013
@@ -17,6 +17,7 @@
package org.apache.sling.ide.eclipse.core;
import org.eclipse.core.runtime.IProgressMonitor;
+import org.osgi.framework.Version;
public interface ISlingLaunchpadServer {
@@ -31,10 +32,15 @@ public interface ISlingLaunchpadServer {
public static final String PROP_DEBUG_PORT = "launchpad.debugPort";
public static final String PROP_INSTALL_LOCALLY = "launchpad.installLocally";
+ public static final String PROP_BUNDLE_VERSION_FORMAT = "launchpad.bundle.%s.version";
void setPublishState(int publishState, IProgressMonitor monitor);
int getPublishState();
ISlingLaunchpadConfiguration getConfiguration();
+
+ void setBundleVersion(String bundleSymbolicName, Version version, IProgressMonitor monitor);
+
+ Version getBundleVersion(String bundleSymbolicName);
}
Modified: sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/MavenLaunchHelper.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/MavenLaunchHelper.java?rev=1527508&r1=1527507&r2=1527508&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/MavenLaunchHelper.java (original)
+++ sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/MavenLaunchHelper.java Mon Sep 30 10:28:08 2013
@@ -48,7 +48,7 @@ public class MavenLaunchHelper {
" <stringAttribute key=\"M2_RUNTIME\" value=\"EMBEDDED\"/>"+ NL+
" <booleanAttribute key=\"M2_SKIP_TESTS\" value=\"true\"/>"+ NL+
" <intAttribute key=\"M2_THREADS\" value=\"1\"/>"+ NL+
- " <booleanAttribute key=\"M2_UPDATE_SNAPSHOTS\" value=\"true\"/>"+ NL+
+ " <booleanAttribute key=\"M2_UPDATE_SNAPSHOTS\" value=\"false\"/>"+ NL+
" <booleanAttribute key=\"M2_WORKSPACE_RESOLUTION\" value=\"false\"/>"+ NL+
" <stringAttribute key=\"org.eclipse.jdt.launching.WORKING_DIRECTORY\" value=\""+location+"\"/>"+ NL+
" </launchConfiguration>";
Modified: sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/ProjectUtil.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/ProjectUtil.java?rev=1527508&r1=1527507&r2=1527508&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/ProjectUtil.java (original)
+++ sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/ProjectUtil.java Mon Sep 30 10:28:08 2013
@@ -16,6 +16,8 @@
*/
package org.apache.sling.ide.eclipse.core;
+import java.io.File;
+
import org.apache.sling.ide.eclipse.core.internal.Activator;
import org.apache.sling.ide.eclipse.core.internal.ProjectHelper;
import org.eclipse.core.resources.IFolder;
@@ -76,6 +78,10 @@ public abstract class ProjectUtil {
return value;
}
+
+ public static File getSyncDirectoryFile(IProject project) {
+ return new File(project.getLocation().toFile(), getSyncDirectoryValue(project));
+ }
public static IPath getSyncDirectoryFullPath(IProject project) {
Modified: sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/ServerUtil.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/ServerUtil.java?rev=1527508&r1=1527507&r2=1527508&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/ServerUtil.java (original)
+++ sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/ServerUtil.java Mon Sep 30 10:28:08 2013
@@ -23,32 +23,42 @@ import org.apache.sling.ide.eclipse.core
import org.apache.sling.ide.eclipse.core.internal.SlingLaunchpadServer;
import org.apache.sling.ide.transport.Repository;
import org.apache.sling.ide.transport.RepositoryInfo;
+import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Status;
import org.eclipse.wst.server.core.IServer;
public abstract class ServerUtil {
- public static Repository getRepository(IServer server, IProgressMonitor monitor) {
+ public static Repository getRepository(IServer server, IProgressMonitor monitor) throws CoreException {
- ISlingLaunchpadServer launchpadServer = (ISlingLaunchpadServer) server.loadAdapter(SlingLaunchpadServer.class,
- monitor);
-
- ISlingLaunchpadConfiguration configuration = launchpadServer.getConfiguration();
Repository repository = Activator.getDefault().getRepository();
try {
- // TODO configurable scheme?
- URI uri = new URI("http", null, server.getHost(), configuration.getPort(), configuration.getContextPath(),
- null, null);
- RepositoryInfo repositoryInfo = new RepositoryInfo(configuration.getUsername(),
- configuration.getPassword(), uri.toString());
+ RepositoryInfo repositoryInfo = getRepositoryInfo(server, monitor);
repository.setRepositoryInfo(repositoryInfo);
} catch (URISyntaxException e) {
- // TODO handle error
+ throw new CoreException(new Status(Status.ERROR, Activator.PLUGIN_ID, e.getMessage(), e));
+ } catch (RuntimeException e) {
+ throw new CoreException(new Status(Status.ERROR, Activator.PLUGIN_ID, e.getMessage(), e));
}
return repository;
}
+ public static RepositoryInfo getRepositoryInfo(IServer server, IProgressMonitor monitor) throws URISyntaxException {
+
+ ISlingLaunchpadServer launchpadServer = (ISlingLaunchpadServer) server.loadAdapter(SlingLaunchpadServer.class,
+ monitor);
+
+ ISlingLaunchpadConfiguration configuration = launchpadServer.getConfiguration();
+
+ // TODO configurable scheme?
+ URI uri = new URI("http", null, server.getHost(), configuration.getPort(), configuration.getContextPath(),
+ null, null);
+ return new RepositoryInfo(configuration.getUsername(),
+ configuration.getPassword(), uri.toString());
+ }
+
private ServerUtil() {
}
Modified: sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/Activator.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/Activator.java?rev=1527508&r1=1527507&r2=1527508&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/Activator.java (original)
+++ sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/Activator.java Mon Sep 30 10:28:08 2013
@@ -18,6 +18,7 @@ package org.apache.sling.ide.eclipse.cor
import org.apache.sling.ide.eclipse.core.ServiceUtil;
import org.apache.sling.ide.filter.FilterLocator;
+import org.apache.sling.ide.osgi.OsgiClientFactory;
import org.apache.sling.ide.serialization.SerializationManager;
import org.apache.sling.ide.transport.Repository;
import org.eclipse.core.runtime.Plugin;
@@ -43,6 +44,7 @@ public class Activator extends Plugin {
private ServiceTracker<Repository, Repository> repository;
private ServiceTracker<SerializationManager, SerializationManager> serializationManager;
private ServiceTracker<FilterLocator, FilterLocator> filterLocator;
+ private ServiceTracker<OsgiClientFactory, OsgiClientFactory> osgiClientFactory;
public void start(BundleContext context) throws Exception {
super.start(context);
@@ -57,6 +59,10 @@ public class Activator extends Plugin {
filterLocator = new ServiceTracker<FilterLocator, FilterLocator>(context, FilterLocator.class, null);
filterLocator.open();
+
+ osgiClientFactory = new ServiceTracker<OsgiClientFactory, OsgiClientFactory>(context, OsgiClientFactory.class,
+ null);
+ osgiClientFactory.open();
}
/*
@@ -67,6 +73,7 @@ public class Activator extends Plugin {
repository.close();
serializationManager.close();
filterLocator.close();
+ osgiClientFactory.close();
plugin = null;
super.stop(context);
@@ -93,4 +100,8 @@ public class Activator extends Plugin {
public FilterLocator getFilterLocator() {
return ServiceUtil.getNotNull(filterLocator);
}
+
+ public OsgiClientFactory getOsgiClientFactory() {
+ return ServiceUtil.getNotNull(osgiClientFactory);
+ }
}
Modified: sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/ProjectHelper.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/ProjectHelper.java?rev=1527508&r1=1527507&r2=1527508&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/ProjectHelper.java (original)
+++ sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/ProjectHelper.java Mon Sep 30 10:28:08 2013
@@ -98,6 +98,10 @@ public class ProjectHelper {
}
private static boolean containsFacet(IProject project, String facetId) {
+ // deleted modules can trigger a publish call without having an attached project
+ if (project == null) {
+ return false;
+ }
IFacetedProject facetedProject = (IFacetedProject) project.getAdapter(IFacetedProject.class);
if (facetedProject==null ) {
return false;
@@ -106,7 +110,7 @@ public class ProjectHelper {
return facetedProject.hasProjectFacet(facet);
}
- static IJavaProject asJavaProject(IProject project) {
+ public static IJavaProject asJavaProject(IProject project) {
return JavaCore.create(project);
}
Modified: sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadBehaviour.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadBehaviour.java?rev=1527508&r1=1527507&r2=1527508&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadBehaviour.java (original)
+++ sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadBehaviour.java Mon Sep 30 10:28:08 2013
@@ -20,30 +20,34 @@ import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
+import java.net.URISyntaxException;
import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
-import org.apache.commons.httpclient.Credentials;
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.HttpException;
-import org.apache.commons.httpclient.URIException;
-import org.apache.commons.httpclient.UsernamePasswordCredentials;
-import org.apache.commons.httpclient.auth.AuthScope;
-import org.apache.commons.httpclient.methods.PostMethod;
+import org.apache.commons.io.IOUtils;
+import org.apache.sling.ide.artifacts.EmbeddedArtifactLocator;
import org.apache.sling.ide.eclipse.core.ISlingLaunchpadServer;
import org.apache.sling.ide.eclipse.core.MavenLaunchHelper;
import org.apache.sling.ide.eclipse.core.ProjectUtil;
+import org.apache.sling.ide.eclipse.core.ResourceUtil;
import org.apache.sling.ide.eclipse.core.ServerUtil;
import org.apache.sling.ide.filter.Filter;
import org.apache.sling.ide.filter.FilterLocator;
import org.apache.sling.ide.filter.FilterResult;
+import org.apache.sling.ide.osgi.OsgiClient;
+import org.apache.sling.ide.osgi.OsgiClientException;
+import org.apache.sling.ide.serialization.SerializationException;
+import org.apache.sling.ide.serialization.SerializationKind;
import org.apache.sling.ide.serialization.SerializationManager;
import org.apache.sling.ide.transport.Command;
import org.apache.sling.ide.transport.FileInfo;
import org.apache.sling.ide.transport.Repository;
+import org.apache.sling.ide.transport.RepositoryInfo;
import org.apache.sling.ide.transport.ResourceProxy;
import org.apache.sling.ide.transport.Result;
import org.eclipse.core.resources.IFile;
@@ -68,6 +72,7 @@ import org.eclipse.wst.server.core.IServ
import org.eclipse.wst.server.core.model.IModuleResource;
import org.eclipse.wst.server.core.model.IModuleResourceDelta;
import org.eclipse.wst.server.core.model.ServerBehaviourDelegate;
+import org.osgi.framework.Version;
public class SlingLaunchpadBehaviour extends ServerBehaviourDelegate {
@@ -89,14 +94,40 @@ public class SlingLaunchpadBehaviour ext
Result<ResourceProxy> result = null;
if (getServer().getMode().equals(ILaunchManager.DEBUG_MODE)) {
- debuggerConnection = new JVMDebuggerConnection();
- success = debuggerConnection.connectInDebugMode(launch, getServer(), monitor);
-
+ debuggerConnection = new JVMDebuggerConnection();
+ success = debuggerConnection.connectInDebugMode(launch, getServer(), monitor);
+
} else {
-
- Command<ResourceProxy> command = ServerUtil.getRepository(getServer(), monitor).newListChildrenNodeCommand("/");
- result = command.execute();
- success = result.isSuccess();
+
+ Repository repository;
+ try {
+ repository = ServerUtil.getRepository(getServer(), monitor);
+ } catch (CoreException e) {
+ setServerState(IServer.STATE_STOPPED);
+ throw e;
+ }
+ Command<ResourceProxy> command = repository.newListChildrenNodeCommand("/");
+ result = command.execute();
+ success = result.isSuccess();
+
+ RepositoryInfo repositoryInfo;
+ try {
+ repositoryInfo = ServerUtil.getRepositoryInfo(getServer(), monitor);
+ OsgiClient client = Activator.getDefault().getOsgiClientFactory().createOsgiClient(repositoryInfo);
+ Version bundleVersion = client.getBundleVersion(EmbeddedArtifactLocator.SUPPORT_BUNDLE_SYMBOLIC_NAME);
+
+ ISlingLaunchpadServer launchpadServer = (ISlingLaunchpadServer) getServer().loadAdapter(SlingLaunchpadServer.class,
+ monitor);
+ launchpadServer.setBundleVersion(EmbeddedArtifactLocator.SUPPORT_BUNDLE_SYMBOLIC_NAME, bundleVersion,
+ monitor);
+
+ } catch (URISyntaxException e) {
+ Activator.getDefault().getLog().log(new Status(IStatus.WARNING, Activator.PLUGIN_ID,
+ "Failed retrieving information about the installation support bundle", e));
+ } catch (OsgiClientException e) {
+ Activator.getDefault().getLog().log(new Status(IStatus.WARNING, Activator.PLUGIN_ID,
+ "Failed retrieving information about the installation support bundle", e));
+ }
}
if (success) {
@@ -107,8 +138,7 @@ public class SlingLaunchpadBehaviour ext
if (result != null) {
message += " (" + result.toString() + ")";
}
- throw new CoreException(new Status(IStatus.ERROR, "org.apache.sling.ide.eclipse.wst",
- message));
+ throw new CoreException(new Status(IStatus.ERROR, "org.apache.sling.ide.eclipse.wst", message));
}
}
@@ -168,16 +198,42 @@ public class SlingLaunchpadBehaviour ext
System.out.println(trace.toString());
- if (ProjectHelper.isBundleProject(module[0].getProject())) {
- String serverMode = getServer().getMode();
- if (!serverMode.equals(ILaunchManager.DEBUG_MODE)) {
- // in debug mode, we rely on the hotcode replacement feature of eclipse/jvm
- // otherwise, for run and profile modes we explicitly publish the bundle module
- // TODO: make this configurable as part of the server config
- publishBundleModule(module, monitor);
- }
- } else if (ProjectHelper.isContentProject(module[0].getProject())) {
- publishContentModule(kind, deltaKind, module, monitor);
+ if (kind == IServer.PUBLISH_FULL && deltaKind == ServerBehaviourDelegate.REMOVED) {
+ System.out.println("Ignoring request to unpublish all of the module resources");
+ return;
+ }
+
+ try {
+ if (ProjectHelper.isBundleProject(module[0].getProject())) {
+ String serverMode = getServer().getMode();
+ if (!serverMode.equals(ILaunchManager.DEBUG_MODE)) {
+ // in debug mode, we rely on the hotcode replacement feature of eclipse/jvm
+ // otherwise, for run and profile modes we explicitly publish the bundle module
+ // TODO: make this configurable as part of the server config
+ publishBundleModule(module, monitor);
+ BundleStateHelper.resetBundleState(getServer(), module[0].getProject());
+ }
+ } else if (ProjectHelper.isContentProject(module[0].getProject())) {
+ if ((kind == IServer.PUBLISH_AUTO || kind == IServer.PUBLISH_INCREMENTAL) && deltaKind == ServerBehaviourDelegate.NO_CHANGE) {
+ System.out
+ .println("Ignoring request to publish the module when no resources have changed; most likely another module has changed");
+ return;
+ }
+ try {
+ publishContentModule(kind, deltaKind, module, monitor);
+ BundleStateHelper.resetBundleState(getServer(), module[0].getProject());
+ } catch (SerializationException e) {
+ throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Serialization error for "
+ + trace.toString(), e));
+ } catch (IOException e) {
+ throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID, "IO error for "
+ + trace.toString(), e));
+ }
+ }
+ } finally {
+ if (serializationManager != null) {
+ serializationManager.destroy();
+ }
}
}
@@ -185,71 +241,51 @@ public class SlingLaunchpadBehaviour ext
final IProject project = module[0].getProject();
boolean installLocally = getServer().getAttribute(ISlingLaunchpadServer.PROP_INSTALL_LOCALLY, true);
if (!installLocally) {
- try{
- final String launchMemento = MavenLaunchHelper.createMavenLaunchConfigMemento(project.getLocation().toString(),
- "sling:install", "bundle", false, null);
- IFolder dotLaunches = project.getFolder(".settings").getFolder(".launches");
- if (!dotLaunches.exists()) {
- dotLaunches.create(true, true, monitor);
- }
- IFile launchFile = dotLaunches.getFile("sling_install.launch");
- InputStream in = new ByteArrayInputStream(launchMemento.getBytes());
- if (!launchFile.exists()) {
- launchFile.create(in, true, monitor);
- }
+ final String launchMemento = MavenLaunchHelper.createMavenLaunchConfigMemento(project.getLocation()
+ .toString(), "package org.apache.sling:maven-sling-plugin:install", null, false, null);
+ IFolder dotLaunches = project.getFolder(".settings").getFolder(".launches");
+ if (!dotLaunches.exists()) {
+ dotLaunches.create(true, true, monitor);
+ }
+ IFile launchFile = dotLaunches.getFile("sling_install.launch");
+ InputStream in = new ByteArrayInputStream(launchMemento.getBytes());
+ if (!launchFile.exists()) {
+ launchFile.create(in, true, monitor);
+ }
- ILaunchConfiguration launchConfig =
- DebugPlugin.getDefault().getLaunchManager().getLaunchConfiguration(launchFile);
- launchConfig.launch(ILaunchManager.RUN_MODE, monitor);
- } catch(Exception e) {
- // TODO proper logging
- e.printStackTrace();
- }
+ ILaunchConfiguration launchConfig = DebugPlugin.getDefault().getLaunchManager()
+ .getLaunchConfiguration(launchFile);
+ launchConfig.launch(ILaunchManager.RUN_MODE, monitor);
} else {
monitor.beginTask("deploying via local install", 5);
- HttpClient httpClient = new HttpClient();
- String hostname = getServer().getHost();
- int launchpadPort = getServer().getAttribute(ISlingLaunchpadServer.PROP_PORT, 8080);
- PostMethod method = new PostMethod("http://"+hostname+":"+launchpadPort+"/system/sling/tooling/install");
- String username = getServer().getAttribute(ISlingLaunchpadServer.PROP_USERNAME, "admin");
- String password = getServer().getAttribute(ISlingLaunchpadServer.PROP_PASSWORD, "admin");
- String userInfo = username+":"+password;
- if (userInfo != null) {
- Credentials c = new UsernamePasswordCredentials(userInfo);
- try {
- httpClient.getState().setCredentials(
- new AuthScope(method.getURI().getHost(), method
- .getURI().getPort()), c);
- } catch (URIException e) {
- // TODO proper logging
- e.printStackTrace();
- }
- }
- IJavaProject javaProject = ProjectHelper.asJavaProject(project);
- IPath outputLocation = javaProject.getOutputLocation();
- outputLocation = outputLocation.makeRelativeTo(project.getFullPath());
- IPath location = project.getRawLocation();
- if (location==null) {
- location = project.getLocation();
- }
- method.addParameter("dir", location.toString() + "/" + outputLocation.toString());
- monitor.worked(1);
+
try {
- httpClient.executeMethod(method);
- monitor.worked(4);
- setModulePublishState(module, IServer.PUBLISH_STATE_NONE);
- } catch (HttpException e) {
- // TODO proper logging
- e.printStackTrace();
- } catch (IOException e) {
- // TODO proper logging
- e.printStackTrace();
- }
+ OsgiClient osgiClient = Activator.getDefault().getOsgiClientFactory()
+ .createOsgiClient(ServerUtil.getRepositoryInfo(getServer(), monitor));
+
+ IJavaProject javaProject = ProjectHelper.asJavaProject(project);
+
+ IPath outputLocation = project.getWorkspace().getRoot().findMember(javaProject.getOutputLocation())
+ .getLocation();
+ monitor.worked(1);
+
+ osgiClient.installLocalBundle(outputLocation.toOSString());
+ monitor.worked(4);
+ setModulePublishState(module, IServer.PUBLISH_STATE_NONE);
+
+ } catch (URISyntaxException e1) {
+ throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e1.getMessage(), e1));
+ } catch (OsgiClientException e1) {
+ throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Failed installing bundle : "
+ + e1.getMessage(), e1));
+ } finally {
+ monitor.done();
+ }
}
}
- private void publishContentModule(int kind, int deltaKind,
- IModule[] module, IProgressMonitor monitor) throws CoreException {
+ private void publishContentModule(int kind, int deltaKind, IModule[] module, IProgressMonitor monitor)
+ throws CoreException, SerializationException, IOException {
if (runLaunchesIfExist(kind, deltaKind, module, monitor)) {
return;
@@ -257,8 +293,6 @@ public class SlingLaunchpadBehaviour ext
// otherwise fallback to old behaviour
Repository repository = ServerUtil.getRepository(getServer(), monitor);
-
- IModuleResource[] moduleResources = getResources(module);
// TODO it would be more efficient to have a module -> filter mapping
// it would be simpler to implement this in SlingContentModuleAdapter, but
@@ -267,8 +301,12 @@ public class SlingLaunchpadBehaviour ext
switch (deltaKind) {
case ServerBehaviourDelegate.CHANGED:
- IModuleResourceDelta[] publishedResourceDelta = getPublishedResourceDelta(module);
- for (IModuleResourceDelta resourceDelta : publishedResourceDelta) {
+ List<IModuleResourceDelta> publishedResourceDelta =
+ Arrays.asList(getPublishedResourceDelta(module));
+
+ List<IModuleResourceDelta> adjustedPublishedResourceDelta = filterContentXmlParents(publishedResourceDelta);
+
+ for (IModuleResourceDelta resourceDelta : adjustedPublishedResourceDelta) {
StringBuilder deltaTrace = new StringBuilder();
deltaTrace.append("- processing delta kind ");
@@ -309,12 +347,15 @@ public class SlingLaunchpadBehaviour ext
case ServerBehaviourDelegate.ADDED:
case ServerBehaviourDelegate.NO_CHANGE: // TODO is this correct ?
- for (IModuleResource resource : moduleResources) {
+ IModuleResource[] moduleResources1 = getResources(module);
+ List<IModuleResource> adjustedModuleResourcesList = filterContentXmlParents(moduleResources1);
+ for (IModuleResource resource : adjustedModuleResourcesList) {
execute(addFileCommand(repository, resource));
}
break;
case ServerBehaviourDelegate.REMOVED:
- for (IModuleResource resource : moduleResources) {
+ IModuleResource[] moduleResources2 = getResources(module);
+ for (IModuleResource resource : moduleResources2) {
execute(removeFileCommand(repository, resource));
}
break;
@@ -327,6 +368,60 @@ public class SlingLaunchpadBehaviour ext
// setServerPublishState(IServer.PUBLISH_STATE_NONE);
}
+ // TODO - this needs to be revisited, as it potentially prevents empty folders ( nt:folder node type) from being
+ // created
+ // TODO - we shouldn't hardcode knowledge of .content.xml here
+ private List<IModuleResourceDelta> filterContentXmlParents(List<IModuleResourceDelta> publishedResourceDelta) {
+ List<IModuleResourceDelta> adjustedPublishedResourceDelta = new LinkedList<IModuleResourceDelta>();
+ Map<String,IModuleResourceDelta> map = new HashMap<String, IModuleResourceDelta>();
+ for (IModuleResourceDelta resourceDelta : publishedResourceDelta) {
+ map.put(resourceDelta.getModuleRelativePath().toString(), resourceDelta);
+ }
+ for (Iterator<IModuleResourceDelta> it = publishedResourceDelta.iterator(); it
+ .hasNext();) {
+ IModuleResourceDelta iModuleResourceDelta = it.next();
+ String resPath = iModuleResourceDelta.getModuleRelativePath().toString();
+ IModuleResourceDelta originalEntry = map.get(resPath);
+ IModuleResourceDelta detailedEntry = map.remove(
+ resPath+"/.content.xml");
+ if (detailedEntry!=null) {
+ adjustedPublishedResourceDelta.add(detailedEntry);
+ } else if (originalEntry!=null) {
+ adjustedPublishedResourceDelta.add(originalEntry);
+ }
+ }
+ return adjustedPublishedResourceDelta;
+ }
+
+ // TODO - this needs to be revisited, as it potentially prevents empty folders ( nt:folder node type) from being
+ // created
+ // TODO - we shouldn't hardcode knowledge of .content.xml here
+ private List<IModuleResource> filterContentXmlParents(IModuleResource[] moduleResources) {
+ List<IModuleResource> moduleResourcesList = Arrays.asList(moduleResources);
+ List<IModuleResource> adjustedModuleResourcesList = new LinkedList<IModuleResource>();
+ Map<String,IModuleResource> map1 = new HashMap<String, IModuleResource>();
+ for (Iterator<IModuleResource> it = moduleResourcesList.iterator(); it
+ .hasNext();) {
+ IModuleResource r = it.next();
+ map1.put(r.getModuleRelativePath().toString(), r);
+ }
+ for (Iterator<IModuleResource> it = moduleResourcesList.iterator(); it
+ .hasNext();) {
+ IModuleResource iModuleResource = it.next();
+ String resPath = iModuleResource.getModuleRelativePath().toString();
+ IModuleResource originalEntry = map1.get(resPath);
+ IModuleResource detailedEntry = map1.remove(resPath+"/.content.xml");
+ if (detailedEntry!=null) {
+ adjustedModuleResourcesList.add(detailedEntry);
+ } else if (originalEntry!=null){
+ adjustedModuleResourcesList.add(originalEntry);
+ } else {
+ // entry was already added at filter time
+ }
+ }
+ return adjustedModuleResourcesList;
+ }
+
private boolean runLaunchesIfExist(int kind, int deltaKind, IModule[] module,
IProgressMonitor monitor) throws CoreException {
final IProject project = module[0].getProject();
@@ -386,64 +481,155 @@ public class SlingLaunchpadBehaviour ext
}
Result<?> result = command.execute();
- if (!result.isSuccess()) // TODO proper logging
- throw new CoreException(new Status(Status.ERROR, "some.plugin", result.toString()));
+ if (!result.isSuccess()) {
+ // TODO - proper error logging
+ throw new CoreException(new Status(Status.ERROR, Activator.PLUGIN_ID, "Failed publishing "
+ + result.toString()));
+ }
+
}
- private Command<?> addFileCommand(Repository repository, IModuleResource resource) throws CoreException {
+ private Command<?> addFileCommand(Repository repository, IModuleResource resource) throws CoreException,
+ SerializationException, IOException {
+
+ FileInfo info = createFileInfo(resource, repository);
+
+ IResource res = getResource(resource);
+ if (res == null) {
+ return null;
+ }
+
+ Object ignoreNextUpdate = res.getSessionProperty(ResourceUtil.QN_IGNORE_NEXT_CHANGE);
+ if (ignoreNextUpdate != null) {
+ res.setSessionProperty(ResourceUtil.QN_IGNORE_NEXT_CHANGE, null);
+ return null;
+ }
- FileInfo info = createFileInfo(resource);
+ if (res.isTeamPrivateMember(IResource.CHECK_ANCESTORS)) {
+ Activator.getDefault().getLog()
+ .log(new Status(IStatus.INFO, Activator.PLUGIN_ID, "Skipping team-private resource " + res));
+ return null;
+ }
System.out.println("For " + resource + " build fileInfo " + info);
if (info == null) {
return null;
}
- if (serializationManager().isSerializationFile(info.getLocation())) {
+ File syncDirectoryAsFile = ProjectUtil.getSyncDirectoryFullPath(res.getProject()).toFile();
+ IFolder syncDirectory = ProjectUtil.getSyncDirectory(res.getProject());
+
+ if (serializationManager(repository, syncDirectoryAsFile).isSerializationFile(info.getLocation())) {
+ InputStream contents = null;
try {
IFile file = (IFile) resource.getAdapter(IFile.class);
- InputStream contents = file.getContents();
- Map<String, Object> serializationData = serializationManager().readSerializationData(contents);
- return repository.newUpdateContentNodeCommand(info, serializationData);
+ contents = file.getContents();
+ String resourceLocation = file.getFullPath().makeRelativeTo(syncDirectory.getFullPath()).toPortableString();
+ ResourceProxy resourceProxy = serializationManager(repository, syncDirectoryAsFile)
+ .readSerializationData(resourceLocation, contents);
+ // TODO - not sure if this 100% correct, but we definitely should not refer to the FileInfo as the
+ // .serialization file, since for nt:file/nt:resource nodes this will overwrite the file contents
+ String primaryType = (String) resourceProxy.getProperties().get(Repository.JCR_PRIMARY_TYPE);
+ if (Repository.NT_FILE.equals(primaryType) || Repository.NT_RESOURCE.equals(primaryType)) {
+ // TODO move logic to serializationManager
+ File locationFile = new File(info.getLocation());
+ String locationFileParent = locationFile.getParent();
+ int endIndex = locationFileParent.length() - ".dir".length();
+ File actualFile = new File(locationFileParent.substring(0, endIndex));
+ String newLocation = actualFile.getAbsolutePath();
+ String newName = actualFile.getName();
+ String newRelativeLocation = actualFile.getAbsolutePath().substring(
+ syncDirectoryAsFile.getAbsolutePath().length());
+ info = new FileInfo(newLocation, newRelativeLocation, newName);
+ }
+
+ return repository.newAddOrUpdateNodeCommand(info, resourceProxy);
} catch (IOException e) {
// TODO logging
e.printStackTrace();
return null;
+ } finally {
+ if (contents != null) {
+ contents.close();
+ }
}
} else {
- return repository.newAddNodeCommand(info);
+
+ ResourceProxy resourceProxy = buildResourceProxyForPlainFileOrFolder( resource, syncDirectory);
+
+ return repository.newAddOrUpdateNodeCommand(info, resourceProxy);
}
}
- private FileInfo createFileInfo(IModuleResource resource) {
+ private ResourceProxy buildResourceProxyForPlainFileOrFolder( IModuleResource resource, IFolder syncDirectory)
+ throws IOException, CoreException {
+ IFile file = (IFile) resource.getAdapter(IFile.class);
+ IFolder folder = (IFolder) resource.getAdapter(IFolder.class);
- IResource file = (IFile) resource.getAdapter(IFile.class);
- if (file == null) {
- file = (IFolder) resource.getAdapter(IFolder.class);
+ IResource changedResource = file != null ? file : folder;
+ if (changedResource == null) {
+ System.err.println("Could not find a file or a folder for " + resource);
+ return null;
+ }
+
+ SerializationKind serializationKind;
+ String fallbackNodeType;
+ if (changedResource.getType() == IResource.FILE) {
+ serializationKind = SerializationKind.FILE;
+ fallbackNodeType = Repository.NT_FILE;
+ } else { // i.e. IResource.FOLDER
+ serializationKind = SerializationKind.FOLDER;
+ fallbackNodeType = Repository.NT_FOLDER;
+ }
+
+ String resourceLocation = '/' + changedResource.getFullPath().makeRelativeTo(syncDirectory.getFullPath())
+ .toPortableString();
+ String serializationFilePath = serializationManager.getSerializationFilePath(resourceLocation,
+ serializationKind);
+ IResource serializationResource = syncDirectory.findMember(serializationFilePath);
+ return buildResourceProxy(resourceLocation, serializationResource, syncDirectory, fallbackNodeType);
+ }
+
+ private ResourceProxy buildResourceProxy(String resourceLocation, IResource serializationResource,
+ IFolder syncDirectory, String fallbackPrimaryType) throws IOException, CoreException {
+ if (serializationResource instanceof IFile) {
+ IFile serializationFile = (IFile) serializationResource;
+ InputStream contents = null;
+ try {
+ contents = serializationFile.getContents();
+ String serializationFilePath = serializationResource.getFullPath()
+ .makeRelativeTo(syncDirectory.getFullPath()).toPortableString();
+ return serializationManager.readSerializationData(serializationFilePath, contents);
+ } finally {
+ if (contents != null) {
+ contents.close();
+ }
+ }
}
+ return new ResourceProxy(resourceLocation, Collections.singletonMap(Repository.JCR_PRIMARY_TYPE,
+ (Object) fallbackPrimaryType));
+ }
+
+ private FileInfo createFileInfo(IModuleResource resource, Repository repository) throws SerializationException,
+ CoreException {
+
+ IResource file = getResource(resource);
if (file == null) {
- // Usually happens on server startup, it seems to be safe to ignore for now
- System.out.println("Got null '" + IFile.class.getSimpleName() + "' and '" + IFolder.class.getSimpleName()
- + "' for " + resource);
return null;
}
IProject project = file.getProject();
String syncDirectory = ProjectUtil.getSyncDirectoryValue(project);
+ File syncDirectoryAsFile = ProjectUtil.getSyncDirectoryFile(project);
- Filter filter = null;
- try {
- filter = loadFilter(project, project.getFolder(syncDirectory));
- } catch (CoreException e) {
- // TODO error handling
- e.printStackTrace();
- }
+ Filter filter = loadFilter(project.getFolder(syncDirectory));
if (filter != null) {
- FilterResult filterResult = getFilterResult(resource, filter);
- if (filterResult == FilterResult.DENY) {
+ FilterResult filterResult = getFilterResult(resource, filter, syncDirectoryAsFile,
+ repository);
+ if (filterResult == FilterResult.DENY || filterResult == FilterResult.PREREQUISITE) {
return null;
}
}
@@ -457,32 +643,79 @@ public class SlingLaunchpadBehaviour ext
return info;
}
- private FilterResult getFilterResult(IModuleResource resource, Filter filter) {
+ private IResource getResource(IModuleResource resource) {
- String filePath = resource.getModuleRelativePath().toOSString();
- if (serializationManager().isSerializationFile(filePath)) {
- filePath = serializationManager.getBaseResourcePath(filePath);
+ IResource file = (IFile) resource.getAdapter(IFile.class);
+ if (file == null) {
+ file = (IFolder) resource.getAdapter(IFolder.class);
}
- System.out.println("Filtering by " + filePath + " for " + resource);
+ if (file == null) {
+ // Usually happens on server startup, it seems to be safe to ignore for now
+ System.out.println("Got null '" + IFile.class.getSimpleName() + "' and '" + IFolder.class.getSimpleName()
+ + "' for " + resource);
+ return null;
+ }
- return filter.filter(filePath);
+ return file;
}
- private Command<?> removeFileCommand(Repository repository, IModuleResource resource) {
+ private FilterResult getFilterResult(IModuleResource resource, Filter filter, File contentSyncRoot,
+ Repository repository) throws SerializationException {
- FileInfo info = createFileInfo(resource);
+ String filePath = resource.getModuleRelativePath().toOSString();
+ String absFilePath = new File(contentSyncRoot, filePath).getAbsolutePath();
+ if (serializationManager(repository, contentSyncRoot).isSerializationFile(absFilePath)) {
+ filePath = serializationManager.getBaseResourcePath(filePath);
+ }
+
+ String repositoryPath = resource.getModuleRelativePath().toPortableString();
- if (info == null) {
+ System.out.println("Filtering by " + repositoryPath + " for " + resource);
+
+ return filter.filter(contentSyncRoot, repositoryPath, repository.getRepositoryInfo());
+ }
+
+ private Command<?> removeFileCommand(Repository repository, IModuleResource resource) throws SerializationException, IOException, CoreException {
+
+ IResource deletedResource = getResource(resource);
+
+ if ( deletedResource == null ) {
+ return null;
+ }
+
+ if (deletedResource.isTeamPrivateMember(IResource.CHECK_ANCESTORS)) {
+ Activator
+ .getDefault()
+ .getLog()
+ .log(new Status(IStatus.INFO, Activator.PLUGIN_ID, "Skipping team-private resource "
+ + deletedResource));
return null;
}
+
+ IFolder syncDirectory = ProjectUtil.getSyncDirectory(deletedResource.getProject());
+ File syncDirectoryAsFile = ProjectUtil.getSyncDirectoryFile(deletedResource.getProject());
+
+ Filter filter = loadFilter(syncDirectory);
+
+ if (filter != null) {
+ FilterResult filterResult = getFilterResult(resource, filter, syncDirectoryAsFile, repository);
+ if (filterResult == FilterResult.DENY || filterResult == FilterResult.PREREQUISITE) {
+ return null;
+ }
+ }
- return repository.newDeleteNodeCommand(info);
+ ResourceProxy resourceProxy = buildResourceProxyForPlainFileOrFolder(resource, syncDirectory);
+
+ return repository.newDeleteNodeCommand(resourceProxy);
}
- private Filter loadFilter(IProject project, final IFolder syncFolder) throws CoreException {
+ private Filter loadFilter(final IFolder syncFolder) throws CoreException {
FilterLocator filterLocator = Activator.getDefault().getFilterLocator();
File filterLocation = filterLocator.findFilterLocation(syncFolder.getLocation().toFile());
+ if (filterLocation == null) {
+ return null;
+ }
IPath filterPath = Path.fromOSString(filterLocation.getAbsolutePath());
IFile filterFile = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(filterPath);
Filter filter = null;
@@ -492,22 +725,20 @@ public class SlingLaunchpadBehaviour ext
filter = filterLocator.loadFilter(contents);
} catch (IOException e) {
throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID,
- "Failed loading filter file for project " + project.getName() + " from location " + filterFile,
- e));
+ "Failed loading filter file for project " + syncFolder.getProject().getName()
+ + " from location " + filterFile, e));
} finally {
- try {
- contents.close();
- } catch (IOException e) {
- // TODO exception handling
- }
+ IOUtils.closeQuietly(contents);
}
}
return filter;
}
- private SerializationManager serializationManager() {
+ private SerializationManager serializationManager(Repository repository, File contentSyncRoot)
+ throws SerializationException {
if (serializationManager == null) {
serializationManager = Activator.getDefault().getSerializationManager();
+// serializationManager.init(repository, contentSyncRoot);
}
return serializationManager;
Modified: sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadServer.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadServer.java?rev=1527508&r1=1527507&r2=1527508&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadServer.java (original)
+++ sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadServer.java Mon Sep 30 10:28:08 2013
@@ -25,6 +25,7 @@ import org.eclipse.core.runtime.Status;
import org.eclipse.wst.server.core.IModule;
import org.eclipse.wst.server.core.IServerWorkingCopy;
import org.eclipse.wst.server.core.model.ServerDelegate;
+import org.osgi.framework.Version;
public class SlingLaunchpadServer extends ServerDelegate implements ISlingLaunchpadServer {
@@ -152,4 +153,26 @@ public class SlingLaunchpadServer extend
throw new RuntimeException(e);
}
}
+
+ @Override
+ public Version getBundleVersion(String bundleSymbolicName) {
+
+ String rawValue = getAttribute(String.format(PROP_BUNDLE_VERSION_FORMAT, bundleSymbolicName), (String) null);
+
+ return rawValue != null ? new Version(rawValue) : null;
+ }
+
+ @Override
+ public void setBundleVersion(String bundleSymbolicName, Version version, IProgressMonitor monitor) {
+
+ String stringVersion = version != null ? version.toString() : null;
+
+ IServerWorkingCopy wc = getServer().createWorkingCopy();
+ wc.setAttribute(String.format(PROP_BUNDLE_VERSION_FORMAT, bundleSymbolicName), stringVersion);
+ try {
+ wc.save(false, monitor);
+ } catch (CoreException e) {
+ throw new RuntimeException(e);
+ }
+ }
}
Modified: sling/trunk/tooling/ide/eclipse-m2e-ui/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-m2e-ui/META-INF/MANIFEST.MF?rev=1527508&r1=1527507&r2=1527508&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-m2e-ui/META-INF/MANIFEST.MF (original)
+++ sling/trunk/tooling/ide/eclipse-m2e-ui/META-INF/MANIFEST.MF Mon Sep 30 10:28:08 2013
@@ -11,6 +11,7 @@ Import-Package: org.apache.commons.httpc
org.apache.commons.httpclient.methods;version="3.1.0",
org.apache.commons.httpclient.methods.multipart;version="3.1.0",
org.apache.commons.httpclient.params;version="3.1.0",
+ org.apache.commons.io;version="2.0.1",
org.apache.maven,
org.apache.maven.archetype,
org.apache.maven.archetype.catalog,
@@ -22,7 +23,10 @@ Import-Package: org.apache.commons.httpc
org.apache.maven.execution,
org.apache.maven.model,
org.apache.maven.plugin,
+ org.apache.sling.ide.artifacts,
org.apache.sling.ide.eclipse.core,
+ org.apache.sling.ide.osgi,
+ org.apache.sling.ide.transport,
org.codehaus.plexus,
org.eclipse.core.resources,
org.eclipse.core.runtime;version="3.4.0",
@@ -51,7 +55,8 @@ Import-Package: org.apache.commons.httpc
org.eclipse.wst.common.project.facet.core,
org.eclipse.wst.server.core,
org.osgi.framework;version="1.6.0",
+ org.osgi.util.tracker;version="1.5.0",
org.sonatype.aether
Bundle-ActivationPolicy: lazy
-Service-Component: OSGI-INF/*.xml
-Export-Package: org.apache.sling.ide.eclipse.ui.wizards.np
+Export-Package: org.apache.sling.ide.eclipse.m2e,
+ org.apache.sling.ide.eclipse.ui.wizards.np
Modified: sling/trunk/tooling/ide/eclipse-m2e-ui/build.properties
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-m2e-ui/build.properties?rev=1527508&r1=1527507&r2=1527508&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-m2e-ui/build.properties (original)
+++ sling/trunk/tooling/ide/eclipse-m2e-ui/build.properties Mon Sep 30 10:28:08 2013
@@ -1,5 +1,6 @@
bin.includes = plugin.xml,\
META-INF/,\
.,\
- target/sling-tooling-support-install/
+ target/sling-tooling-support-install/,\
+ target/archetypes/
source.. = src/
Modified: sling/trunk/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/EmbeddedArchetypeInstaller.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/EmbeddedArchetypeInstaller.java?rev=1527508&r1=1527507&r2=1527508&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/EmbeddedArchetypeInstaller.java (original)
+++ sling/trunk/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/EmbeddedArchetypeInstaller.java Mon Sep 30 10:28:08 2013
@@ -44,7 +44,11 @@ import org.apache.maven.execution.MavenE
import org.apache.maven.execution.MavenExecutionResult;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.LegacySupport;
+import org.apache.sling.ide.eclipse.m2e.internal.Activator;
import org.codehaus.plexus.PlexusContainer;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
import org.eclipse.m2e.core.MavenPlugin;
import org.eclipse.m2e.core.embedder.IMaven;
import org.eclipse.m2e.core.internal.MavenPluginActivator;
@@ -85,62 +89,63 @@ public class EmbeddedArchetypeInstaller
origins.put(fileExtension, new FileInputStream(origin));
}
- public void installArchetype() {
- IMaven maven = MavenPlugin.getMaven();
- try{
- // first get the plexus container
- PlexusContainer container = ((MavenImpl) MavenPlugin.getMaven()).getPlexusContainer();
-
- // then get the DefaultMaven
- DefaultMaven mvn = (DefaultMaven) container.lookup(Maven.class);
-
- // now create a RepositorySystemSession
- MavenExecutionRequest request = new DefaultMavenExecutionRequest();
- request.setLocalRepository(maven.getLocalRepository());
- RepositorySystemSession repositorySession = mvn.newRepositorySession(request);
-
- // set the MavenSession on the LegacySupport
- MavenExecutionResult result = new DefaultMavenExecutionResult();
- MavenSession session = new MavenSession( container, repositorySession, request, result );
- LegacySupport legacy = container.lookup(LegacySupport.class);
- legacy.setSession(session);
-
- // then lookup the DefaultArtifactInstaller
- DefaultArtifactInstaller dai = (DefaultArtifactInstaller) container.lookup(ArtifactInstaller.class);
-
- final Set<Entry<String, InputStream>> entries = origins.entrySet();
- for (Iterator<Entry<String, InputStream>> it = entries.iterator(); it.hasNext();) {
- final Entry<String, InputStream> entry = it.next();
- final String fileExtension = entry.getKey();
- final InputStream in = entry.getValue();
- File tmpFile = File.createTempFile("slingClipseTmp", fileExtension);
- FileOutputStream fos = new FileOutputStream(tmpFile);
- copyStream(in, fos);
- fos.close();
- in.close();
- Artifact jarArtifact = new DefaultArtifact(
- groupId,
- artifactId,
- version,
- "", fileExtension, "",
- new DefaultArtifactHandler());
- dai.install(tmpFile, jarArtifact, maven.getLocalRepository());
- tmpFile.delete();
- }
-
- Archetype archetype = new Archetype();
- archetype.setGroupId(groupId);
- archetype.setArtifactId(artifactId);
- archetype.setVersion(version);
- org.apache.maven.archetype.Archetype archetyper = MavenPluginActivator.getDefault().getArchetype();
- archetyper.updateLocalCatalog(archetype);
+ public void installArchetype() throws CoreException {
+ try {
+ IMaven maven = MavenPlugin.getMaven();
+ // first get the plexus container
+ PlexusContainer container = ((MavenImpl) MavenPlugin.getMaven()).getPlexusContainer();
+
+ // then get the DefaultMaven
+ DefaultMaven mvn = (DefaultMaven) container.lookup(Maven.class);
+
+ // now create a RepositorySystemSession
+ MavenExecutionRequest request = new DefaultMavenExecutionRequest();
+ request.setLocalRepository(maven.getLocalRepository());
+ RepositorySystemSession repositorySession = mvn.newRepositorySession(request);
+
+ // set the MavenSession on the LegacySupport
+ MavenExecutionResult result = new DefaultMavenExecutionResult();
+ MavenSession session = new MavenSession(container, repositorySession, request, result);
+ LegacySupport legacy = container.lookup(LegacySupport.class);
+ legacy.setSession(session);
+
+ // then lookup the DefaultArtifactInstaller
+ DefaultArtifactInstaller dai = (DefaultArtifactInstaller) container.lookup(ArtifactInstaller.class);
+
+ final Set<Entry<String, InputStream>> entries = origins.entrySet();
+ for (Iterator<Entry<String, InputStream>> it = entries.iterator(); it.hasNext();) {
+ final Entry<String, InputStream> entry = it.next();
+ final String fileExtension = entry.getKey();
+ final InputStream in = entry.getValue();
+ File tmpFile = File.createTempFile("slingClipseTmp", fileExtension);
+ FileOutputStream fos = new FileOutputStream(tmpFile);
+ copyStream(in, fos);
+ // TODO - close in case of exceptions
+ fos.close();
+ in.close();
+ Artifact jarArtifact = new DefaultArtifact(groupId, artifactId, version, "", fileExtension, "",
+ new DefaultArtifactHandler());
+ dai.install(tmpFile, jarArtifact, maven.getLocalRepository());
+ tmpFile.delete();
+ }
+
+ Archetype archetype = new Archetype();
+ archetype.setGroupId(groupId);
+ archetype.setArtifactId(artifactId);
+ archetype.setVersion(version);
+ org.apache.maven.archetype.Archetype archetyper = MavenPluginActivator.getDefault().getArchetype();
+ archetyper.updateLocalCatalog(archetype);
+ } catch (CoreException e) {
+ throw e;
+ } catch (RuntimeException e) {
+ throw e;
+ } catch (Exception e) {
+ throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e));
+ }
// ArchetypeCatalog defaultLocalCatalog = archetyper.getDefaultLocalCatalog();
// defaultLocalCatalog.addArchetype(archetype);
// manager.readCatalogs();
- } catch(Exception e) {
- e.printStackTrace();
- }
// try {
// ArtifactRepository localRepo = maven.getLocalRepository();
@@ -170,6 +175,7 @@ public class EmbeddedArchetypeInstaller
}
+ // TODO - replace with commons-io
private void copyStream(InputStream in, OutputStream os) throws IOException {
final byte[] bytes = new byte[4*1024];
while (true) {
Modified: sling/trunk/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/internal/Activator.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/internal/Activator.java?rev=1527508&r1=1527507&r2=1527508&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/internal/Activator.java (original)
+++ sling/trunk/tooling/ide/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/internal/Activator.java Mon Sep 30 10:28:08 2013
@@ -1,13 +1,20 @@
package org.apache.sling.ide.eclipse.m2e.internal;
+import org.apache.sling.ide.artifacts.EmbeddedArtifactLocator;
+import org.apache.sling.ide.eclipse.core.ServiceUtil;
+import org.apache.sling.ide.osgi.OsgiClientFactory;
import org.eclipse.core.runtime.Plugin;
import org.osgi.framework.BundleContext;
+import org.osgi.util.tracker.ServiceTracker;
public class Activator extends Plugin {
public static final String PLUGIN_ID = "org.apache.sling.ide.eclipse-m2e-ui";
public static Activator INSTANCE;
+ private ServiceTracker<EmbeddedArtifactLocator, EmbeddedArtifactLocator> artifactLocator;
+ private ServiceTracker<OsgiClientFactory, OsgiClientFactory> osgiClientFactory;
+
public static Activator getDefault() {
return INSTANCE;
}
@@ -17,12 +24,31 @@ public class Activator extends Plugin {
super.start(context);
INSTANCE = this;
+
+ artifactLocator = new ServiceTracker<EmbeddedArtifactLocator, EmbeddedArtifactLocator>(context, EmbeddedArtifactLocator.class, null);
+ artifactLocator.open();
+
+ osgiClientFactory = new ServiceTracker<OsgiClientFactory, OsgiClientFactory>(context, OsgiClientFactory.class,
+ null);
+ osgiClientFactory.open();
}
@Override
public void stop(BundleContext context) throws Exception {
INSTANCE = null;
+ artifactLocator.close();
+
super.stop(context);
}
+
+ public EmbeddedArtifactLocator getArtifactsLocator() {
+
+ return ServiceUtil.getNotNull(artifactLocator);
+ }
+
+ public OsgiClientFactory getOsgiClientFactory() {
+
+ return ServiceUtil.getNotNull(osgiClientFactory);
+ }
}