Added a PHP Handler

Change-Id: I6fcc3236b3093ea3a6c665b90d9f6635659d7b8a
diff --git a/org.eclipse.capra.handler.php.feature/.project b/org.eclipse.capra.handler.php.feature/.project
new file mode 100644
index 0000000..c1c1d01
--- /dev/null
+++ b/org.eclipse.capra.handler.php.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.capra.handler.php.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.capra.handler.php.feature/build.properties b/org.eclipse.capra.handler.php.feature/build.properties
new file mode 100644
index 0000000..64f93a9
--- /dev/null
+++ b/org.eclipse.capra.handler.php.feature/build.properties
@@ -0,0 +1 @@
+bin.includes = feature.xml
diff --git a/org.eclipse.capra.handler.php.feature/feature.xml b/org.eclipse.capra.handler.php.feature/feature.xml
new file mode 100644
index 0000000..3a375e2
--- /dev/null
+++ b/org.eclipse.capra.handler.php.feature/feature.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.capra.handler.php.feature"
+      label="Capra Traceability for PHP"
+      version="0.7.0.qualifier"
+      provider-name="Capra Development Team">
+
+ 	<copyright>
+      Copyright (c) 2016 Chalmers | University of Gothenburg, rt-labs and others.
+  	</copyright>
+
+   	<license url="%licenseURL">
+      %license
+   	</license>
+
+   <plugin
+         id="org.eclipse.capra.handler.php"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/org.eclipse.capra.handler.php.feature/pom.xml b/org.eclipse.capra.handler.php.feature/pom.xml
new file mode 100644
index 0000000..48099e4
--- /dev/null
+++ b/org.eclipse.capra.handler.php.feature/pom.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+        <modelVersion>4.0.0</modelVersion>
+
+        <parent>
+                <relativePath>../pom.xml</relativePath>
+                <groupId>org.eclipse.capra</groupId>
+                <artifactId>parent</artifactId>
+                <version>0.7.0-SNAPSHOT</version>
+        </parent>
+
+        <artifactId>org.eclipse.capra.handler.php.feature</artifactId>
+        <packaging>eclipse-feature</packaging>
+
+</project>
diff --git a/org.eclipse.capra.handler.php/.classpath b/org.eclipse.capra.handler.php/.classpath
new file mode 100644
index 0000000..22f3064
--- /dev/null
+++ b/org.eclipse.capra.handler.php/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.eclipse.capra.handler.php/.project b/org.eclipse.capra.handler.php/.project
new file mode 100644
index 0000000..498afb0
--- /dev/null
+++ b/org.eclipse.capra.handler.php/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.capra.handler.php</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.capra.handler.php/META-INF/MANIFEST.MF b/org.eclipse.capra.handler.php/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..dba2495
--- /dev/null
+++ b/org.eclipse.capra.handler.php/META-INF/MANIFEST.MF
@@ -0,0 +1,12 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Capra Handler for PHP Elements
+Bundle-SymbolicName: org.eclipse.capra.handler.php;singleton:=true
+Bundle-Version: 0.7.0.qualifier
+Require-Bundle: org.eclipse.capra.core,
+ org.eclipse.capra.core,
+ org.eclipse.php.core;bundle-version="4.2.0",
+ org.eclipse.dltk.core;bundle-version="5.7.0",
+ org.eclipse.core.resources;bundle-version="3.11.1"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-Vendor: Capra Development Team
diff --git a/org.eclipse.capra.handler.php/build.properties b/org.eclipse.capra.handler.php/build.properties
new file mode 100644
index 0000000..cc91072
--- /dev/null
+++ b/org.eclipse.capra.handler.php/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/org.eclipse.capra.handler.php/plugin.xml b/org.eclipse.capra.handler.php/plugin.xml
new file mode 100644
index 0000000..f01965f
--- /dev/null
+++ b/org.eclipse.capra.handler.php/plugin.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         id="id1"
+         point="org.eclipse.capra.configuration.artifactHandlers">
+      <artifactHandler
+            class="org.eclipse.capra.handler.php.PhpHandler">
+      </artifactHandler>
+   </extension>
+
+</plugin>
diff --git a/org.eclipse.capra.handler.php/pom.xml b/org.eclipse.capra.handler.php/pom.xml
new file mode 100644
index 0000000..ec44378
--- /dev/null
+++ b/org.eclipse.capra.handler.php/pom.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Copyright (c) 2016 Chalmers | University of Gothenburg, rt-labs and others.
+    All rights reserved. This program and the accompanying materials
+    are made available under the terms of the Eclipse Public License v1.0
+    which accompanies this distribution, and is available at
+    http://www.eclipse.org/legal/epl-v10.html
+     
+      Contributors:
+         Chalmers | University of Gothenburg and rt-labs - initial API and implementation and/or initial documentation
+ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<relativePath>../pom.xml</relativePath>
+		<groupId>org.eclipse.capra</groupId>
+		<artifactId>parent</artifactId>
+		<version>0.7.0-SNAPSHOT</version>
+	</parent>
+
+	<artifactId>org.eclipse.capra.handler.php</artifactId>
+	<packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/org.eclipse.capra.handler.php/src/org/eclipse/capra/handler/php/PhpHandler.java b/org.eclipse.capra.handler.php/src/org/eclipse/capra/handler/php/PhpHandler.java
new file mode 100644
index 0000000..5941e0a
--- /dev/null
+++ b/org.eclipse.capra.handler.php/src/org/eclipse/capra/handler/php/PhpHandler.java
@@ -0,0 +1,32 @@
+package org.eclipse.capra.handler.php;
+
+import org.eclipse.capra.core.adapters.ArtifactMetaModelAdapter;
+import org.eclipse.capra.core.handlers.AbstractArtifactHandler;
+import org.eclipse.capra.core.helpers.ExtensionPointHelper;
+import org.eclipse.dltk.core.DLTKCore;
+import org.eclipse.dltk.core.IModelElement;
+import org.eclipse.emf.ecore.EObject;
+
+public class PhpHandler extends AbstractArtifactHandler<IModelElement> {
+
+	@Override
+	public EObject createWrapper(IModelElement artifact, EObject artifactModel) {
+		ArtifactMetaModelAdapter adapter = ExtensionPointHelper.getArtifactWrapperMetaModelAdapter().get();
+		EObject wrapper = adapter.createArtifact(artifactModel, this.getClass().getName(),
+				artifact.getHandleIdentifier(), artifact.getElementName());
+		return wrapper;
+	}
+
+	@Override
+	public IModelElement resolveWrapper(EObject wrapper) {
+		ArtifactMetaModelAdapter adapter = ExtensionPointHelper.getArtifactWrapperMetaModelAdapter().get();
+		String handleIdentifier = adapter.getArtifactUri(wrapper);
+		return DLTKCore.create(handleIdentifier);
+	}
+
+	@Override
+	public String getDisplayName(IModelElement artifact) {
+		return artifact.getElementName();
+	}
+
+}
diff --git a/org.eclipse.capra.releng.p2/category.xml b/org.eclipse.capra.releng.p2/category.xml
index dcbfde4..4382d51 100644
--- a/org.eclipse.capra.releng.p2/category.xml
+++ b/org.eclipse.capra.releng.p2/category.xml
@@ -27,6 +27,9 @@
    <feature url="features/org.eclipse.capra.ui.zest.feature_0.7.0.qualifier.jar" id="org.eclipse.capra.ui.zest.feature" version="0.7.0.qualifier">
       <category name="org.eclipse.capra.ui"/>
    </feature>
