You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by dl...@apache.org on 2017/08/06 02:12:51 UTC
svn commit: r1804217 - in /felix/trunk/converter: ./ persister/
persister/src/ persister/src/main/ persister/src/main/java/
persister/src/main/java/org/ persister/src/main/java/org/apache/
persister/src/main/java/org/apache/felix/ persister/src/main/ja...
Author: dleangen
Date: Sun Aug 6 02:12:50 2017
New Revision: 1804217
URL: http://svn.apache.org/viewvc?rev=1804217&view=rev
Log:
Spun out new project: Persister
Added:
felix/trunk/converter/persister/
felix/trunk/converter/persister/pom.xml (with props)
felix/trunk/converter/persister/readme.txt (with props)
felix/trunk/converter/persister/src/
felix/trunk/converter/persister/src/main/
felix/trunk/converter/persister/src/main/java/
felix/trunk/converter/persister/src/main/java/org/
felix/trunk/converter/persister/src/main/java/org/apache/
felix/trunk/converter/persister/src/main/java/org/apache/felix/
felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/
felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/Persister.java (with props)
felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/PersisterFactory.java (contents, props changed)
- copied, changed from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/Middle.java
felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/impl/
felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/impl/Activator.java (with props)
felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/impl/PersisterFactoryService.java (contents, props changed)
- copied, changed from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/prevayler/PutCommand.java
felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/impl/StandardPersister.java (with props)
felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/package-info.java (with props)
felix/trunk/converter/persister/src/test/
felix/trunk/converter/persister/src/test/java/
felix/trunk/converter/persister/src/test/java/org/
felix/trunk/converter/persister/src/test/java/org/apache/
felix/trunk/converter/persister/src/test/java/org/apache/felix/
felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/
felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/impl/
felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/impl/InMemoryPersisterTest.java (with props)
felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/
felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/backend/
felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/backend/Persistence.java (contents, props changed)
- copied, changed from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/SimpleManager.java
felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/inmemory/
felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/inmemory/MockInMemoryPersistence.java (with props)
felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/
felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/Bottom.java (contents, props changed)
- copied, changed from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/prevayler/CommandDTO.java
felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/ComplexManager.java (contents, props changed)
- copied, changed from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/ComplexManager.java
felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/ComplexMiddle.java (contents, props changed)
- copied, changed from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/ComplexMiddle.java
felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/ComplexTop.java (contents, props changed)
- copied, changed from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/prevayler/ClearCommand.java
felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/Middle.java (contents, props changed)
- copied, changed from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/Bottom.java
felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/SimpleManager.java (contents, props changed)
- copied, changed from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/prevayler/Repository.java
felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/SimpleMiddle.java (contents, props changed)
- copied, changed from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/BottomEntity.java
felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/SimpleTop.java (contents, props changed)
- copied, changed from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/SimpleMiddleEntity.java
felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/
felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/BottomEntity.java (contents, props changed)
- copied, changed from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/AbstractMiddleEntity.java
felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/ComplexManagerService.java (contents, props changed)
- copied, changed from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/ComplexManagerService.java
felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/ComplexMiddleEntity.java (contents, props changed)
- copied, changed from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/SimpleTopEntity.java
felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/ComplexTopEntity.java
- copied, changed from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/ComplexTopEntity.java
felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/SimpleManagerService.java (with props)
felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/SimpleMiddleEntity.java (contents, props changed)
- copied, changed from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/ComplexTopEntity.java
felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/SimpleTopEntity.java (contents, props changed)
- copied, changed from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/prevayler/SerializerAdapter.java
Removed:
felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/impl/json/RepositorySerializationTest.java
felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/Bottom.java
felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/ComplexManager.java
felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/ComplexMiddle.java
felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/ComplexTop.java
felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/Middle.java
felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/SimpleManager.java
felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/SimpleMiddle.java
felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/SimpleTop.java
felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/AbstractMiddleEntity.java
felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/BottomEntity.java
felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/ComplexManagerService.java
felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/ComplexMiddleEntity.java
felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/ComplexTopEntity.java
felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/ObjectFactory.java
felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/SimpleManagerService.java
felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/SimpleMiddleEntity.java
felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/SimpleTopEntity.java
felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/prevayler/ClearCommand.java
felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/prevayler/Command.java
felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/prevayler/CommandDTO.java
felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/prevayler/DTOSerializer.java
felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/prevayler/MockPrevaylerBackedRepository.java
felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/prevayler/MockPrevaylerSerializer.java
felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/prevayler/PutAllCommand.java
felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/prevayler/PutCommand.java
felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/prevayler/RemoveCommand.java
felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/prevayler/Repository.java
felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/prevayler/SerializerAdapter.java
Modified:
felix/trunk/converter/pom.xml
felix/trunk/converter/schematizer/src/main/java/org/apache/felix/schematizer/impl/SchematizerImpl.java
felix/trunk/converter/schematizer/src/main/java/org/apache/felix/schematizer/impl/Util.java
Added: felix/trunk/converter/persister/pom.xml
URL: http://svn.apache.org/viewvc/felix/trunk/converter/persister/pom.xml?rev=1804217&view=auto
==============================================================================
--- felix/trunk/converter/persister/pom.xml (added)
+++ felix/trunk/converter/persister/pom.xml Sun Aug 6 02:12:50 2017
@@ -0,0 +1,170 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<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/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>felix-parent</artifactId>
+ <version>4</version>
+ <relativePath>../pom/pom.xml</relativePath>
+ </parent>
+
+ <name>Apache Felix Persister Service</name>
+ <artifactId>org.apache.felix.persister</artifactId>
+ <version>0.1.0-SNAPSHOT</version>
+ <packaging>jar</packaging>
+
+ <scm>
+ <connection>scm:svn:http://svn.apache.org/repos/asf/felix/trunk/converter/persister</connection>
+ <developerConnection>scm:svn:https://svn.apache.org/repos/asf/felix/trunk/converter/persister</developerConnection>
+ <url>http://svn.apache.org/viewvc/felix/trunk/converter/persister/</url>
+ </scm>
+
+ <properties>
+ <felix.java.version>8</felix.java.version>
+ <felix.java.signature.artifactId>java18</felix.java.signature.artifactId>
+ </properties>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <version>3.2.0</version>
+ <executions>
+ <execution>
+ <id>bundle</id>
+ <phase>package</phase>
+ <goals>
+ <goal>bundle</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>baseline</id>
+ <goals>
+ <goal>baseline</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <instructions>
+ <Bundle-Activator>org.apache.felix.persister.impl.Activator</Bundle-Activator>
+ <Private-Package>
+ org.apache.felix.persister.*,
+ org.apache.felix.serializer.impl.*,
+ org.yaml.snakeyaml.*,
+ org.apache.felix.utils.*
+ </Private-Package>
+ <Export-Package>
+ org.apache.felix.persister;
+ uses:="org.osgi.util.converter,org.osgi.util.function,org.osgi.dto,org.osgi.framework"
+ </Export-Package>
+ <Import-Package>
+ org.osgi.util.converter,
+ org.osgi.service.serializer,
+ org.osgi.service.schematizer,
+ *
+ </Import-Package>
+ <Provide-Capability>
+ osgi.service;objectClass:List<String>="org.apache.felix.persister.Persister,org.osgi.service.serializer.Serializer";
+ uses:="org.apache.felix.persister,org.osgi.service.serializer,org.osgi.util.converter,org.osgi.util.function"
+ </Provide-Capability>
+ <_sources>true</_sources>
+ </instructions>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.rat</groupId>
+ <artifactId>apache-rat-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>verify</phase>
+ <goals>
+ <goal>check</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <includes>
+ <include>src/**</include>
+ </includes>
+ <excludes>
+ <exclude>src/main/resources/META-INF/services/org.apache.felix.persister.Persister</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+
+ </plugins>
+ </build>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.converter</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.serializer</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.schematizer</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>osgi.annotation</artifactId>
+ <version>6.0.1</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>osgi.core</artifactId>
+ <version>6.0.0</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.utils</artifactId>
+ <version>1.9.1-SNAPSHOT</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.commons.json</artifactId>
+ <version>2.0.16</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+</project>
Propchange: felix/trunk/converter/persister/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: felix/trunk/converter/persister/readme.txt
URL: http://svn.apache.org/viewvc/felix/trunk/converter/persister/readme.txt?rev=1804217&view=auto
==============================================================================
--- felix/trunk/converter/persister/readme.txt (added)
+++ felix/trunk/converter/persister/readme.txt Sun Aug 6 02:12:50 2017
@@ -0,0 +1,71 @@
+# Apache Felix Converter - Schematizer module
+
+## Overview
+
+The Schematizer follows the concept of "DTO-as-Schema", meaning the idea that
+the DTO describes the data schema, and using this idea to make the schema a
+first-class citizen in the design and implementation of a domain model.
+
+## DTO-as-Schema
+
+DTO-as-Schema (DaS) takes a step away from common Object Oriented (OO) design principles.
+When learning OO programming, common convention was to "hide away" the data in
+order to "protect" it from the wild. Instead of accessing a field directly, the
+idea was to make a field private, and provide "getters" and "setters". The getters
+and setters were supposed to ensure the invariants of the object. Often, however,
+we would end up with code like this:
+
+```java
+public class SomeClass {
+ private String value;
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue( String aValue ) {
+ value = aValue;
+ }
+}
+```
+
+The above is really just a complicated and misleading way of doing this:
+
+```java
+public class SomeClass {
+ public String value;
+}
+```
+
+Even when OO-style classes are well written, it can be argued that the idea of data-hiding
+is a farce anyway when dealing with distributed systems. The reason is because the classes
+need to be serialized before they are put on the wire, and deserialzed again by the remote system.
+This requires exposing the system in the form of an "API", these days usually as a REST API.
+So, when the system is seen as a whole, we recognize that it is simply not possible to have
+a working complex system while "hiding" the core data.
+
+DaS is based on this admission. We admit that there are really *two* interfaces:
+a *programmatic API* and a *data API*.
+
+In the [WHICH?] OSGi specification, DTOs were introduced as a convention for describing objects
+and transferring their state between system sub-parts. It so happens that the rules for DTOs
+describe a schema, in Java code, for the data objects being transferred. By taking advantage of this
+schema and elevating it as a first-class citizen during the design and implementation of domain
+objects, we can elegantly expose both the programmatic API and the data API in code, and reap a few
+other benefits as well, as described below.
+
+Building also on other ideas, notably some of the ideas emerging from functional programming,
+it is possible to develop domain models with a leaner--and thus more productive--code base.
+
+# STATUS
+
+This module is highly experimental and is *not* recommended for production.
+
+# Coding conventions
+
+[TODO]
+
+# Topics to Explore
+
+## Schema transforms
+## Lenses
\ No newline at end of file
Propchange: felix/trunk/converter/persister/readme.txt
------------------------------------------------------------------------------
svn:eol-style = native
Added: felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/Persister.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/Persister.java?rev=1804217&view=auto
==============================================================================
--- felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/Persister.java (added)
+++ felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/Persister.java Sun Aug 6 02:12:50 2017
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) OSGi Alliance (2016). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.felix.persister;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+
+/**
+ * The Persister is backed by the Felix Converter, Serializer, and Schematizer.
+ * Its purpose is to provide a simple integration into a persistence mechanism.
+ * The "DTO-type" entity is persisted as JSON data. The Entity is repopulated by
+ * this JSON data, with a little help from its Schema.
+ *
+ * @author dleangen
+ *
+ * @param <E> The type of the Entity to persist
+ */
+public interface Persister<E> {
+ void serialize(OutputStream out, E entity);
+ E deserialize(InputStream in);
+}
Propchange: felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/Persister.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied: felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/PersisterFactory.java (from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/Middle.java)
URL: http://svn.apache.org/viewvc/felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/PersisterFactory.java?p2=felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/PersisterFactory.java&p1=felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/Middle.java&r1=1804216&r2=1804217&rev=1804217&view=diff
==============================================================================
--- felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/Middle.java (original)
+++ felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/PersisterFactory.java Sun Aug 6 02:12:50 2017
@@ -14,10 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.felix.serializer.test.objects;
+package org.apache.felix.persister;
-public interface Middle
-{
- String getId();
- String getSomeValue();
+public interface PersisterFactory {
+
+ <D>Persister<D> newPersister(Class<D> forType);
}
Propchange: felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/PersisterFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/impl/Activator.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/impl/Activator.java?rev=1804217&view=auto
==============================================================================
--- felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/impl/Activator.java (added)
+++ felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/impl/Activator.java Sun Aug 6 02:12:50 2017
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.felix.persister.impl;
+
+import org.apache.felix.persister.PersisterFactory;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceEvent;
+import org.osgi.framework.ServiceListener;
+import org.osgi.framework.ServiceReference;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.service.serializer.Serializer;
+
+public class Activator implements ServiceListener, BundleActivator {
+
+ private PersisterFactoryService factory;
+ private ServiceRegistration<PersisterFactory> registration;
+ private BundleContext context;
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ this.context = context;
+ context.addServiceListener(this, "(objectclass=" + Serializer.class.getName() + ")");
+ }
+
+ private void activate() {
+ ServiceReference<Serializer> sr = context.getServiceReference(Serializer.class);
+ Serializer serializer = context.getService(sr);
+ factory = new PersisterFactoryService(serializer);
+ registration = context.registerService(PersisterFactory.class, factory, null);
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ this.context = null;
+ }
+
+ private void deactivate() {
+ registration.unregister();
+ factory = null;
+ }
+
+ @Override
+ public void serviceChanged(ServiceEvent event) {
+
+ switch(event.getType()) {
+ case ServiceEvent.REGISTERED :
+ activate();
+ break;
+
+ case ServiceEvent.UNREGISTERING :
+ deactivate();
+ break;
+ }
+ }
+}
Propchange: felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/impl/Activator.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied: felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/impl/PersisterFactoryService.java (from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/prevayler/PutCommand.java)
URL: http://svn.apache.org/viewvc/felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/impl/PersisterFactoryService.java?p2=felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/impl/PersisterFactoryService.java&p1=felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/prevayler/PutCommand.java&r1=1804216&r2=1804217&rev=1804217&view=diff
==============================================================================
--- felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/prevayler/PutCommand.java (original)
+++ felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/impl/PersisterFactoryService.java Sun Aug 6 02:12:50 2017
@@ -14,27 +14,21 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.felix.serializer.test.prevayler;
+package org.apache.felix.persister.impl;
-import java.util.Date;
-import java.util.Map;
-import java.util.Optional;
+import org.apache.felix.persister.Persister;
+import org.apache.felix.persister.PersisterFactory;
+import org.osgi.service.serializer.Serializer;
-public class PutCommand<E>
- extends CommandDTO<E>
-{
- public String key;
- public E entity;
+public class PersisterFactoryService implements PersisterFactory {
- public PutCommand()
- {
- this.command = Command.put;
+ private Serializer serializer;
+
+ public PersisterFactoryService(Serializer aSerializer) {
+ serializer = aSerializer;
}
- public Optional<Exception> executeAndQuery( Map<String, E> prevalentSystem, Date executionTime )
- throws Exception
- {
- prevalentSystem.put( key, entity );
- return Optional.empty();
+ public <D>Persister<D> newPersister(Class<D> forDataType) {
+ return new StandardPersister<>(forDataType, serializer);
}
}
Propchange: felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/impl/PersisterFactoryService.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/impl/StandardPersister.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/impl/StandardPersister.java?rev=1804217&view=auto
==============================================================================
--- felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/impl/StandardPersister.java (added)
+++ felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/impl/StandardPersister.java Sun Aug 6 02:12:50 2017
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.felix.persister.impl;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import org.apache.felix.persister.Persister;
+import org.apache.felix.schematizer.Schematizer;
+import org.apache.felix.schematizer.StandardSchematizer;
+import org.osgi.service.serializer.Serializer;
+import org.osgi.util.converter.Converter;
+
+public class StandardPersister<D> implements Persister<D> {
+
+ private final Class<D> dataType;
+ private final Serializer serializer;
+ private Converter converter;
+
+ public StandardPersister(Class<D> aDataType, Serializer aSerializer) {
+ dataType = aDataType;
+ serializer = aSerializer;
+ }
+
+ @Override
+ public void serialize(OutputStream out, D entity) {
+ try {
+ serializer.serialize(entity).with(getConverter()).to( out );
+ } catch ( IOException e ) {
+ // TODO: Handle this
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public D deserialize(InputStream in) {
+ return (D)serializer
+ .deserialize(dataType)
+ .with(getConverter())
+ .from(in);
+ }
+
+ private Converter getConverter() {
+ if (converter == null) {
+ String name = dataType.getName();
+ Schematizer s = new StandardSchematizer();
+ s.schematize(name, dataType).get(name);
+ converter = s.converterFor(name);
+ }
+
+ return converter;
+ }
+}
Propchange: felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/impl/StandardPersister.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/package-info.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/package-info.java?rev=1804217&view=auto
==============================================================================
--- felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/package-info.java (added)
+++ felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/package-info.java Sun Aug 6 02:12:50 2017
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) OSGi Alliance (2016). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Persister Package Version 1.0.
+ *
+ * @author $Id$
+ */
+@org.osgi.annotation.versioning.Version("1.0")
+package org.apache.felix.persister;
\ No newline at end of file
Propchange: felix/trunk/converter/persister/src/main/java/org/apache/felix/persister/package-info.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/impl/InMemoryPersisterTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/impl/InMemoryPersisterTest.java?rev=1804217&view=auto
==============================================================================
--- felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/impl/InMemoryPersisterTest.java (added)
+++ felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/impl/InMemoryPersisterTest.java Sun Aug 6 02:12:50 2017
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.felix.persister.impl;
+
+
+import org.apache.felix.serializer.impl.json.JsonSerializerImpl;
+import org.apache.felix.persister.Persister;
+import org.apache.felix.persister.PersisterFactory;
+import org.apache.felix.persister.test.backend.Persistence;
+import org.apache.felix.persister.test.inmemory.MockInMemoryPersistence;
+import org.apache.felix.persister.test.objects.Bottom;
+import org.apache.felix.persister.test.objects.SimpleMiddle;
+import org.apache.felix.persister.test.objects.SimpleTop;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.osgi.service.serializer.Serializer;
+
+import static org.junit.Assert.*;
+
+public class InMemoryPersisterTest {
+ private PersisterFactory factory;
+
+ @Before
+ public void setUp() {
+ Serializer serializer = new JsonSerializerImpl();
+ factory = new PersisterFactoryService(serializer);
+ }
+
+ @After
+ public void tearDown() {
+ factory = null;
+ }
+
+ @Test
+ public void testInMemoryPersister() {
+ Persister<SimpleTop.SimpleTopDTO> persister = factory.newPersister(SimpleTop.SimpleTopDTO.class);
+ Persistence<SimpleTop.SimpleTopDTO> p = new MockInMemoryPersistence<>(persister);
+ SimpleTop.SimpleTopDTO top = newMockSimpleTop();
+ p.put(top.id, top);
+ SimpleTop.SimpleTopDTO result = p.get(top.id);
+
+ assertEquals(top.id,result.id);
+ assertEquals(top.value1,result.value1);
+ assertEquals(top.value2,result.value2);
+ assertEquals(top.embedded.id,result.embedded.id);
+ assertEquals(top.embedded.value,result.embedded.value);
+ assertEquals(top.embedded.embedded.id,result.embedded.embedded.id);
+ assertEquals(top.embedded.embedded.cul,result.embedded.embedded.cul);
+ }
+
+ private SimpleTop.SimpleTopDTO newMockSimpleTop() {
+ SimpleTop.SimpleTopDTO top = new SimpleTop.SimpleTopDTO();
+ top.id = "TOP";
+ top.value1 = "top-value1";
+ top.value2 = "top-value2";
+
+ SimpleMiddle.SimpleMiddleDTO mid = new SimpleMiddle.SimpleMiddleDTO();
+ mid.id = "MID";
+ mid.value = "mid-value";
+
+ Bottom.BottomDTO bum = new Bottom.BottomDTO();
+ bum.id = "BUM";
+ bum.cul = "moncul";
+
+ mid.embedded = bum;
+ top.embedded = mid;
+
+ return top;
+ }
+}
Propchange: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/impl/InMemoryPersisterTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/backend/Persistence.java (from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/SimpleManager.java)
URL: http://svn.apache.org/viewvc/felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/backend/Persistence.java?p2=felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/backend/Persistence.java&p1=felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/SimpleManager.java&r1=1804216&r2=1804217&rev=1804217&view=diff
==============================================================================
--- felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/SimpleManager.java (original)
+++ felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/backend/Persistence.java Sun Aug 6 02:12:50 2017
@@ -14,23 +14,33 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.felix.serializer.test.objects;
+package org.apache.felix.persister.test.backend;
import java.util.List;
-import java.util.Optional;
+import java.util.Map;
-import org.apache.felix.serializer.test.prevayler.Repository;
+/**
+ * Represents the interface to some persistence mechanism, such as
+ * a generic Repository, Datastore, or Database.
+ * It could be a key/value store, or something else, and the actual methods
+ * exposed may be different. But in any case we consider some basic CRUD
+ * operations, which will require serialization and of course deserialization.
+ */
+public interface Persistence<E> {
-public interface SimpleManager
-{
List<String> keys();
- List<SimpleTop> list();
- Optional<SimpleTop> get( String key );
- void add( SimpleTop top );
- void delete( String key );
- void clear();
+ List<E> list();
+
+ E get(String key);
+
+ int size();
- // This is only for testing. It would normally not be part of an API.
- Repository<SimpleTop> repository();
+ void put(String key, E entity);
+
+ void putAll(Map<String, E> entityMap);
+
+ void remove(String key);
+
+ void clear();
}
Propchange: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/backend/Persistence.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/inmemory/MockInMemoryPersistence.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/inmemory/MockInMemoryPersistence.java?rev=1804217&view=auto
==============================================================================
--- felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/inmemory/MockInMemoryPersistence.java (added)
+++ felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/inmemory/MockInMemoryPersistence.java Sun Aug 6 02:12:50 2017
@@ -0,0 +1,99 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.felix.persister.test.inmemory;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.nio.charset.Charset;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import org.apache.felix.persister.Persister;
+import org.apache.felix.persister.test.backend.Persistence;
+
+public class MockInMemoryPersistence<E> implements Persistence<E> {
+
+ private final Map<String, String> store = new HashMap<>();
+ private final Persister<E> persister;
+
+ public MockInMemoryPersistence(Persister<E> aPersister) {
+ persister = aPersister;
+ }
+
+ @Override
+ public List<String> keys() {
+ return store.keySet().stream()
+ .collect(Collectors.toList());
+ }
+
+ @Override
+ public List<E> list() {
+ return store.values().stream()
+ .map(s -> deserialize(s))
+ .collect(Collectors.toList());
+ }
+
+ @Override
+ public E get( String key ) {
+ return deserialize(store.get(key));
+ }
+
+ @Override
+ public int size() {
+ return store.size();
+ }
+
+ @Override
+ public void put(String key, E entity) {
+ store.put(key, serialize(entity));
+ }
+
+ @Override
+ public void putAll(Map<String, E> entityMap) {
+ entityMap.entrySet().stream()
+ .forEach(e -> store.put(e.getKey(),null));
+ }
+
+ @Override
+ public void remove(String key) {
+ store.remove(key);
+ }
+
+ @Override
+ public void clear() {
+ store.clear();
+ }
+
+ private E deserialize(String json) {
+ InputStream in = new ByteArrayInputStream(json.getBytes(Charset.forName("UTF-8")));
+ return persister.deserialize( in );
+ }
+
+ private String serialize(E entity) {
+ try {
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ persister.serialize(out, entity);
+ return out.toString("UTF-8");
+ } catch ( UnsupportedEncodingException e ) {
+ return "ERROR";
+ }
+ }
+}
Propchange: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/inmemory/MockInMemoryPersistence.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/Bottom.java (from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/prevayler/CommandDTO.java)
URL: http://svn.apache.org/viewvc/felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/Bottom.java?p2=felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/Bottom.java&p1=felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/prevayler/CommandDTO.java&r1=1804216&r2=1804217&rev=1804217&view=diff
==============================================================================
--- felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/prevayler/CommandDTO.java (original)
+++ felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/Bottom.java Sun Aug 6 02:12:50 2017
@@ -14,12 +14,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.felix.serializer.test.prevayler;
+package org.apache.felix.persister.test.objects;
import org.osgi.dto.DTO;
-public abstract class CommandDTO<E>
- extends DTO
-{
- public Command command;
+public interface Bottom {
+ String id();
+ String cul();
+
+ public static class BottomDTO extends DTO {
+ public String id;
+ public String cul;
+ }
}
Propchange: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/Bottom.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/ComplexManager.java (from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/ComplexManager.java)
URL: http://svn.apache.org/viewvc/felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/ComplexManager.java?p2=felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/ComplexManager.java&p1=felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/ComplexManager.java&r1=1804216&r2=1804217&rev=1804217&view=diff
==============================================================================
--- felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/ComplexManager.java (original)
+++ felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/ComplexManager.java Sun Aug 6 02:12:50 2017
@@ -14,25 +14,21 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.felix.serializer.test.objects;
+package org.apache.felix.persister.test.objects;
import java.util.Collection;
import java.util.List;
-import java.util.Optional;
-import org.apache.felix.serializer.test.prevayler.Repository;
-
-public interface ComplexManager
-{
+public interface ComplexManager {
List<String> keys();
List<ComplexTop> list();
- Optional<ComplexTop> get( String key );
+ ComplexTop get(String key);
- void add( ComplexTop top );
- void addAll( Collection<ComplexTop> tops );
- void delete( String key );
+ void add(ComplexTop top);
+ void addAll(Collection<ComplexTop> tops);
+ void delete(String key);
void clear();
- // This is only for testing. It would normally not be part of an API.
- Repository<ComplexTop> repository();
+// // This is only for testing. It would normally not be part of an API.
+// Repository<ComplexTop> repository();
}
Propchange: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/ComplexManager.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/ComplexMiddle.java (from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/ComplexMiddle.java)
URL: http://svn.apache.org/viewvc/felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/ComplexMiddle.java?p2=felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/ComplexMiddle.java&p1=felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/ComplexMiddle.java&r1=1804216&r2=1804217&rev=1804217&view=diff
==============================================================================
--- felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/ComplexMiddle.java (original)
+++ felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/ComplexMiddle.java Sun Aug 6 02:12:50 2017
@@ -14,12 +14,21 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.felix.serializer.test.objects;
+package org.apache.felix.persister.test.objects;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.List;
-public interface ComplexMiddle
- extends Middle
-{
- Collection<Bottom> getEmbeddedValue();
+import org.apache.felix.persister.test.objects.Bottom.BottomDTO;
+import org.osgi.dto.DTO;
+
+public interface ComplexMiddle extends Middle {
+ Collection<Bottom> embeddedValue();
+
+ public static class ComplexMiddleDTO extends DTO {
+ public String id;
+ public String value;
+ public List<BottomDTO> embedded = new ArrayList<>();
+ }
}
Propchange: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/ComplexMiddle.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/ComplexTop.java (from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/prevayler/ClearCommand.java)
URL: http://svn.apache.org/viewvc/felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/ComplexTop.java?p2=felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/ComplexTop.java&p1=felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/prevayler/ClearCommand.java&r1=1804216&r2=1804217&rev=1804217&view=diff
==============================================================================
--- felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/prevayler/ClearCommand.java (original)
+++ felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/ComplexTop.java Sun Aug 6 02:12:50 2017
@@ -14,24 +14,21 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.felix.serializer.test.prevayler;
+package org.apache.felix.persister.test.objects;
-import java.util.Date;
-import java.util.Map;
-import java.util.Optional;
+import org.apache.felix.persister.test.objects.ComplexMiddle.ComplexMiddleDTO;
+import org.osgi.dto.DTO;
-public class ClearCommand<E>
- extends CommandDTO<E>
-{
- public ClearCommand()
- {
- this.command = Command.clear;
- }
+public interface ComplexTop {
+ String id();
+ String directValue();
+ String calculatedValue();
+ ComplexMiddle embeddedValue();
- public Optional<Exception> executeAndQuery( Map<String, E> prevalentSystem, Date executionTime )
- throws Exception
- {
- prevalentSystem.clear();
- return Optional.empty();
+ public static class ComplexTopDTO extends DTO {
+ public String id;
+ public String value1;
+ public String value2;
+ public ComplexMiddleDTO embedded;
}
}
Propchange: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/ComplexTop.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/Middle.java (from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/Bottom.java)
URL: http://svn.apache.org/viewvc/felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/Middle.java?p2=felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/Middle.java&p1=felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/Bottom.java&r1=1804216&r2=1804217&rev=1804217&view=diff
==============================================================================
--- felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/Bottom.java (original)
+++ felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/Middle.java Sun Aug 6 02:12:50 2017
@@ -14,10 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.felix.serializer.test.objects;
+package org.apache.felix.persister.test.objects;
-public interface Bottom
-{
- String getId();
- String getBum();
+public interface Middle {
+ String id();
+ String value();
}
Propchange: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/Middle.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/SimpleManager.java (from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/prevayler/Repository.java)
URL: http://svn.apache.org/viewvc/felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/SimpleManager.java?p2=felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/SimpleManager.java&p1=felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/prevayler/Repository.java&r1=1804216&r2=1804217&rev=1804217&view=diff
==============================================================================
--- felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/prevayler/Repository.java (original)
+++ felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/SimpleManager.java Sun Aug 6 02:12:50 2017
@@ -14,26 +14,19 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.felix.serializer.test.prevayler;
+package org.apache.felix.persister.test.objects;
import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-public interface Repository<E> {
+public interface SimpleManager {
List<String> keys();
+ List<SimpleTop> list();
+ SimpleTop get(String key);
- List<E> list();
-
- Optional<E> get(String key);
-
- int size();
-
- void put(String key, E entity);
-
- void putAll(Map<String, E> entityMap);
-
- void remove(String key);
-
+ void add(SimpleTop top);
+ void delete(String key);
void clear();
+
+// // This is only for testing. It would normally not be part of an API.
+// Repository<SimpleTop> repository();
}
Propchange: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/SimpleManager.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/SimpleMiddle.java (from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/BottomEntity.java)
URL: http://svn.apache.org/viewvc/felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/SimpleMiddle.java?p2=felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/SimpleMiddle.java&p1=felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/BottomEntity.java&r1=1804216&r2=1804217&rev=1804217&view=diff
==============================================================================
--- felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/BottomEntity.java (original)
+++ felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/SimpleMiddle.java Sun Aug 6 02:12:50 2017
@@ -14,25 +14,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.felix.serializer.test.objects.provider;
+package org.apache.felix.persister.test.objects;
-import org.apache.felix.serializer.test.objects.Bottom;
+import org.apache.felix.persister.test.objects.Bottom.BottomDTO;
import org.osgi.dto.DTO;
-public class BottomEntity
- extends DTO
- implements Bottom
-{
- public String id;
- public String bum;
+public interface SimpleMiddle extends Middle {
+ Bottom embeddedValue();
- public String getId()
- {
- return id;
- }
-
- public String getBum()
- {
- return bum;
+ public static class SimpleMiddleDTO extends DTO {
+ public String id;
+ public String value;
+ public BottomDTO embedded;
}
}
Propchange: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/SimpleMiddle.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/SimpleTop.java (from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/SimpleMiddleEntity.java)
URL: http://svn.apache.org/viewvc/felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/SimpleTop.java?p2=felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/SimpleTop.java&p1=felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/SimpleMiddleEntity.java&r1=1804216&r2=1804217&rev=1804217&view=diff
==============================================================================
--- felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/SimpleMiddleEntity.java (original)
+++ felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/SimpleTop.java Sun Aug 6 02:12:50 2017
@@ -14,19 +14,21 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.felix.serializer.test.objects.provider;
+package org.apache.felix.persister.test.objects;
-import org.apache.felix.serializer.test.objects.SimpleMiddle;
+import org.apache.felix.persister.test.objects.SimpleMiddle.SimpleMiddleDTO;
+import org.osgi.dto.DTO;
+public interface SimpleTop {
+ String id();
+ String directValue();
+ String calculatedValue();
+ Middle embeddedValue();
-public class SimpleMiddleEntity
- extends AbstractMiddleEntity
- implements SimpleMiddle
-{
- public BottomEntity embeddedValue;
-
- public BottomEntity getEmbeddedValue()
- {
- return embeddedValue;
+ public static class SimpleTopDTO extends DTO {
+ public String id;
+ public String value1;
+ public String value2;
+ public SimpleMiddleDTO embedded;
}
}
Propchange: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/SimpleTop.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/BottomEntity.java (from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/AbstractMiddleEntity.java)
URL: http://svn.apache.org/viewvc/felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/BottomEntity.java?p2=felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/BottomEntity.java&p1=felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/AbstractMiddleEntity.java&r1=1804216&r2=1804217&rev=1804217&view=diff
==============================================================================
--- felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/AbstractMiddleEntity.java (original)
+++ felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/BottomEntity.java Sun Aug 6 02:12:50 2017
@@ -14,25 +14,22 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.felix.serializer.test.objects.provider;
+package org.apache.felix.persister.test.objects.provider;
-import org.apache.felix.serializer.test.objects.Middle;
-import org.osgi.dto.DTO;
+import org.apache.felix.persister.test.objects.Bottom;
-public class AbstractMiddleEntity
- extends DTO
- implements Middle
-{
- public String id;
- public String someValue;
+public class BottomEntity extends Bottom.BottomDTO implements Bottom {
- public String getId()
- {
+ public BottomEntity(BottomDTO dto) {
+ this.id = dto.id;
+ this.cul = dto.cul;
+ }
+
+ public String id() {
return id;
}
- public String getSomeValue()
- {
- return someValue;
+ public String cul() {
+ return cul;
}
}
Propchange: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/BottomEntity.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/ComplexManagerService.java (from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/ComplexManagerService.java)
URL: http://svn.apache.org/viewvc/felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/ComplexManagerService.java?p2=felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/ComplexManagerService.java&p1=felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/ComplexManagerService.java&r1=1804216&r2=1804217&rev=1804217&view=diff
==============================================================================
--- felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/ComplexManagerService.java (original)
+++ felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/ComplexManagerService.java Sun Aug 6 02:12:50 2017
@@ -14,30 +14,32 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.felix.serializer.test.objects.provider;
+package org.apache.felix.persister.test.objects.provider;
import java.util.Collection;
import java.util.List;
-import java.util.Optional;
import java.util.stream.Collectors;
-import org.apache.felix.serializer.test.objects.ComplexManager;
-import org.apache.felix.serializer.test.objects.ComplexTop;
-import org.apache.felix.serializer.test.prevayler.MockPrevaylerBackedRepository;
-import org.apache.felix.serializer.test.prevayler.Repository;
-
-public class ComplexManagerService
- implements ComplexManager
-{
- private final Repository<ComplexTopEntity> repository;
+import org.apache.felix.persister.test.backend.Persistence;
+import org.apache.felix.persister.test.objects.ComplexManager;
+import org.apache.felix.persister.test.objects.ComplexTop;
+
+/**
+ * Represents a service or perhaps a domain aggregate or service that
+ * acts on the entity to be persisted. In this example the persistence mechanism
+ * is injected directly into this service.
+ */
+public class ComplexManagerService implements ComplexManager {
+
+ private final Persistence<ComplexTopEntity> persistence;
- public ComplexManagerService() {
- repository = new MockPrevaylerBackedRepository<>(ComplexTopEntity.class);
+ public ComplexManagerService(Persistence<ComplexTopEntity> aBackend) {
+ persistence = aBackend;
}
@Override
public void add(ComplexTop top) {
- repository.put(top.getId(), (ComplexTopEntity)top);
+ persistence.put(top.id(), (ComplexTopEntity)top);
}
@Override
@@ -47,33 +49,27 @@ public class ComplexManagerService
@Override
public List<String> keys() {
- return repository.keys();
+ return persistence.keys();
}
@Override
public List<ComplexTop> list()
{
- return repository.list().stream().map(e -> e).collect(Collectors.toList());
+ return persistence.list().stream().map(e -> e).collect(Collectors.toList());
}
@Override
- public Optional<ComplexTop> get(String key) {
- return Optional.of( repository.get( key ).get() );
+ public ComplexTop get(String key) {
+ return persistence.get(key);
}
@Override
public void delete(String key) {
- repository.remove(key);
+ persistence.remove(key);
}
@Override
public void clear() {
- repository.clear();
+ persistence.clear();
}
-
- @SuppressWarnings( { "unchecked", "rawtypes" } )
- @Override
- public Repository<ComplexTop> repository() {
- return (Repository)repository;
- }
}
Propchange: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/ComplexManagerService.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/ComplexMiddleEntity.java (from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/SimpleTopEntity.java)
URL: http://svn.apache.org/viewvc/felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/ComplexMiddleEntity.java?p2=felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/ComplexMiddleEntity.java&p1=felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/SimpleTopEntity.java&r1=1804216&r2=1804217&rev=1804217&view=diff
==============================================================================
--- felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/SimpleTopEntity.java (original)
+++ felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/ComplexMiddleEntity.java Sun Aug 6 02:12:50 2017
@@ -14,35 +14,36 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.felix.serializer.test.objects.provider;
+package org.apache.felix.persister.test.objects.provider;
-import org.apache.felix.serializer.test.objects.Middle;
-import org.apache.felix.serializer.test.objects.SimpleTop;
-import org.osgi.dto.DTO;
-
-public class SimpleTopEntity
- extends DTO
- implements SimpleTop
-{
- public String id;
- public String value;
- public SimpleMiddleEntity embeddedValue;
+import java.util.Collection;
+import java.util.stream.Collectors;
+
+import org.apache.felix.persister.test.objects.Bottom;
+import org.apache.felix.persister.test.objects.ComplexMiddle;
+
+public class ComplexMiddleEntity extends ComplexMiddle.ComplexMiddleDTO implements ComplexMiddle {
+
+ public ComplexMiddleEntity(ComplexMiddleDTO dto) {
+ this.id = dto.id;
+ this.value = dto.value;
+ this.embedded = dto.embedded;
+ }
@Override
- public String getId()
- {
+ public String id() {
return id;
}
@Override
- public String getValue()
- {
+ public String value() {
return value;
}
@Override
- public Middle getEmbeddedValue()
- {
- return embeddedValue;
+ public Collection<Bottom> embeddedValue() {
+ return embedded.stream()
+ .map(e -> new BottomEntity(e))
+ .collect(Collectors.toList());
}
}
Propchange: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/ComplexMiddleEntity.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/ComplexTopEntity.java (from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/ComplexTopEntity.java)
URL: http://svn.apache.org/viewvc/felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/ComplexTopEntity.java?p2=felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/ComplexTopEntity.java&p1=felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/ComplexTopEntity.java&r1=1804216&r2=1804217&rev=1804217&view=diff
==============================================================================
--- felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/ComplexTopEntity.java (original)
+++ felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/ComplexTopEntity.java Sun Aug 6 02:12:50 2017
@@ -14,35 +14,37 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.felix.serializer.test.objects.provider;
+package org.apache.felix.persister.test.objects.provider;
-import org.apache.felix.serializer.test.objects.ComplexMiddle;
-import org.apache.felix.serializer.test.objects.ComplexTop;
-import org.osgi.dto.DTO;
-
-public class ComplexTopEntity
- extends DTO
- implements ComplexTop
-{
- public String id;
- public String value;
- public ComplexMiddleEntity embeddedValue;
+import org.apache.felix.persister.test.objects.ComplexMiddle;
+import org.apache.felix.persister.test.objects.ComplexTop;
+
+public class ComplexTopEntity extends ComplexTop.ComplexTopDTO implements ComplexTop {
+
+ public ComplexTopEntity(ComplexTopDTO dto) {
+ this.id = dto.id;
+ this.value1 = dto.value1;
+ this.value2 = dto.value2;
+ this.embedded = dto.embedded;
+ }
@Override
- public String getId()
- {
+ public String id() {
return id;
}
@Override
- public String getValue()
- {
- return value;
+ public String directValue() {
+ return value1;
+ }
+
+ @Override
+ public String calculatedValue() {
+ return value2 == null ? null : value2.toUpperCase();
}
@Override
- public ComplexMiddle getEmbeddedValue()
- {
- return embeddedValue;
+ public ComplexMiddle embeddedValue() {
+ return new ComplexMiddleEntity(embedded);
}
}
Added: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/SimpleManagerService.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/SimpleManagerService.java?rev=1804217&view=auto
==============================================================================
--- felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/SimpleManagerService.java (added)
+++ felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/SimpleManagerService.java Sun Aug 6 02:12:50 2017
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.felix.persister.test.objects.provider;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+import org.apache.felix.persister.test.backend.Persistence;
+import org.apache.felix.persister.test.objects.SimpleManager;
+import org.apache.felix.persister.test.objects.SimpleTop;
+
+/**
+ * Represents a service or perhaps a domain aggregate or service that
+ * acts on the entity to be persisted. In this example the persistence mechanism
+ * is injected directly into this service.
+ */
+public class SimpleManagerService implements SimpleManager {
+
+ private final Persistence<SimpleTopEntity> persistence;
+
+ public SimpleManagerService(Persistence<SimpleTopEntity> aBackend) {
+ persistence = aBackend;
+ }
+
+ @Override
+ public void add(SimpleTop top) {
+ persistence.put(top.id(), (SimpleTopEntity)top);
+ }
+
+ @Override
+ public List<String> keys() {
+ return persistence.keys();
+ }
+
+ @Override
+ public List<SimpleTop> list() {
+ return persistence.list().stream().collect(Collectors.toList());
+ }
+
+ @Override
+ public SimpleTop get(String key) {
+ return persistence.get(key);
+ }
+
+ @Override
+ public void delete(String key) {
+ persistence.remove(key);
+ }
+
+ @Override
+ public void clear() {
+ persistence.clear();
+ }
+}
Propchange: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/SimpleManagerService.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/SimpleMiddleEntity.java (from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/ComplexTopEntity.java)
URL: http://svn.apache.org/viewvc/felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/SimpleMiddleEntity.java?p2=felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/SimpleMiddleEntity.java&p1=felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/ComplexTopEntity.java&r1=1804216&r2=1804217&rev=1804217&view=diff
==============================================================================
--- felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/objects/provider/ComplexTopEntity.java (original)
+++ felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/SimpleMiddleEntity.java Sun Aug 6 02:12:50 2017
@@ -14,35 +14,31 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.felix.serializer.test.objects.provider;
+package org.apache.felix.persister.test.objects.provider;
-import org.apache.felix.serializer.test.objects.ComplexMiddle;
-import org.apache.felix.serializer.test.objects.ComplexTop;
-import org.osgi.dto.DTO;
-
-public class ComplexTopEntity
- extends DTO
- implements ComplexTop
-{
- public String id;
- public String value;
- public ComplexMiddleEntity embeddedValue;
+import org.apache.felix.persister.test.objects.Bottom;
+import org.apache.felix.persister.test.objects.SimpleMiddle;
+
+public class SimpleMiddleEntity extends SimpleMiddle.SimpleMiddleDTO implements SimpleMiddle {
+
+ public SimpleMiddleEntity(SimpleMiddleDTO dto) {
+ this.id = dto.id;
+ this.value = dto.value;
+ this.embedded = dto.embedded;
+ }
@Override
- public String getId()
- {
+ public String id() {
return id;
}
@Override
- public String getValue()
- {
+ public String value() {
return value;
}
@Override
- public ComplexMiddle getEmbeddedValue()
- {
- return embeddedValue;
+ public Bottom embeddedValue() {
+ return new BottomEntity(embedded);
}
}
Propchange: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/SimpleMiddleEntity.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/SimpleTopEntity.java (from r1804216, felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/prevayler/SerializerAdapter.java)
URL: http://svn.apache.org/viewvc/felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/SimpleTopEntity.java?p2=felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/SimpleTopEntity.java&p1=felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/prevayler/SerializerAdapter.java&r1=1804216&r2=1804217&rev=1804217&view=diff
==============================================================================
--- felix/trunk/converter/schematizer/src/test/java/org/apache/felix/serializer/test/prevayler/SerializerAdapter.java (original)
+++ felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/SimpleTopEntity.java Sun Aug 6 02:12:50 2017
@@ -14,35 +14,37 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.felix.serializer.test.prevayler;
+package org.apache.felix.persister.test.objects.provider;
-import java.io.InputStream;
-import java.io.OutputStream;
+import org.apache.felix.persister.test.objects.Middle;
+import org.apache.felix.persister.test.objects.SimpleTop;
-public class SerializerAdapter
- implements MockPrevaylerSerializer
-{
- private final DTOSerializer<CommandDTO<?>> delegate;
-
- public SerializerAdapter( DTOSerializer<CommandDTO<?>> aDelegate )
- {
- delegate = aDelegate;
+public class SimpleTopEntity extends SimpleTop.SimpleTopDTO implements SimpleTop {
+
+ public SimpleTopEntity(SimpleTopDTO dto) {
+ this.id = dto.id;
+ this.value1 = dto.value1;
+ this.value2 = dto.value2;
+ this.embedded = dto.embedded;
+ }
+
+ @Override
+ public String id() {
+ return id;
}
@Override
- public Object readObject( InputStream in )
- throws Exception
- {
- return delegate.deserialize( in );
+ public String directValue() {
+ return value1;
}
@Override
- public void writeObject( OutputStream out, Object object )
- throws Exception
- {
- if( !( object instanceof CommandDTO ))
- throw new ClassCastException( "Cannot cast " + object.getClass() + " to CommandDTO" );
+ public String calculatedValue() {
+ return value2 == null ? null : value2.toUpperCase();
+ }
- delegate.serialize( out, (CommandDTO<?>)object );
+ @Override
+ public Middle embeddedValue() {
+ return new SimpleMiddleEntity(embedded);
}
}
Propchange: felix/trunk/converter/persister/src/test/java/org/apache/felix/persister/test/objects/provider/SimpleTopEntity.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: felix/trunk/converter/pom.xml
URL: http://svn.apache.org/viewvc/felix/trunk/converter/pom.xml?rev=1804217&r1=1804216&r2=1804217&view=diff
==============================================================================
--- felix/trunk/converter/pom.xml (original)
+++ felix/trunk/converter/pom.xml Sun Aug 6 02:12:50 2017
@@ -41,5 +41,6 @@
<module>converter</module>
<module>serializer</module>
<module>schematizer</module>
+ <module>persister</module>
</modules>
</project>
Modified: felix/trunk/converter/schematizer/src/main/java/org/apache/felix/schematizer/impl/SchematizerImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/schematizer/src/main/java/org/apache/felix/schematizer/impl/SchematizerImpl.java?rev=1804217&r1=1804216&r2=1804217&view=diff
==============================================================================
--- felix/trunk/converter/schematizer/src/main/java/org/apache/felix/schematizer/impl/SchematizerImpl.java (original)
+++ felix/trunk/converter/schematizer/src/main/java/org/apache/felix/schematizer/impl/SchematizerImpl.java Sun Aug 6 02:12:50 2017
@@ -237,7 +237,7 @@ public class SchematizerImpl implements
node.add(childNodes);
}
}
- else if (asDTO(fieldClass)) {
+ else if (asDTO(fieldClass) || Util.isDTOType(fieldClass)) {
// newSchematizer.typeRules.put(path, rules);
// if (!rules.containsKey(path))
// newSchematizer.rule(path, path, fieldClass);
Modified: felix/trunk/converter/schematizer/src/main/java/org/apache/felix/schematizer/impl/Util.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/schematizer/src/main/java/org/apache/felix/schematizer/impl/Util.java?rev=1804217&r1=1804216&r2=1804217&view=diff
==============================================================================
--- felix/trunk/converter/schematizer/src/main/java/org/apache/felix/schematizer/impl/Util.java (original)
+++ felix/trunk/converter/schematizer/src/main/java/org/apache/felix/schematizer/impl/Util.java Sun Aug 6 02:12:50 2017
@@ -225,7 +225,7 @@ public class Util {
public static Map<String, NodeImpl> extractChildren(String path, Map<String, NodeImpl> allNodes) {
final Map<String, NodeImpl> children = new HashMap<>();
for (String key : allNodes.keySet()) {
- String newKey = key.replace(path, "");
+ String newKey = key.replaceFirst(path, "");
if (!newKey.substring(1).contains("/"))
children.put( newKey, allNodes.get(key));
}