Skip to content

Commit

Permalink
Finished refactor to runtime resolution strategies.
Browse files Browse the repository at this point in the history
Finished pdex.util.runtime.* for processing#5753 / processing#5750 which adds support for restructured modules (Jigsaw) and OpenJFX.
  • Loading branch information
sampottinger committed Jan 29, 2019
1 parent 0bbf9f0 commit eeebda6
Show file tree
Hide file tree
Showing 16 changed files with 472 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

/*
Part of the Processing project - http://processing.org
Copyright (c) 2012-19 The Processing Foundation
Copyright (c) 2019 The Processing Foundation
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,23 @@
/* -*- mode: java; c-basic-offset: 2; indent-tabs-mode: nil -*- */

/*
Part of the Processing project - http://processing.org
Copyright (c) 2019 The Processing Foundation
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/

package processing.mode.java.pdex.util.runtime.strategy;

import processing.app.Sketch;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,23 @@
/* -*- mode: java; c-basic-offset: 2; indent-tabs-mode: nil -*- */

/*
Part of the Processing project - http://processing.org
Copyright (c) 20119 The Processing Foundation
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/

package processing.mode.java.pdex.util.runtime.strategy;

import processing.app.Sketch;
Expand All @@ -8,10 +28,18 @@
import java.util.stream.Collectors;


/**
* Strategy which concatenates paths generated from a collection of RuntimePathFactoryStrategies.
*/
public class RuntimePathFactoryStrategyCollection implements RuntimePathFactoryStrategy {

private final List<RuntimePathFactoryStrategy> strategies;

/**
* Create a new path concatenation operation.
*
* @param newStrategies
*/
public RuntimePathFactoryStrategyCollection(List<RuntimePathFactoryStrategy> newStrategies) {
strategies = newStrategies;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
/* -*- mode: java; c-basic-offset: 2; indent-tabs-mode: nil -*- */

/*
Part of the Processing project - http://processing.org
Copyright (c) 2019 The Processing Foundation
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/

package processing.mode.java.pdex.util.runtime;

import org.junit.Before;
import org.junit.Test;
import processing.app.Sketch;
import processing.mode.java.JavaMode;
import processing.mode.java.pdex.ImportStatement;
import processing.mode.java.pdex.PreprocessedSketch;
import processing.mode.java.pdex.util.runtime.strategy.RuntimePathFactoryTestUtil;

import java.util.Arrays;
import java.util.List;

import static org.junit.Assert.*;


public class RuntimePathBuilderTest {

private RuntimePathBuilder builder;
private JavaMode testMode;
private List<ImportStatement> testImports;
private Sketch testSketch;
private PreprocessedSketch.Builder result;

@Before
public void setUp() throws Exception {
builder = new RuntimePathBuilder();
testMode = RuntimePathFactoryTestUtil.createTestJavaMode();
testImports = RuntimePathFactoryTestUtil.createTestImports();
testSketch = RuntimePathFactoryTestUtil.createTestSketch();

result = new PreprocessedSketch.Builder();
result.programImports.addAll(testImports);
result.sketch = testSketch;

builder.prepareClassPath(result, testMode);
}

@Test
public void testClassPathLoader() {
assertNotNull(result.classLoader);
}

@Test
public void testClassPathObj() {
assertNotNull(result.classPath);
}

@Test
public void testSketchClassPathStrategiesJava() {
checkPresent(result.classPathArray, "java.base.jmod");
}

@Test
public void testSketchClassPathStrategiesLibrary() {
checkPresent(result.classPathArray, "library3");
}

@Test
public void testSketchClassPathStrategiesCore() {
checkPresent(result.classPathArray, "library3");
}

@Test
public void testSketchClassPathStrategiesMode() {
checkPresent(result.classPathArray, "library6");
}

@Test
public void testSketchClassPathStrategiesCodeFolder() {
checkPresent(result.classPathArray, "file1.jar");
}

@Test
public void testSearchClassPathStrategiesCodeJava() {
checkPresent(result.searchClassPathArray, "java.base.jmod");
}

@Test
public void testSearchClassPathStrategiesCodeMode() {
checkPresent(result.classPathArray, "library6");
}

@Test
public void testSearchClassPathStrategiesCodeLibrary() {
checkPresent(result.classPathArray, "library3");
}

@Test
public void testSearchClassPathStrategiesCodeCore() {
checkPresent(result.classPathArray, "library1");
}

@Test
public void testSearchClassPathStrategiesCodeCodeFolder() {
checkPresent(result.classPathArray, "file3.zip");
}

private void checkPresent(String[] classPathArray, String target) {
long count = Arrays.stream(classPathArray)
.filter((x) -> x.contains(target))
.count();

assertTrue(count > 0);
}

}
Original file line number Diff line number Diff line change
@@ -1,3 +1,23 @@
/* -*- mode: java; c-basic-offset: 2; indent-tabs-mode: nil -*- */

/*
Part of the Processing project - http://processing.org
Copyright (c) 2019 The Processing Foundation
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/

package processing.mode.java.pdex.util.runtime;

import org.junit.Test;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,23 @@
/* -*- mode: java; c-basic-offset: 2; indent-tabs-mode: nil -*- */

/*
Part of the Processing project - http://processing.org
Copyright (c) 2019 The Processing Foundation
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/

package processing.mode.java.pdex.util.runtime.strategy;

import org.junit.Before;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,23 @@
/* -*- mode: java; c-basic-offset: 2; indent-tabs-mode: nil -*- */

/*
Part of the Processing project - http://processing.org
Copyright (c) 2019 The Processing Foundation
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/

package processing.mode.java.pdex.util.runtime.strategy;

import org.junit.Before;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,23 @@
/* -*- mode: java; c-basic-offset: 2; indent-tabs-mode: nil -*- */

/*
Part of the Processing project - http://processing.org
Copyright (c) 2019 The Processing Foundation
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/

package processing.mode.java.pdex.util.runtime.strategy;

import org.junit.Before;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,23 @@
/* -*- mode: java; c-basic-offset: 2; indent-tabs-mode: nil -*- */

/*
Part of the Processing project - http://processing.org
Copyright (c) 2019 The Processing Foundation
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/

package processing.mode.java.pdex.util.runtime.strategy;

import org.junit.Before;
Expand All @@ -7,7 +27,6 @@
import processing.mode.java.pdex.ImportStatement;
import processing.mode.java.pdex.util.runtime.RuntimeConst;

import java.io.IOException;
import java.util.List;

import static org.junit.Assert.*;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,23 @@
/* -*- mode: java; c-basic-offset: 2; indent-tabs-mode: nil -*- */

/*
Part of the Processing project - http://processing.org
Copyright (c) 2019 The Processing Foundation
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/

package processing.mode.java.pdex.util.runtime.strategy;

import org.junit.Before;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,23 @@
/* -*- mode: java; c-basic-offset: 2; indent-tabs-mode: nil -*- */

/*
Part of the Processing project - http://processing.org
Copyright (c) 2019 The Processing Foundation
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/

package processing.mode.java.pdex.util.runtime.strategy;

import org.junit.Before;
Expand Down

0 comments on commit eeebda6

Please sign in to comment.