+   <feature url="features/org.eclipse.capra.handler.php.feature_0.7.0.qualifier.jar" id="org.eclipse.capra.handler.php.feature" version="0.7.0.qualifier">
+      <category name="org.eclipse.capra.handler"/>
+   </feature>
    <category-def name="org.eclipse.capra" label="Capra Traceability">
       <description>
          Capra is an extensible traceability mangement tool.
diff --git a/org.eclipse.capra.releng.target/org.eclipse.capra.releng.target.target b/org.eclipse.capra.releng.target/org.eclipse.capra.releng.target.target
index b90a01b..ce71547 100644
--- a/org.eclipse.capra.releng.target/org.eclipse.capra.releng.target.target
+++ b/org.eclipse.capra.releng.target/org.eclipse.capra.releng.target.target
@@ -1,11 +1,28 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?pde version="3.8"?><target name="Neon" sequenceNumber="43">
+<?pde version="3.8"?><target name="Neon" sequenceNumber="49">
 <locations>
 <location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
 <unit id="net.sourceforge.plantuml.feature.feature.group" version="0.0.0"/>
 <repository location="http://basar.idi.ntnu.no/svn/tdt4100/anonymous/trunk/updatesite"/>
 </location>
 <location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
+<unit id="org.eclipse.gef4.common.sdk.feature.group" version="0.0.0"/>
+<unit id="org.eclipse.gef4.geometry.sdk.feature.group" version="0.0.0"/>
+<unit id="org.eclipse.gef4.fx.sdk.feature.group" version="0.0.0"/>
+<unit id="org.eclipse.gef4.mvc.sdk.feature.group" version="0.0.0"/>
+<unit id="org.eclipse.gef4.mvc.examples.source.feature.group" version="0.0.0"/>
+<unit id="org.eclipse.gef4.layout.sdk.feature.group" version="0.0.0"/>
+<unit id="org.eclipse.gef4.graph.sdk.feature.group" version="0.0.0"/>
+<unit id="org.eclipse.gef4.zest.sdk.feature.group" version="0.0.0"/>
+<unit id="org.eclipse.gef4.zest.examples.source.feature.group" version="0.0.0"/>
+<unit id="org.eclipse.gef4.dot.sdk.feature.group" version="0.0.0"/>
+<unit id="org.eclipse.gef4.cloudio.sdk.feature.group" version="0.0.0"/>
+<repository location="http://download.eclipse.org/tools/gef/gef4/updates/releases"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
+<repository location="http://download.eclipse.org/releases/neon"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
 <unit id="org.eclipse.rmf.reqif10.sdk.feature.feature.group" version="0.13.0.201509161042"/>
 <unit id="org.eclipse.rmf.reqif10.pror.sdk.feature.feature.group" version="0.13.0.201509161042"/>
 <repository location="http://download.eclipse.org/rmf/updates/releases"/>
