Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/d3scomp/JDEECo.git
Browse files Browse the repository at this point in the history
  • Loading branch information
keznikl committed Jun 11, 2013
2 parents 409baa8 + f85c136 commit 8d7be0f
Show file tree
Hide file tree
Showing 16 changed files with 286 additions and 12 deletions.
9 changes: 9 additions & 0 deletions jdeeco-core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
<properties>
<dist>../dist</dist>
<coreJar>jdeeco.jar</coreJar>
<lib>${dist}/lib</lib>
<bcelJar>bcel.jar</bcelJar>
</properties>
<build>
<sourceDirectory>src</sourceDirectory>
Expand Down Expand Up @@ -52,6 +54,13 @@
<destFileName>${coreJar}</destFileName>
<outputDirectory>${dist}</outputDirectory>
</artifactItem>
<artifactItem>
<groupId>cz.cuni.mff.d3s</groupId>
<artifactId>cz.cuni.mff.d3s.bcel</artifactId>
<version>1.0.0</version>
<destFileName>${bcelJar}</destFileName>
<outputDirectory>${lib}</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package cz.cuni.mff.d3s.deeco.invokable;

import java.io.Serializable;
import java.util.List;



public abstract class MembershipMethod {
public abstract class MembershipMethod implements Serializable {

public final ParameterizedMethod method;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
* @author Michal Kit
*
*/
public class ParameterizedMethod {
public class ParameterizedMethod implements Serializable {

public final static long serialVersionUID = 1L;

Expand Down
2 changes: 2 additions & 0 deletions jdeeco-core/src/cz/cuni/mff/d3s/deeco/logging/Log.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package cz.cuni.mff.d3s.deeco.logging;

import java.io.Serializable;

/**
* API for sending log output.
*
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package cz.cuni.mff.d3s.deeco.logging;

import java.io.InputStream;
import java.io.Serializable;
import java.util.logging.ConsoleHandler;
import java.util.logging.Level;
import java.util.logging.LogManager;
Expand Down
5 changes: 5 additions & 0 deletions jdeeco-demo/META-INF/CONVOYTUT.MF
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.4
Created-By: 1.7.0_06-b24 (Oracle Corporation)
Export-Package: cz.cuni.mff.d3s.deeco.demo.convoytut

12 changes: 7 additions & 5 deletions jdeeco-demo/build.xml
Original file line number Diff line number Diff line change
Expand Up @@ -147,22 +147,24 @@
</target>

<!-- check ltl properties for convoy demo -->
<target name="ltl-convoy">
<target name="ltl-convoytut">
<java fork="true" classname="cz.cuni.mff.d3s.deeco.runtime.PreprocessorLauncher" dir="${dist}">
<arg value="convoy.jar"/>
<arg value="convoytut.jar"/>
<classpath>
<pathelement location="${dist}/jdeeco.jar"/>
<pathelement location="${dist}/sde/cz.cuni.mff.d3s.bcel-1.0.0.jar"/>
<pathelement location="${dist}/jdeeco-jpf.jar"/>
<pathelement location="${dist}/lib/bcel.jar"/>
</classpath>
</java>
<java fork="true" jar="${jpf}/build/RunJPF.jar" dir="${dist}">
<jvmarg value="-Djdeeco-dist=${dist}"/>
<jvmarg value="-Djdeeco-src=${src}"/>
<jvmarg value="-Djdeeco-src-demo=${demo}"/>
<arg value="+classpath=${dist}/convoy.jar,${dist}/jdeeco.jar"/>
<arg value="+classpath=${dist}/convoytut.jar,${dist}/jdeeco.jar"/>
<arg value="+site=site.properties"/>
<arg value="+jpf-core.native_classpath+=;${dist}/jdeeco.jar;${dist}/jdeeco-jpf.jar"/>
<arg value="${demo}/../jpfProperties/LocalLauncherConvoyLTL.jpf"/>
<jvmarg value="-Xmx8g"/>
<jvmarg value="-Xmx2g"/>
</java>
</target>

Expand Down
2 changes: 1 addition & 1 deletion jdeeco-demo/jpfProperties/LocalLauncherConvoyLTL.jpf
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ search.class=gov.nasa.jpf.ltl.DDFSearch
listener=gov.nasa.jpf.ltl.OtherChoiceListener
vm.storage.class=gov.nasa.jpf.jvm.FullStateSet

target=cz.cuni.mff.d3s.deeco.demo.convoy.LocalLauncherConvoyLTL
target=cz.cuni.mff.d3s.deeco.demo.convoytut.LocalLauncherLTL

deeco.ltl=[](isFollowerNearLeader-><>isFollowerAtDestination)

Expand Down
27 changes: 27 additions & 0 deletions jdeeco-demo/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
<dist>../dist</dist>
<cloudJar>cloud.jar</cloudJar>
<convoyJar>convoy.jar</convoyJar>
<convoytutJar>convoytut.jar</convoytutJar>
</properties>
<build>
<sourceDirectory>src</sourceDirectory>
Expand Down Expand Up @@ -56,6 +57,23 @@
</archive>
</configuration>
</execution>
<execution>
<id>convoytut</id>
<goals>
<goal>jar</goal>
</goals>
<phase>package</phase>
<configuration>
<classifier>convoytut</classifier>
<includes>
<include>**/convoytut/*</include>
</includes>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
<manifestFile>META-INF/CONVOYTUT.MF</manifestFile>
</archive>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
Expand Down Expand Up @@ -87,6 +105,14 @@
<classifier>convoy</classifier>
<destFileName>${convoyJar}</destFileName>
</artifactItem>
<artifactItem>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<type>${project.packaging}</type>
<classifier>convoytut</classifier>
<destFileName>${convoytutJar}</destFileName>
</artifactItem>
</artifactItems>
<overWriteIfNewer>true</overWriteIfNewer>
<outputDirectory>${dist}</outputDirectory>
Expand All @@ -111,6 +137,7 @@
<directory>.</directory>
<includes>
<include>build.xml</include>
<include>site.properties</include>
</includes>
</resource>
</resources>
Expand Down
8 changes: 8 additions & 0 deletions jdeeco-demo/site.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
jpf-base-dir = .

jpf-core = ${jpf-base-dir}/jpf-core

jpf-ltl = ${jpf-base-dir}/jpf-ltl

extensions+=,${jpf-ltl}

Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package cz.cuni.mff.d3s.deeco.demo.convoytut;

import java.util.List;

import cz.cuni.mff.d3s.deeco.annotations.KnowledgeExchange;
import cz.cuni.mff.d3s.deeco.annotations.Membership;
import cz.cuni.mff.d3s.deeco.annotations.In;
import cz.cuni.mff.d3s.deeco.annotations.Out;
import cz.cuni.mff.d3s.deeco.annotations.PeriodicScheduling;
import cz.cuni.mff.d3s.deeco.ensemble.Ensemble;
import cz.cuni.mff.d3s.deeco.knowledge.OutWrapper;



public class ConvoyEnsemble extends Ensemble {

@Membership
public static boolean membership(
@In("member.position") Waypoint fPosition,
@In("member.destination") Waypoint fDestination,
@In("coord.position") Waypoint lPosition,
@In("coord.path") List<Waypoint> lPath) {

return
!fPosition.equals(fDestination) &&
(Math.abs(lPosition.x - fPosition.x) + Math.abs(lPosition.y - fPosition.y)) <= 2 &&
lPath.contains(fDestination);
}

@KnowledgeExchange
@PeriodicScheduling(200)
public static void map(
@Out("member.leaderPosition") OutWrapper<Waypoint> fLeaderPosition,
@In("coord.position") Waypoint lPosition) {

fLeaderPosition.value = lPosition;
}
}
32 changes: 32 additions & 0 deletions jdeeco-demo/src/cz/cuni/mff/d3s/deeco/demo/convoytut/Follower.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package cz.cuni.mff.d3s.deeco.demo.convoytut;

import cz.cuni.mff.d3s.deeco.annotations.In;
import cz.cuni.mff.d3s.deeco.annotations.InOut;
import cz.cuni.mff.d3s.deeco.annotations.PeriodicScheduling;
import cz.cuni.mff.d3s.deeco.annotations.Process;
import cz.cuni.mff.d3s.deeco.knowledge.Component;

public class Follower extends Component {

public String name = "F";
public Waypoint position = new Waypoint(1, 4);
public Waypoint destination = new Waypoint(7, 2);
public Waypoint leaderPosition;

@Process
@PeriodicScheduling(1000)
public static void followProcess(
@InOut("position") Waypoint me,
@In("destination") Waypoint destination,
@In("name") String name,
@In("leaderPosition") Waypoint leader
) {

if (!destination.equals(me) && leader != null) {
me.x += Integer.signum(leader.x - me.x);
me.y += Integer.signum(leader.y - me.y);
}

System.out.println("Follower " + name + ": me = " + me + " leader = " + leader);
}
}
54 changes: 54 additions & 0 deletions jdeeco-demo/src/cz/cuni/mff/d3s/deeco/demo/convoytut/LeaderA.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package cz.cuni.mff.d3s.deeco.demo.convoytut;

import java.util.LinkedList;
import java.util.List;

import cz.cuni.mff.d3s.deeco.annotations.In;
import cz.cuni.mff.d3s.deeco.annotations.InOut;
import cz.cuni.mff.d3s.deeco.annotations.PeriodicScheduling;
import cz.cuni.mff.d3s.deeco.annotations.Process;
import cz.cuni.mff.d3s.deeco.knowledge.Component;

public class LeaderA extends Component {

public String name;
public List<Waypoint> path;
public Waypoint position;

public LeaderA() {
path = new LinkedList<Waypoint>();
path.add(new Waypoint(8, 7)); path.add(new Waypoint(8, 6)); path.add(new Waypoint(8, 5));
path.add(new Waypoint(7, 5)); path.add(new Waypoint(6, 5)); path.add(new Waypoint(5, 5));
path.add(new Waypoint(4, 5)); path.add(new Waypoint(3, 5)); path.add(new Waypoint(2, 5));
path.add(new Waypoint(1, 5)); path.add(new Waypoint(0, 5)); path.add(new Waypoint(0, 4));
path.add(new Waypoint(0, 3)); path.add(new Waypoint(0, 2)); path.add(new Waypoint(1, 2));
path.add(new Waypoint(2, 2)); path.add(new Waypoint(3, 2)); path.add(new Waypoint(4, 2));
path.add(new Waypoint(5, 2)); path.add(new Waypoint(6, 2)); path.add(new Waypoint(7, 2));
path.add(new Waypoint(8, 2)); path.add(new Waypoint(9, 2)); path.add(new Waypoint(9, 1));
path.add(new Waypoint(9, 0));

name = "L1";
position = new Waypoint(8,8);
}

@Process
@PeriodicScheduling(1000)
public static void moveProcess(
@InOut("path") List<Waypoint> path,
@In("name") String name,
@InOut("position") Waypoint me
) {

if (!path.isEmpty() && me.equals(path.get(0))) {
path.remove(0);
}

if (!path.isEmpty()) {
Waypoint next = path.get(0);
me.x += Integer.signum(next.x - me.x);
me.y += Integer.signum(next.y - me.y);
}

System.out.println("Leader " + name + ": " + me);
}
}
59 changes: 59 additions & 0 deletions jdeeco-demo/src/cz/cuni/mff/d3s/deeco/demo/convoytut/LeaderB.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package cz.cuni.mff.d3s.deeco.demo.convoytut;

import java.util.LinkedList;
import java.util.List;

import cz.cuni.mff.d3s.deeco.annotations.In;
import cz.cuni.mff.d3s.deeco.annotations.InOut;
import cz.cuni.mff.d3s.deeco.annotations.PeriodicScheduling;
import cz.cuni.mff.d3s.deeco.annotations.Process;
import cz.cuni.mff.d3s.deeco.knowledge.Component;

public class LeaderB extends Component {

public String name;
public List<Waypoint> path;
public Waypoint position;

public LeaderB() {
path = new LinkedList<Waypoint>();
path.add(new Waypoint(1, 1));
path.add(new Waypoint(1, 2));
path.add(new Waypoint(1, 3));
path.add(new Waypoint(2, 3));
path.add(new Waypoint(3, 3));
path.add(new Waypoint(4, 3));
path.add(new Waypoint(5, 3));
path.add(new Waypoint(6, 3));
path.add(new Waypoint(6, 4));
path.add(new Waypoint(6, 5));
path.add(new Waypoint(6, 6));
path.add(new Waypoint(6, 7));
path.add(new Waypoint(6, 8));
path.add(new Waypoint(7, 8));
path.add(new Waypoint(8, 8));
name = "L2";
position = new Waypoint(1,0);
}

@Process
@PeriodicScheduling(1000)
public static void moveProcess(
@InOut("path") List<Waypoint> path,
@In("name") String name,
@InOut("position") Waypoint me
) {

if (!path.isEmpty() && me.equals(path.get(0))) {
path.remove(0);
}

if (!path.isEmpty()) {
Waypoint next = path.get(0);
me.x += Integer.signum(next.x - me.x);
me.y += Integer.signum(next.y - me.y);
}

System.out.println("Leader " + name + ": " + me);
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package cz.cuni.mff.d3s.deeco.demo.convoy;
package cz.cuni.mff.d3s.deeco.demo.convoytut;

import java.util.Arrays;
import java.util.List;
Expand All @@ -15,7 +15,7 @@
import cz.cuni.mff.d3s.deeco.ltl.AtomicProposition;


public class LocalLauncherConvoyLTL
public class LocalLauncherLTL
{
public static void main(String[] args)
{
Expand All @@ -40,8 +40,12 @@ public String getName() {

@Override
public Boolean evaluate(KnowledgeJPF knowledge) {
return knowledge.getSingle("follower.position.x").equals(knowledge.getSingle("follower.destination.x"))
&& knowledge.getSingle("follower.position.y").equals(knowledge.getSingle("follower.destination.y"));
Integer lx = (Integer) knowledge.getSingle("leader.position.x");
Integer ly = (Integer) knowledge.getSingle("leader.position.y");
Integer fx = (Integer) knowledge.getSingle("follower.position.x");
Integer fy = (Integer) knowledge.getSingle("follower.position.y");

return (Math.abs(lx - fx) <= 1) && (Math.abs(lx - fy) <= 1);
}
}

Expand Down
Loading

0 comments on commit 8d7be0f

Please sign in to comment.