Changeset 12


Ignore:
Timestamp:
04/28/20 12:56:50 (5 years ago)
Author:
bart
Message:

Release 1.4.0

Files:
6 edited

Legend:

Unmodified
Added
Removed
  • pom.xml

    r11 r12  
    66        <artifactId>profilesserver</artifactId>
    77        <packaging>war</packaging>
    8         <version>1.3.1</version>
     8        <version>1.4.0</version>
    99        <name>profileserver Maven Webapp</name>
    1010        <url>http://maven.apache.org</url>
     
    1818                <jackson-2-version>2.9.10</jackson-2-version>
    1919                <tomcat.version>8.5.20</tomcat.version>
     20                <geniusweb.version>1.4.0</geniusweb.version>
    2021        </properties>
    2122
     
    5051                        <groupId>geniusweb</groupId>
    5152                        <artifactId>profile</artifactId>
    52                         <version>1.3.1</version>
     53                        <version>${geniusweb.version}</version>
    5354                </dependency>
    5455
     
    5657                        <groupId>geniusweb</groupId>
    5758                        <artifactId>bidspace</artifactId>
    58                         <version>1.3.1</version>
     59                        <version>${geniusweb.version}</version>
    5960                </dependency>
    6061
     
    213214
    214215        <build>
    215                 <finalName>profilesserver</finalName>
     216                <finalName>profilesserver-1.4.0</finalName>
     217
    216218
    217219
     
    247249                                </executions>
    248250                        </plugin>
     251
     252                        <!-- This makes but does not install the jar <plugin> <groupId>org.apache.maven.plugins</groupId>
     253                                <artifactId>maven-jar-plugin</artifactId> <executions> <execution> <id>make-a-jar</id>
     254                                <phase>compile</phase> <goals> <goal>jar</goal> </goals> </execution> </executions>
     255                                </plugin> -->
     256                        <!-- This does nothign <plugin> <artifactId>maven-war-plugin</artifactId>
     257                                <configuration> <archiveClasses>true</archiveClasses> </configuration> </plugin> -->
     258
     259                        <plugin>
     260                                <artifactId>maven-war-plugin</artifactId>
     261                                <version>3.2.3</version>
     262                                <configuration>
     263                                        <attachClasses>true</attachClasses>
     264                                </configuration>
     265                        </plugin>
     266
    249267                        <plugin>
    250268                                <groupId>org.apache.maven.plugins</groupId>
     
    327345                                </executions>
    328346                        </plugin>
    329 
    330                         <plugin>
    331                                 <groupId>org.apache.maven.plugins</groupId>
    332                                 <artifactId>maven-assembly-plugin</artifactId>
    333                                 <version>2.4.1</version>
    334                                 <configuration>
    335                                         <!-- get all project dependencies -->
    336                                         <descriptorRefs>
    337                                                 <descriptorRef>jar-with-dependencies</descriptorRef>
    338                                         </descriptorRefs>
    339                                         <archive>
    340                                                 <manifest>
    341                                                         <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
    342                                                         <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
    343                                                 </manifest>
    344                                         </archive>
    345                                 </configuration>
    346                                 <executions>
    347                                         <execution>
    348                                                 <id>make-assembly</id>
    349                                                 <!-- bind to the packaging phase -->
    350                                                 <phase>package</phase>
    351                                                 <goals>
    352                                                         <goal>single</goal>
    353                                                 </goals>
    354                                         </execution>
    355                                 </executions>
    356                         </plugin>
    357 
     347                        <!-- <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId>
     348                                <version>2.4.1</version> <configuration> get all project dependencies <descriptorRefs>
     349                                <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive>
     350                                <manifest> <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
     351                                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries> </manifest>
     352                                </archive> </configuration> <executions> <execution> <id>make-assembly</id>
     353                                bind to the packaging phase <phase>package</phase> <goals> <goal>single</goal>
     354                                </goals> </execution> </executions> </plugin> -->
    358355
    359356                        <!-- Special plugin for the tomcat embedded stuff? -->
     
    410407                                </plugin>
    411408                        </plugins>
     409
    412410                </pluginManagement>
    413411
  • src/main/java/geniusweb/profilesserver/AutoUpdatingProfilesFactory.java

    r8 r12  
    22
    33import java.io.File;
     4import java.io.FileWriter;
    45import java.io.IOException;
     6import java.io.Writer;
    57import java.net.URISyntaxException;
    68import java.nio.file.Path;
     
    6365        }
    6466
     67        @Override
     68        public synchronized void putProfile(Profile profile) throws IOException {
     69                if (!available.containsKey(profile.getDomain())) {
     70                        throw new IOException("profile's domain does not exist");
     71                }
     72                String domainname = profile.getDomain().getName();
     73                String profilename = profile.getName();
     74                if (!profilename.matches("[a-zA-Z0-9-]+"))
     75                        throw new IOException("illegal profile name " + profilename
     76                                        + ", only letters, numbers and - allowed");
     77                File file = Paths
     78                                .get(rootdir.toString(), domainname, profilename + JSON)
     79                                .toFile();
     80                if (file.exists()) {
     81                        String msg = fileCheck(file, false, true);
     82                        if (msg != null)
     83                                throw new IOException(msg);
     84                }
     85
     86                // CHECK utf-8 compatibility? Do we need that anyway?
     87                try (Writer out = new FileWriter(file, false)) {
     88                        out.write(Jackson.instance().writeValueAsString(profile));
     89                }
     90                // trigger the update immediately, avoid wait for FileChecker.
     91                super.add(profile);
     92
     93        }
     94
    6595        /**
    6696         * Called when some file that may be relevant has changed. Synchronized to
     
    267297
    268298        /**
    269          * check and report basic problems with a file.
     299         * Silent check and report basic problems with a file. Silent in the sense
     300         * that errors are logged but cause no exception.
    270301         *
    271302         * @param file              the file to check
     
    275306         */
    276307        private boolean basicFileCheck(File file, boolean shouldbeDirectory) {
     308                String msg = fileCheck(file, shouldbeDirectory, false);
     309                if (msg != null) {
     310                        log.log(Level.WARNING, msg);
     311                        return false;
     312                }
     313                return true;
     314        }
     315
     316        /**
     317         *
     318         * @param file              the file to check
     319         * @param shouldbeDirectory true if expected a directory
     320         * @param shouldbeWritable  true if expected to be writable
     321         * @return null if file is there, is file/directory, allows reading and
     322         *         allows writing (if specified).
     323         */
     324        private String fileCheck(File file, boolean shouldbeDirectory,
     325                        boolean shouldbeWritable) {
    277326                if (!file.exists()) {
    278                         log.log(Level.WARNING, file + " is missing");
    279                         return false;
     327                        return file + " is missing";
    280328                }
    281329                if (!file.canRead()) {
    282                         log.log(Level.WARNING,
    283                                         "directory " + file + "does not allow reading ");
    284                         return false;
     330                        return "directory " + file + "does not allow reading ";
    285331                }
    286332                if (shouldbeDirectory) {
    287333                        if (!file.isDirectory()) {
    288                                 log.log(Level.WARNING, file + " is not a directory");
    289                                 return false;
     334                                return file + " is not a directory";
    290335                        }
    291336                } else {
    292337                        if (!file.isFile()) {
    293                                 log.log(Level.WARNING, file + " is not a file");
    294                                 return false;
    295                         }
    296                 }
    297                 return true;
     338                                return file + " is not a file";
     339                        }
     340                }
     341                if (shouldbeWritable && !file.canWrite()) {
     342                        return file + "is read-only";
     343                }
     344                return null;
     345
    298346        }
    299347
  • src/main/java/geniusweb/profilesserver/DefaultProfilesFactory.java

    r7 r12  
    11package geniusweb.profilesserver;
    22
     3import java.io.IOException;
    34import java.util.Collections;
    45import java.util.LinkedList;
     
    8485        }
    8586
     87        @Override
     88        public synchronized void putProfile(Profile profile) throws IOException {
     89                if (!available.containsKey(profile.getDomain())) {
     90                        throw new IOException("profile's domain does not exist");
     91                }
     92                add(profile);
     93        }
     94
    8695        /**************** support for updating ***************/
    8796        /**
  • src/main/java/geniusweb/profilesserver/ProfilesFactory.java

    r1 r12  
    11package geniusweb.profilesserver;
    22
     3import java.io.IOException;
    34import java.util.List;
    45
     
    4041        List<Profile> getProfiles(String domainname);
    4142
     43        /**
     44         * Permanently (over)write a profile to the repository (not just in memory).
     45         *
     46         * @param profile the profile to be written. The domain file must exist and
     47         *                match.
     48         * @throws IOException if the profile does not meet the requirements.
     49         */
     50        void putProfile(Profile profile) throws IOException;
     51
    4252}
  • src/main/webapp/WEB-INF/web.xml

    r1 r12  
    66        <display-name>Domains and Profiles server</display-name>
    77
    8 <servlet>
    9     <!-- List files in /ws-definitions -->
    10     <servlet-name>listrepo</servlet-name>
    11     <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
    12     <init-param>
    13         <param-name>debug</param-name>
    14         <param-value>0</param-value>
    15     </init-param>
    16     <init-param>
    17         <param-name>listings</param-name>
    18         <param-value>true</param-value>
    19     </init-param>
    20     <load-on-startup>100</load-on-startup>
    21 </servlet>
     8        <filter>
     9                <filter-name>CorsFilter</filter-name>
     10                <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
     11                <init-param>
     12                        <param-name>cors.allowed.origins</param-name>
     13                        <param-value>*</param-value>
     14                </init-param>
     15                <init-param>
     16                        <param-name>cors.exposed.headers</param-name>
     17                        <param-value>Access-Control-Allow-Origin</param-value>
     18                </init-param>
     19        </filter>
     20        <filter-mapping>
     21                <filter-name>CorsFilter</filter-name>
     22                <url-pattern>/*</url-pattern>
     23        </filter-mapping>
    2224
    23 <servlet-mapping>
    24     <servlet-name>listrepo</servlet-name>
    25     <url-pattern>/domainsrepo/*</url-pattern>
    26 </servlet-mapping>
    27    
     25        <servlet>
     26                <!-- List files in /ws-definitions -->
     27                <servlet-name>listrepo</servlet-name>
     28                <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
     29                <init-param>
     30                        <param-name>debug</param-name>
     31                        <param-value>0</param-value>
     32                </init-param>
     33                <init-param>
     34                        <param-name>listings</param-name>
     35                        <param-value>true</param-value>
     36                </init-param>
     37                <load-on-startup>100</load-on-startup>
     38        </servlet>
     39
     40        <servlet-mapping>
     41                <servlet-name>listrepo</servlet-name>
     42                <url-pattern>/domainsrepo/*</url-pattern>
     43        </servlet-mapping>
     44
    2845</web-app>
    2946
  • src/test/java/geniusweb/profilesserver/AutoUpdatingProfilesFactoryTest.java

    r8 r12  
    222222        }
    223223
     224        @Test
     225        public void saveProfileTest() throws IOException {
     226                assertEquals(0, changes.size());
     227                LinearAdditiveUtilitySpace profile = (LinearAdditiveUtilitySpace) factory
     228                                .getProfile(JOB1);
     229                Profile newprofile = new LinearAdditiveUtilitySpace(profile.getDomain(),
     230                                "jobsA", profile.getUtilities(), profile.getWeights(),
     231                                profile.getReservationBid());
     232                factory.putProfile(newprofile);
     233                // check response immediately
     234                assertEquals(1, changes.size());
     235                assertTrue(changes.get(0) instanceof ProfileChangeEvent);
     236                // check file was written
     237                assertTrue(copyrepodir.resolve("jobs/jobsA.json").toFile().exists());
     238        }
     239
    224240        /**
    225241         * We remove jobs domain.
Note: See TracChangeset for help on using the changeset viewer.