@@ -32,6 +49,10 @@
 <repository location="http://download.eclipse.org/releases/neon"/>
 </location>
 <location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
+<unit id="org.eclipse.php.feature.group" version="4.2.0.201611142355"/>
+<repository location="http://download.eclipse.org/releases/neon"/>
+</location>
+<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
 <unit id="org.eclipse.mylyn.github.feature.feature.group" version="0.0.0"/>
 <repository location="http://download.eclipse.org/egit/github/updates/"/>
 </location>
@@ -49,19 +70,5 @@
 <unit id="org.apache.poi" version="3.9.0.v201405241750"/>
 <repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20160520211859/repository"/>
 </location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.gef4.common.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef4.geometry.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef4.fx.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef4.mvc.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef4.mvc.examples.source.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef4.layout.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef4.graph.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef4.zest.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef4.zest.examples.source.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef4.dot.sdk.feature.group" version="0.0.0"/>
-<unit id="org.eclipse.gef4.cloudio.sdk.feature.group" version="0.0.0"/>
-<repository location="http://download.eclipse.org/tools/gef/gef4/updates/releases"/>
-</location>
 </locations>
 </target>
diff --git a/pom.xml b/pom.xml
index 2119daa..7741e0e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -45,6 +45,8 @@
 		<module>org.eclipse.capra.handler.reqIf.feature</module>
 		<module>org.eclipse.capra.handler.papyrus</module>
 		<module>org.eclipse.capra.handler.papyrus.feature</module>
+		<module>org.eclipse.capra.handler.php</module>
+		<module>org.eclipse.capra.handler.php.feature</module>
 		<module>org.eclipse.capra.ui</module>
 		<module>org.eclipse.capra.ui.notification</module>
 		<module>org.eclipse.capra.ui.plantuml</module>