VI. An example of intervention by the bishop of London in 1615.
XIV. Which plays could have been meant in 1637?
circumstances, controlled what we should call the copyright of his play."
The use of the term "copyright" within this context is infelicitous.
lasted as long as he lived if he did not sell it to another stationer.
the author did matter and exerted a marginal control over the copyright.
rights did accrue to them by the purchase of a manuscript of a play?
wardens had not yet been delivered was transferred to another stationer.
Chamberlain in 1619 and 1637 will be the subject of the next subchapter.
Chamberlain intervened in 1600: it is certainly "a very rash guess".
publishing history but with the rules governing the Stationers' Company.
corporeal value, that is, for the manuscript, the naked object of paper.
the text itself. What kind of "ownership" could this have been?
would not have been impressed by any request of the players.
written. As to why sales were so high in these particular years Sir E.K.
company] and never guilty of the last."
in being published in such savage and ragged ornaments."
might have sold to the actors at the same time."
legal restrictions proceeding from the sale to a company of players.
without legal protection against other companies staging the same play.
the license from the said company or the major part of them."
had to ask the consent of the company of players if he had "knowledge"
author but did not extend beyond to the publishing world.
was made between the shareholders of the Children of the King's Revels.
any right obstructs the understanding of .
they had received the company's consent.
characters, and for most of them neither prologue nor epilogue.
many of his contemporaries in these year - ..."
Indeed, about half of his plays were not published during his lifetime.
company. An author who had earned fame and profile, at last since 1598.
fellows seem not to have asked or urged him.
entry. It is not the Lord Chamberlain's, it is the under warden's.
urge the author, their fellow, to complain to the Stationers' Company.
And there still remains the mystery of the Sonnets.
and 1641 (Walter Devereux 3rd earl of Essex).
Ashley. The copy whereof is in the book of letters.
Register. All plays are licensed by the episcopal censors again.
letter of the Archbishop (then George Abbot) to the Lord Mayor in 1615.
authority over all matters "concerning printing and selling of books"
(Court Book C, p. 349).
right of another stationer in the same work or the opposition of the author.
others' goods without respect of Order or good government..."
the case on 7 August 1641 when the 3rd earl of Essex wrote his letter.
letters on the Civil War, the demand for plays was practically zero.
moment there was little danger of pirating by publishers.
present from the very beginning in the letters of the Lord Chamberlains.
Young Company wanted to withhold from printing.
the Concordance of Years which he is in hand with at his and your peril."
so material as to justify a separate copyright for Hopton's version.
annulation of the exclusive publisher's copyright would lead to anarchy.
practices were undermining their copyright system.
... make among themselves many unlawful & unreasonable ordinances..."
Psalms, on the one hand, on the other the Almanacs and Prognostications.
corporation had set up for the organisation of their trade.
This intervention was not about licensing but about by-laws.
the Revels and, as a consequence, of his superior the Lord Chamberlain.
principle who would have stood a chance in an equity court.
herein I bid you heartily farewell & rest..."
letter to the Lord Chamberlain Philip Herbert, earl of Montgomery.
Lordship's to the master and the wardens of the Stationers' Company."
Richard Meighen but to him and Seile jointly.
authority was also passed into the Act of 1637.
of 11 July 1637. But it was not.
the Lord Treasurer, a privy councillor, a judge, an ambassador.
so to proceed withal to printing..." .
invariably referred to an episcopal censor is not so sure though likely.
that of an episcopal censor as sufficient. To begin with their own.
Roger Wilbraham was master of the Court of Requests from 1593 to 1616.
obtained before the work was presented to the wardens for entrance.
lord Chamberlen of her maiesties house.
responsible for the defence of the country at sea and the Lord Chamberlain as officer responsible for the queen's safety, not for the printing of plays .
MARR, Sir JULIUS CAESAR... PERSEUS and ANDROMEDA, by GEORGE CHAPMAN...".
Orc [in the Greek myth the sea-monster whom Andromeda should marry].
war. Ancient Rome always served as mirror for contemporary history.
the first time authorized a book with the title A Catalogue of Honor .
shall be licensed by the Earle Marshall, or by his appointment."
condition that "more sufficient authority" be obtained.
for a French masque staged before Queen Henrietta Maria .
worth recording. Neither Essex's letter of 7 August 1641.
sufficed to elevate him into the rank of a precursor of Protestantism.
Spanish ambassadors were well aware of the instrumentalisation of plays.
office of Lord Chamberlain of the Royal Household from 1615 to 1641.
on. The company went to great lengths to make their satire specific.
special chair made for him to accomodate his fistula."
the King's men must have profited from the 3rd earl of Pembroke protection.
have opposed the marriage between Charles I and the Spanish infante.
into the activities of one faction on the Council against another.
another play belonging to their repertory.
most condemnatory depositions in the case laid before the Privy Council.
supply them to the company."
Herbert. Why not in 1619, 1637 or 1641?
position on the Council, while convicting them might help to weaken him."
politics of play of the Pembrokes which they sought to fill.
to fit the target of Pembroke's letter of May 1619 like a glove.
secondly because some of the quartos had been published in bad texts.
the press, could also invoke the authority of his superior.
directly with whom he seems to have otherwise been on good terms?
The same questions arise regarding the letter of his brother in 1637.
What happened with the plays of the latter company after June 1637?
Brome's contract was with the playhouse manager, not with the company."
plays the players would have feared to be surreptitiously printed.
had occurred in the composition of the authorship of their repertory.
beyond the control of the wardens of the London SC.
they did not care for the publication. What happened with these 9 plays?
rights to Colby. Okes, however, still remained the printer of the book.
authorized edition." (Papers of American Bibliographical Society).
claimed in Essex' letter of August 1641.
begins to appear as a mere pretext, a fiction. And that it probably was.
The same principle obtained in the case of a corporation of either type.
recognisances, obligations, etc., as had been made to his predecessor."
Somerset, Thomas Howard, earl of Suffolk, or George Carey, Lord Hunsdon.
then perhaps a reference to the predecessors.
wardens and assistants would not have been impressed by such a request.
June 1637, in August 1641?
need longer to conserve them.
to the episcopate with nothing left for the Master of the Revels.
the office after the new decree.
both watch him and hope to win him over to the cause of the Royalists.
Chamberlain would probably be short-lived.


text:
Scientists develop a new model for inferring density inhomogeneity in the solar corona
By Odisha Diary bureau On May 5, 2022
New Delhi :Scientists have developed a new theoretical model to quantify the inhomogeneity in density of solar corona generated by the turbulence in the electrically conducting, magnetized fluid present as plasma in it.
The solar corona is an extremely dynamic medium. It is well established from the last few decades that electrically conducting, magnetized fluid present as plasma which causes magnetohydrodynamic (MHD) wave-driven turbulence, plays an important role in the heating of the solar corona by millions of degrees.
The heating is a factor of a thousand times higher than the solar surface. The exact reason behind heating of the solar corona to such a high temperature is still an open question and is known as the 'coronal heating problem' in the solar physics community.
Turbulent motion in a fluid is characterized by chaotic changes in pressure and flow velocity. But, due to the extremely hot temperature in the solar corona, the material in the solar corona becomes like a soup of charged particles, which is called plasma. Propagation of the MHD waves in a plasma medium can cause turbulence. When the MHD-wave propagates through the medium, it carries energy, and the amount of energy depends on the density inhomogeneity of the medium.
Scientists from Aryabhatta Research Institute of Observational Sciences (ARIES), Nainital, an autonomous institute under the Department of Science & Technology, Government of India, have developed a new approach to estimate the amount of density inhomogeneity in the solar atmosphere, which can be quantified by the density filling factor (fraction of the volume occupied by the overdense regions with respect to the entire volume of the medium). This method involves numerical simulation.
This model, Developed by Dr. Samrat Sen, a post-doctoral researcher at KU Leuven, Belgium, and Dr. Vaibhav Pant, published in The Astrophysical Journal, talks about two different methods to calculate the density filling factor. One of the methods involves calculation of the density filling factor from the area measurement obtained from the simulated data. Whereas, in the second method, forward modelling (use of specific model to produce an outcome according to the user interests) is used for the spectroscopic measurement to estimate the density filling factor.
The researchers have found that the theoretically estimated values are in good agreement with the observed values in the solar corona. According to the study, MHD wave-driven turbulence increases the filling factor of the overdense structures, and the medium becomes more density homogeneous.
'Madame Tussauds Is Back In a New Location'; will reopen at DLF Mall of India, Noida as Madame Tussauds India
With the Second Highest Literacy Levels in The Country, Mizoram is a Truly Modern State Ready to Take Off for Higher Achievements: President Ram Nath Kovind

redpajama_set_name: RedPajamaCommonCrawl


The number of oil rigs actively operative within the U.S. rose for the fourth time in 5 weeks by eleven rigs, currently totaling 341, in step with Baker Hughes. At this point last July, drillers were running 640 rigs.
That demand can continue to grow and hit ten million barrels per day or higher. There is over enough inventory to satisfy driver demands.
The currentl demand for gasoline is 9.8 million barrels per day, the highest since August 2007.
In the fourth quarter the costs might drop as client demand dwindles.


She has been the recipient of numerous awards including a New School of Social Research Faculty Development Grant, an artist grant from the Penny McCall Foundation, a Guggenheim Fellowship,a faculty research grant from the Center for Asian American Studies at UCLA, Architectural Foundation of America, Art in Public Places Award, and a C.O.L.A. Individual Artist's Grant from Los Angeles Cultural Affairs.
Good interview. It was interesting to hear Meg "feeling" her way toward new ideas, something one seldom openly hears from artists nowadays (who are often expected to have one solid idea and not change). The discussion concerning museums for grown-ups, "event" art, and so on was fabulous. It hit the nail on the head.
Oh yeah — and another idea came to me that would be fun for Meg to pursue as an extension of her "quantitative" book stuff.
Often joked about in literature studies is the amount of secondary literature produced about someone in comparsion to what they themselves actually produced. It could be expressed in algebraic or calculus terms. For instance Steven King has written shitloads, but there are only one or two books about his production. On the other hand, James Joyce wrote only a handful of things and you could fill entire libraries with the books about his books. But it is not simply a case of trash lit against genius or whatever, it is also strange to note the difference between prudtion and discussion thereof in various "high lit" folks. Shakespeare and Dickenson have been beated to academic death, etc. And the books about the books about his books. Just an entertaining thought bouncing off Meg's art.
Interesting to see Meg featured here. She recently held solo shows throughout the New Zealand art spaces (including ARTSPACE) earlier this year.


text:
Augustine Mrema
Former Minister of Home Affairs and leading opposition Presidential candidate, Augustine Mrema, died in August at the age of 77.
Mrema played a prominent role in national politics for several decades. As Minister of the Interior (Home Affairs) under President Ali Hassan Mwinyi from 1990 to 1994, he campaigned against corruption, waste and tax evasion in a manner that shared much in common with the later efforts of President Magufuli. This eventually led Mrema into disagreement with the President, and he left the ruling party, CCM, six months before the general election in 1995 in order to join the new opposition party, NCCR Mageuzi, and run as the party's presidential candidate. He ended up losing the election to Benjamin Mkapa of CCM, but winning a greater percentage of the vote (27.8%) than any other opposition candidate until Edward Lowassa in 2015.
During the campaign, Mrema spoke on corruption within CCM, building on his previous attacks while serving as a cabinet minister. He used anti-foreigner rhetoric and castigated the government for siding with foreign investors over citizens, and branded himself as a candidate of the "Walalahoi" (poor and downtrodden), rhetoric that was again echoed later by President John Magufuli.
Through this, Mrema managed to pull massive crowds while campaigning in 1995, appealing to urban youth and those in the informal sector. It is said that his popularity scared Mwalimu Julius Nyerere who had publicly backed Mkapa. Nyerere warned that Mrema was not fit to be President, and that the country would be "thrown into the dogs" with Mrema in the role.
Prior to entering formal politics, Mrema had taught civics and served as a (Bulgarian-trained) intelligence officer. His political career started in 1985 when he tried to run for MP in his home district of Kilimanjaro. His candidacy was blocked by the High Court, and in 1987 he was officially announced as the winner after a lengthy appeals process. He retained his seat in 1990 without much difficulty.
He ran again for President in 2000 (representing NCCR) and 2005 (representing TLP), but found that voters had either decided to stick with CCM or switch their allegiances to other opposition parties, primarily CUF and Chadema. He received just 8% of the vote in 2000 and 1% in 2005. In 2010, he contested the seat of Vunjo, representing TLP, and won, serving as the MP for a single five-year term.
President Samia Suluhu Hassan was among those who mourned Mrema. "I will remember him for his contribution to political reforms, patriotism and his love for Tanzanians. I extend my heartfelt condolences to his family and all TLP members. May God rest his soul in eternal peace," she said in a tweet.
ACT-Wazalendo party leader Zitto Kabwe said Mrema had left behind a living legacy of fighting vices, adding that this was what made it impossible for him to continue to remain in CCM. "He significantly contributed to Opposition politics during the formative years of political pluralism. We have a lot to learn from him," he said.
Li Jinglan with Mwalimu Nyerere in Mbeya 1977
Li Jinglan, popularly known as "Mama Li", Chinese interpreter to President Julius Nyerere, has died at a Dar es Salaam hospital at the age of 75.
Mama Li made many friends in Tanzania. She had been among the Chinese nationals who were brought to Tanzania in 1975 to offer their expertise during the implementation of the Tanzania-Zambia Railway (Tazara) project. At this point, already she was an expert in Kiswahili language, working as a producer of Kiswahili programs in Radio Beijing, China. She later became a naturalised citizen of Tanzania.
"I was taken to Mbeya as an interpreter of Chinese nationals who were teaching Tanzanians how to drive trains," she explained. She also helped in training locals on effective management of train stations.
She stayed in Mbeya for around a year before she was shifted to Dar es Salaam to start working on other projects being run by the Chinese government in Tanzania after the completion of Tazara. This brought her into regular contact with President Nyerere, and later President Ali Hassan Mwinyi.
Mama Li made her name in Tanzania as someone who was not ready to be oppressed or to tolerate other people being oppressed, at the same time remained humble. She used to travel on public transport, and didn't hesitate to scold a daladala conductor if she saw them preventing school children from boarding the buses.
Since 2003, Mama Li found herself in deep frustration in a court battle that dragged on for almost two decades, remaining unresolved at the time of her death. She was evicted from her National Housing Corporation (NHC) house in Dar es Salaam by the NHC. After ten years of fighting the case, the High Court declared her the legal tenant of the property, but the NHC had never relented and on twenty separate occasions convinced the High Court to stay execution of the court order. Over 19 years, her case was heard by a total of 51 different judges, among them ten from the High Court and 41 others of the Court of Appeal, without ever achieving final resolution.
British conservationist, Tony Fitzjohn, OBE, a driving force in the rescue and rehabilitation of the Mkomazi Game Reserve in Tanzania, died in May at the age of 76 of a brain tumour.
Having worked with George Adamson at the Kora national reserve in Kenya for 18 years, in 1989 Tony was invited by the government of Tanzania to rehabilitate Mkomazi Game Reserve, an area covering 1,350 square miles. Under Tony's leadership, the previously neglected reserve was transformed into a much-heralded conservation success in East Africa (though not without its critics), resulting in its designation as a National Park in 2006.
For many conservationists, Mkomazi is a success story. A reserve which was threatened by people and grazing has been restored to good health. The compounds for African wild dog, and the extensive, patrolled sanctuary for the black rhinoceros (which are breeding) have giving the reserve international recognition. For Mkomazi's critics, however, this is not the whole story. They highlight the eviction, pre-dating Tony's time there, of former residents who had long-held associations with the land, pointing out that thousands of herders were forced off the land with inadequate compensation for a few and for most none.
When he arrived at Mkomazi, the challenge facing Tony required determination, ingenuity and myriad skills – wildlife management, engineering, mechanics, Swahili and the diplomatic skills to negotiate the bureaucracy. Tony had all this, as well as a commitment to constructing and repairing schools, helping with medical dispensaries and maintaining positive relations with the communities in the villages in the vicinity of the reserve.
In recognition of his service to wildlife conservation, Fitzjohn was appointed an Officer of the Order of the British Empire in 2006.
This entry was posted in Issue 133, Obituaries by editor. Bookmark the permalink.


Pepperl+Fuchs is a leading developer and manufacturer of electronic sensors and components for the global automation market. Continuous innovation, enduring quality, and steady growth have been the foundation of our success for more than 70 years.
Danteco supplies 22,500-litre ISO 20' bulk cement tank containers. Our cement tank container is separated for four purposes: tank containers for cement storage, short-sea, deep-sea shipping and rail transportation.
; IEC 60092-204-1987 204: Electrical installations in ships.
Iso Hexane trade offers directory and Iso Hexane business offers list. Trade leads from Iso Hexane Suppliers and Iso Hexane buyers provided by .
; IEC 60674-1-1980 1: Specifications for plastic films for electrical purposes.
Bunker fuel or bunker crude is technically any type of fuel oil used aboard vessels.It gets its name from the tanks on ships and in ports that it is stored in; in the early days of steam they were coal bunkers but now they are bunker fuel tanks.
ISO / IEC 17025 Nigerian Laboratory | Mudiame. Mudiame International Limited is an ISO 17025 accredited Nigerian based Testing, Calibration and Inspection Company offering services to the Oil, Gas and Allied Industries.Our vision to be the leader in Laboratory Testing Services laid us to a full well equipped One Stop Laboratory.
Plastics materials classifications and applications on .za. Plastics Classification. Plastics are usually classified by their chemical structure of the polymer's backbone and side chains.
Inspectorate provides a fully integrated global network for Marine Fuel Services. Contact us to speak with our Marine Fuel Services experts today.


text:
Desert Guitars
Strunz & Farah is a virtuoso guitar duo with an eclectic sound that could be described as a cross between world fusion and flamenco. Jorge Strunz, born in Costa Rica, and Ardeshir Farah, hailing from Iran, met in the United States in 1979. Having both played guitar professionally since their early teens, they soon teamed up and released their first album, the self-produced Mosaico, in 1980. Since then they have played on numerous recordings together, releasing several albums as a duo and collabo...
Strunz & Farah is a virtuoso guitar duo with an eclectic sound that could be described as a cross between world fusion and flamenco. Jorge Strunz, born in Costa Rica, and Ardeshir Farah, hailing from Iran, met in the United States in 1979. Having both played guitar professionally since their early teens, they soon teamed up and released their first album, the self-produced Mosaico, in 1980. Since then they have played on numerous recordings together, releasing several albums as a duo and collaborating with the likes of Rubén Blades and L. Subramaniam. Jorge Strunz was once recommended by friend Paco de Lucía as a replacement for Al Di Meola in The Guitar Trio.
More Biographical detail on the Strunz and Farah website Read more on Last.fm. User-contributed text is available under the Creative Commons By-SA License; additional terms may apply.
Caspian Night
C, Fm, C#, Cm, A#, F, A#m, F#, C#m, A, G#, Dm, D, E, Gm, D#, G
Learn to play guitar, bass or keyboard


text:
"I wanted to write songs unlike anything anybody ever heard …"
June 5, 2017 By Pete Trumbore
I've never been a Bob Dylan fan. I always thought he got more credit than he deserved early in his career, making his name by stealing and performing other people's work. (Fans may differ in their assessment of Dylan's early years.)
His close association with the Baby Boomers – he's been labeled the spokesman for their generation for as long as he's been around – leaves a sour taste in my mouth given how readily that already privileged group traded their youthful idealism for selfish comfort and materialism.
Dylan's own career arc, from leftie-folkie protest singer to corporate shill, licensing his music to the likes of Apple, Pepsi, Google, Kohl's, Chrysler and other carmakers, and Victoria's Secret, to name but a handful, perfectly mirrors his generation's transformation.
And I cannot stand the man's singing voice.
But … Dylan could write songs. Transcendent songs. That's why he was awarded the 2016 Nobel Prize for Literature, in recognition of the beauty, power, and artistry behind his lyricism. As the Nobel Committee put it, the prize is "for having created new poetic expressions within the great American song tradition."
Yesterday, Dylan's Nobel Lecture was released. It provides fascinating insight into how he understands his influences and his acceptance of the idea that his lyrics in fact constitute literature after all. It also shows off the poetic expression for which he is rightly honored.
Here's a bit of it:
By listening to all the early folk artists and singing the songs yourself, you pick up the vernacular. You internalize it. You sing it in the ragtime blues, work songs, Georgia sea shanties, Appalachian ballads and cowboy songs. You hear all the finer points, and you learn the details.
You know what it's all about. Takin' the pistol out and puttin' it back in your pocket. Whippin' your way through traffic, talkin' in the dark. You know that Stagger Lee was a bad man and that Frankie was a good girl. You know that Washington is a bourgeois town and you've heard the deep-pitched voice of John the Revelator and you saw the Titanic sink in a boggy creek. And you're pals with the wild Irish rover and the wild colonial boy. You heard the muffled drums and the fifes that played lowly. You've seen the lusty Lord Donald stick a knife in his wife, and a lot of your comrades have been wrapped in white linen.
I had all the vernacular all down. I knew the rhetoric. None of it went over my head – the devices, the techniques, the secrets, the mysteries – and I knew all the deserted roads that it traveled on, too. I could make it all connect and move with the current of the day. When I started writing my own songs, the folk lingo was the only vocabulary that I knew, and I used it.
But I had something else as well. I had principals and sensibilities and an informed view of the world. And I had had that for a while. Learned it all in grammar school. Don Quixote, Ivanhoe, Robinson Crusoe, Gulliver's Travels, Tale of Two Cities, all the rest – typical grammar school reading that gave you a way of looking at life, an understanding of human nature, and a standard to measure things by. I took all that with me when I started composing lyrics. And the themes from those books worked their way into many of my songs, either knowingly or unintentionally. I wanted to write songs unlike anything anybody ever heard, and these themes were fundamental.
The entire lecture is worth reading. Or better yet, listen to Dylan read it himself.
Filed Under: Diversions, Uncategorized Tagged With: 2016 Nobel Prize in Literature, Bob Dylan


text:
Home » Beauty and Fashion » Meghan Markle's hidden wedding dress and veil details no one saw
Meghan Markle's hidden wedding dress and veil details no one saw
Meghan Markle wore a bespoke Givenchy wedding dress, designed by British fashion designer Clare Waight Keller, for her wedding to Prince Harry in Mary 2018. While her dress was simple in design, her veil was intricately embroidered with flowers representing the countries of the Commonwealth, and in both her dress and veil, Meghan had added two personal touches.
Meghan took part in the ITV series Queen of the World, where she discussed her wedding veil and its connection to the Commonwealth.
During the clip, Meghan revealed she hid a couple of personal mementoes in her dress and veil.
Zookeeper dies after tiger savages his arm in horrifying video after he stuck his hand through fence | The Sun
A look at Crown Princess Mary of Denmarks £30,000 engagement ring and its patriotic theme
There is the age-old tradition, for brides to include "something old, something new, something borrowed, something blue" in their wedding outfits.
For Meghan, her "something blue" was a reminder of her and Prince Harry's very first date.
She explained: "Somewhere in here there's a piece of blue fabric that's stitched inside – it was my something blue. It's fabric from the dress that I wore on our first date."
It's recently been revealed, Meghan and Harry first met at Soho House's Dean Street Townhouse, London, in the summer of 2016 after being set up by a mutual friend after Harry saw Meghan in one of their Instagram posts.
The first meeting is said to have lasted three hours with Harry enjoying a beer and Meghan a martini.
Perhaps the "something new" part was represented by what she "snuck" into her veil.
Meghan chose a California poppy "which has nothing to do with the Commonwealth", but represented the place where she was born and raised.
Meghan's veil was 16-foot and made from silk tulle, it featured 53 flowers representing the 53 Commonwealth countries, and the elaborate floral decoration on the veil took a staggering 500 hours to embroider.
She had "two or three" meetings with Claire, looking at sketches and discussing ideas to make the flowers come to life.
"After those, I trusted her implicitly, and I didn't really see it until the morning of," she added.
Meghan's tiara, the Queen Mary tiara, was borrowed from the Royal Family's jewellery collection and could've been her "something old" and "something borrowed" element.
The Duchess of Sussex's headpiece was an Art Deco-style diamond encrusted band that, in Meghan's own words, appealed to her because it was "incredibly timeless but still [felt] modern".
The tiara is comprised of a flexible band of 11 different sections, each covered in large and small diamonds.
The diamond tiara's main focal point is a detachable brooch with a centre stone surrounded by nine smaller diamonds.
Traditionally, the tiara has been spotted with a sapphire as the centre stone, but Meghan opted to swap the blue jewel out for a diamond instead – which was also lent to her by Queen Elizabeth II.
The tiara Meghan wore, was apparently not the one she initially chose. Rumours suggest Meghan's first choice was the Greville Emerald Kokoshnik tiara, also known as the Russian emerald headdress, that Princess Eugenie wore for her wedding later the same year.
Megan Thee Stallion Wins the Grammys, From Custom Couture to This $98 Afterparty Dress
The New Post Malone x Arnette Collab Will Have You Made In The Shade
Couple's supermarket wedding cake goes horribly wrong… but people reckon it serves them right for being so tight
Gracie McGraw Rocks Short Shorts & Denim Shirt As She Excitedly Attends A Baseball Game — Pics
Experts share how to make chocolate brownies at home and you only need three ingredients
Ari Aster Shares First Poster of Upcoming Film 'Beau Is Afraid' Starring Joaquin Phoenix
'Spider-Man: Into the Spider-Verse's Rodney Rothman Enters Broadcast Animation Overall Deal With Fox
December 14, 2022 Beauty and Fashion Comments Off on Meghan Markle's hidden wedding dress and veil details no one saw


text:
Q: Redirect Incoming HTTPS Url to My Site's HTTPS Version My client has a site http://www.sitename.com and also has a secure https://www.sitename version. For Google Analytics traffic reasons, he needs to make sure that any users coming from an https url be redirected to the secure version and NOT the insecure url.
What would be the proper way to do this via .htaccess? I searched here and online in general couldn't find a specific answer.

A: You will have to force https for achieving your use case. Add this to your htaccess file.
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

redpajama_set_name: RedPajamaStackExchange


A host of upsets and some brotherly results were featured on Sunday, Day 2 at the 68th USTA Florida "Bobby Curtis" Junior State Doubles Championships as the majority of age divisions were drawn down to the finals.
The "Bobby Doubles" is held Sept. 17-19, 2016, at Sanlando Park in Altamonte Springs (18s-16s age divisions), and at the Florida Tennis Center in Daytona Beach (14s-12s divisions).
The Boys' 18s doubles quarters was an all-unseeded affair, and the resulting all-unseeded final will see last year's Boys' 16s winners, twins Harry and Grey Cacciatore (Gainesville), against Daniel Gale (Boca Raton) and Antonio Mora (Coconut Grove). Mora is also into the Mixed 18s final.
Another pair of brothers, Max and Martin Damm (Bradenton), sons of former doubles Grand Slam winner Martin Damm, made it all the way to the Boy's 16s semifinals as an unseeded pair before being edged 10-7 in the fifth set by David Burns (Fleming Island) and Daniel Labrador (Tampa). In the Boys' 16s final, the No. 5-seeded Burns-Labrador will face the unseeded pair of Juan Bianchi (Ocoee) and David Gorshein (Longwood).
In the Girls' 18s draw the No. 1, 2, 3 and 5 seeds went through to the quarters, and the Girls' 16s final will see No. 6 seeds Ayshe Can (Weston) and Melanie Dlugolecki (Hallandale Beach) against the unseeded pair of Maria Rizzolo (Jupiter) and Sofia Rojas (Sarasota) after the No. 1, 2 and 4 seeds exited in the quarterfinals. Dlugolecki is also into the Mixed 16s final.
The seeds held more firmly in the lower-aged divisions, as the Top 4 seeds advanced to the Girls' 14s doubles semis, and the Top 2 seeds to the final — top-seeded Paige Herremans (Orlando)/Daniela Porges (Plantation) vs. Anna Babayan (Bradenton)/Sophia Fornaris (Pinecrest). The 14s Jack Anthrop (Orlando) and Babayan are into both their doubles and mixed finals respectively.
The Girls' 12s final will also feature a No. 1 vs No. 2 — top-seeded Brooke Dugarte (Miami)/Violeta Martinez (Port Saint Lucie) vs. Jessica Buck (Tampa)/Lara Smejkal (Boca Raton). Dugarte is also into the Mixed 12s final.
Former "Bobby Curtis" State Doubles winners include current two-time NCAA champ Danielle Collins (Girls' 18s-2010, Mixed 12s-2005), former Florida State University stars Terrance and Terrell Whitehurst (Boys' 18s-2012), and at the pro level former WTA doubles world No. 1-ranked and Wimbledon winner Corina Morariu (Girls' 16s-1992, Girls' 14s-1991) and former ATP player Wayne Odesnik (Boys' 14s-1999).
Former world No. 1s Chris Evert, Andy Roddick and Jim Courier are among the players that have raised trophies in singles at the USTA Florida "Bobby Curtis" Junior State Singles Championships, previously known as the USTA Florida Jr. State Closed. Florida's top event was renamed to honor the legendary Florida junior tennis organizer Bobby Curtis in 2012.
Results will be posted daily in the news section on the front of the USTA Florida website at www.ustaflorida.com.
For complete age 12s and 14s draws, results and seedings, CLICK HERE.
For complete 16s and 18s draws, results and seedings, CLICK HERE.


An awesome coupon from worldgallery.co.uk that save you a lot: Sign up at WorldGallery for news offers and more.
Find great products at great prices using Inglot best coupon: Specials as low as £6.
Current deal: Up to 60% off sale. Grab this fantastic opportunity to get your favourite items at rocksandco.com.
Get the great bargain to discover an amazing discounted price at styleheist.co.uk when you make purchases: Up to 67% off sale items.
A wide range of goods at South Moon Under: Free shipping on all orders over $100.
A fabulous deal from carbon2cobalt.com that you don't wanna miss: Women's Tees from $39.
We provide our dear users with 0 Discount codes, 0 deals and other offers to let you save time and money searching the Sky voucher code on the Internet. Enjoy amazing discounts, free delivery offers, free gifts, etc., when you shop at Sky!
By finding all the latest Sky voucher & coupon codes to give you the best deals at online store Sky. Our deal experts scour the web discovering all the discounts working at stonewallkitchen.com to save you tons of money. We also offer detailed shopping tips to let you successfully utiliser the Sky voucher code. Please use the Sky coupon code for free before checkout.
With our Sky promo code, you'll get bigger discounts no matter where you are or how you shop. Great deals are waiting for you. Click now, don't regret it. Don't forget to use your Sky promo code to get exclusive offers at checkout.
Search for exclusive wonderful Sky Voucher Codes which you can enjoy up to 15% off when you shop online at Sky. Get the latest Sky Voucher Codes now and add one of our 3 discount codes to your order.


More than 220 people who work with children and young people have recently attended presentations to help raise awareness of child sexual exploitation (CSE), in an initiative aimed at safeguarding more of the county's children.
The events are being organised through the Northamptonshire Safeguarding Children Board (NSCB) as a joint initiative between police, county and district councils.
At the free events, the audience learn how to spot the signs of CSE, how to report concerns and how communities have an important part to play in preventing it happening to local children.


text:
McDavid's Quest for the Art Ross
February 18, 2017 February 17, 2017 by Marcy Di Michele
Connor McDavid is fortunate that Sidney Crosby missed the first six games of the season. It likely secured a scoring title for the Edmonton Oilers captain. Make no mistake, McDavid is earning his keep atop the NHL leaderboard, but Crosby leads the league in points per game by a country mile, and mathematically he would probably be in first place had he played the same amount of games as McDavid.
But you need luck sometimes, and Connor continues to remain a step ahead in the race. However, the Penguins captain isn't the only guy he has to fight off to win his first Art Ross Trophy.
We already know about Crosby, who just notched his 1,000th NHL point. It's quite a feat considering he's only played in 757 games. In fact, he became the 12th fastest player in NHL history to reach the milestone. He's going to be in the conversation for the Art Ross despite the games missed, though they put him at a disadvantage.
History. #Crosby1000 pic.twitter.com/hz7kDO8p1p
— Pittsburgh Penguins (@penguins) February 17, 2017
Crosby and McDavid aren't the only great players in this race, and you could argue that there are at least eight different players in contention. The interesting thing is that Crosby's teammate Evgeni Malkin might also have been the leader had he not missed time to injury. Malkin has 24 goals and 58 points in just 49 games, and is playing like a man possessed. Don't be surprised if he's neck and neck with McDavid at the end of the season.
Brent Burns
When Joe Thornton called Brent Burns the best player in the world we all chuckled. It was a nice sentiment from a teammate, but obviously a little far-fetched, right? Well don't look now, but Burns (a defenceman no less), is sitting in third place with 61 points. He has 25 goals to go with it. Burns has been steadily rising to one of the best d-men in the league for a few years now, but he's now emerging as one of the better players.
Brent Burns is the best player in the world right now, easily. Sidney who????
— Josh ? (@joshisasharkiii) February 17, 2017
Better than Crosby? Probably not. But the league's best defenceman? You could make the case. For years, when it came to Norris Trophy voting, voters looked at point totals when evaluating which blueliner was the best, to the dismay of many puritans of the game. Some believe the most important evaluation of a defenceman is his play in the defensive zone, and without the puck.
There's no problem there with Burns. He's a +20 on the season, he plays upwards of 25 minutes on most nights, and he's always on the ice in important situations. He's garnering Hart Trophy talk, especially considering his Sharks are first in the Pacific Division.
It's hard to get a lot of attention when you play on the same team as Alex Ovechkin. But Nicklas Backstrom has quietly been one of the best centermen in the league for years now. And he's not a product of Ovechkin. Wingers normally don't make their centers better. It's usually the other way around. Ovechkin is a fantastic goal scorer, but he isn't the kind of player who elevates all the other guys on the ice.
Backstrom on the other hand is a superb play-maker, he sees the ice extremely well and makes great decisions. He may be the most underrated superstar in the league. He's not a one-year wonder either. Backstrom has scored 70 points or more the past three seasons running. He also finished fourth in league scoring back in the 2009-10 season with a whopping 101 points.
Nicklas Backstrom with 60 points in 57 GP this year for WSH. Last year: 70 points in 75 games. Amazing career, 702 pts in 708 career games.
— Mike Murphy ? (@DigDeepBSB) February 12, 2017
Unfortunately for Brad Marchand, his self-imposed reputation for being a dirty player has clouded the fact that he's actually quite talented. He has a nose for the net (no pun intended), he's fast, he's shifty and he comes through in the clutch. Marchand finished last season with 61 points, and will easily beat that this year.
His career high in goals (37) came last season. He now sits at 24, and has a good chance to hit the 30-goal plateau for just the second time in his career. If he would quit all the nasty hits and just play hockey, he would garner a lot more respect for his skill. But it's hard to separate the two, especially with some of his dirty work this season.
McDavid Remains a Step Ahead
You could make the point that the scoring title belongs to McDavid until it doesn't. He's been leading the league in points for most of the season, and every time someone else gets close, he pulls away.
Think @cmcdavid97 knew Crosby took over the scoring lead earlier tonight?
'cause he just took it back. pic.twitter.com/k3HCWQI3XV
— NHL (@NHL) February 17, 2017
If McDavid can fend off the competition and secure his first Art Ross Trophy, he would become the just the second Oiler in franchise history to win the title. Wayne Gretzky (obviously) is the other. He won the Art Ross a record 10 times, including seven years in a row from 1980-1987. Ironically, it was a Pittsburgh Penguin (Mario Lemieux) who ended his streak.
(Charles LeClaire-USA TODAY Sports)
Considering all the greats that have suited up for the Oilers over the years, it's surprising that only Gretzky has managed to win an Art Ross. It would put the young McDavid in exclusive company. Back in the summer, the Hockey News predicted that McDavid would win the scoring title, and so far they're right. They had him finishing with 96 points, one ahead of Crosby.
It could pan out that way, because despite the quality of the competition, McDavid continues to rack up the points and stay ahead of the pack. Winning an individual award is never the end-goal. Winning the Stanley Cup is all that matters. But every player wants to be the best, and a scoring title in his second season would be step one on the road to what will undoubtedly be a remarkable career.
Marcy Di Michele
Marcy, a former hockey player, is a hockey correspondent on CTV News and TSN radio. She began her career as a Sports Journalist in 2009 and has been part of The Hockey Writers since 2010, where she is currently a senior writer and editor.
Categories Edmonton Oilers Tags Brad Marchand, Brent Burns, Connor McDavid, Sidney Crosby, Top Story


text:
package org.apache.avro.reflect;

import static org.junit.Assert.*;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.lang.reflect.Array;
import java.lang.reflect.Type;
import java.nio.ByteBuffer;
import java.util.*;

import org.apache.avro.*;
import org.apache.avro.Schema.Field;
import org.apache.avro.generic.GenericData;
import org.apache.avro.io.Decoder;
import org.apache.avro.io.DecoderFactory;
import org.apache.avro.io.Encoder;
import org.apache.avro.io.EncoderFactory;
import org.apache.avro.reflect.TestReflect.SampleRecord.AnotherSampleRecord;
import org.apache.avro.util.Utf8;

import org.junit.Test;

public class TestReflect {

  EncoderFactory factory = new EncoderFactory();

  // test primitive type inference
  @Test public void testVoid() {
    check(Void.TYPE, "\"null\"");
    check(Void.class, "\"null\"");
  }

  @Test public void testBoolean() {
    check(Boolean.TYPE, "\"boolean\"");
    check(Boolean.class, "\"boolean\"");
  }

  @Test public void testInt() {
    check(Integer.TYPE, "\"int\"");
    check(Integer.class, "\"int\"");
  }

  @Test public void testByte() {
    check(Byte.TYPE, "{\"type\":\"int\",\"java-class\":\"java.lang.Byte\"}");
    check(Byte.class, "{\"type\":\"int\",\"java-class\":\"java.lang.Byte\"}");
  }

  @Test public void testShort() {
    check(Short.TYPE, "{\"type\":\"int\",\"java-class\":\"java.lang.Short\"}");
    check(Short.class, "{\"type\":\"int\",\"java-class\":\"java.lang.Short\"}");
  }

  @Test public void testChar() {
    check(Character.TYPE, "{\"type\":\"int\",\"java-class\":\"java.lang.Character\"}");
    check(Character.class, "{\"type\":\"int\",\"java-class\":\"java.lang.Character\"}");
  }

  @Test public void testLong() {
    check(Long.TYPE, "\"long\"");
    check(Long.class, "\"long\"");
  }

  @Test public void testFloat() {
    check(Float.TYPE, "\"float\"");
    check(Float.class, "\"float\"");
  }

  @Test public void testDouble() {
    check(Double.TYPE, "\"double\"");
    check(Double.class, "\"double\"");
  }

  @Test public void testString() {
    check("Foo", "\"string\"");
  }

  @Test public void testBytes() {
    check(ByteBuffer.allocate(0), "\"bytes\"");
    check(new byte[0], "{\"type\":\"bytes\",\"java-class\":\"[B\"}");
  }

  @Test public void testUnionWithCollection() {
    Schema s = new Schema.Parser().parse
      ("[\"null\", {\"type\":\"array\",\"items\":\"float\"}]");
    GenericData data = ReflectData.get();
    assertEquals(1, data.resolveUnion(s, new ArrayList<Float>()));
  }

  @Test public void testUnionWithMap() {
    Schema s = new Schema.Parser().parse
      ("[\"null\", {\"type\":\"map\",\"values\":\"float\"}]");
    GenericData data = ReflectData.get();
    assertEquals(1, data.resolveUnion(s, new HashMap<String,Float>()));
  }

  @Test public void testUnionWithMapWithUtf8Keys() {
    Schema s = new Schema.Parser().parse
      ("[\"null\", {\"type\":\"map\",\"values\":\"float\"}]");
    GenericData data = ReflectData.get();
    HashMap<Utf8,Float> map = new HashMap<Utf8,Float>();
    map.put(new Utf8("foo"), 1.0f);
    assertEquals(1, data.resolveUnion(s, map));
  }

  @Test public void testUnionWithFixed() {
    Schema s = new Schema.Parser().parse
        ("[\"null\", {\"type\":\"fixed\",\"name\":\"f\",\"size\":1}]");
    Schema f = new Schema.Parser().parse("{\"type\":\"fixed\",\"name\":\"f\",\"size\":1}");
    GenericData data = ReflectData.get();
    assertEquals(1, data.resolveUnion(s, new GenericData.Fixed(f)));
  }

  @Test public void testUnionWithEnum() {
    Schema s = new Schema.Parser().parse
        ("[\"null\", {\"type\":\"enum\",\"name\":\"E\",\"namespace\":" +
            "\"org.apache.avro.reflect.TestReflect\",\"symbols\":[\"A\",\"B\"]}]");
    GenericData data = ReflectData.get();
    assertEquals(1, data.resolveUnion(s, E.A));
  }

  @Test public void testUnionWithBytes() {
    Schema s = new Schema.Parser().parse ("[\"null\", \"bytes\"]");
    GenericData data = ReflectData.get();
    assertEquals(1, data.resolveUnion(s, ByteBuffer.wrap(new byte[]{1})));
  }

  // test map, array and list type inference
  public static class R1 {
    private Map<String,String> mapField = new HashMap<>();
    private String[] arrayField = new String[] { "foo" };
    private List<String> listField = new ArrayList<>();

    {
      mapField.put("foo", "bar");
      listField.add("foo");
    }

    @Override
    public boolean equals(Object o) {
      if (!(o instanceof R1)) return false;
      R1 that = (R1)o;
      return mapField.equals(that.mapField)
        && Arrays.equals(this.arrayField, that.arrayField)
        &&  listField.equals(that.listField);
    }
  }

  @Test public void testMap() throws Exception {
    check(R1.class.getDeclaredField("mapField").getGenericType(),
          "{\"type\":\"map\",\"values\":\"string\"}");
  }

  @Test public void testArray() throws Exception {
    check(R1.class.getDeclaredField("arrayField").getGenericType(),
          "{\"type\":\"array\",\"items\":\"string\",\"java-class\":\"[Ljava.lang.String;\"}");
  }
  @Test public void testList() throws Exception {
    check(R1.class.getDeclaredField("listField").getGenericType(),
          "{\"type\":\"array\",\"items\":\"string\""
          +",\"java-class\":\"java.util.List\"}");
  }

  @Test public void testR1() throws Exception {
    checkReadWrite(new R1());
  }

  // test record, array and list i/o
  public static class R2 {
    private String[] arrayField;
    private Collection<String> collectionField;

    @Override
    public boolean equals(Object o) {
      if (!(o instanceof R2)) return false;
      R2 that = (R2)o;
      return Arrays.equals(this.arrayField, that.arrayField)
        &&  collectionField.equals(that.collectionField);
    }
  }

  @Test public void testR2() throws Exception {
    R2 r2 = new R2();
    r2.arrayField = new String[] {"foo"};
    r2.collectionField = new ArrayList<>();
    r2.collectionField.add("foo");
    checkReadWrite(r2);
  }

  // test array i/o of unboxed type
  public static class R3 {
    private int[] intArray;

    @Override
    public boolean equals(Object o) {
      if (!(o instanceof R3)) return false;
      R3 that = (R3)o;
      return Arrays.equals(this.intArray, that.intArray);
    }
  }

  @Test public void testR3() throws Exception {
    R3 r3 = new R3();
    r3.intArray = new int[] {1};
    checkReadWrite(r3);
  }

  // test inherited fields & short datatype
  public static class R4 {
    public short value;
    public short[] shorts;
    public byte b;
    public char c;

    @Override
    public boolean equals(Object o) {
      if (!(o instanceof R4)) return false;
      R4 that = (R4)o;
      return this.value == that.value
        && Arrays.equals(this.shorts, that.shorts)
        && this.b == that.b
        && this.c == that.c;
    }
  }

  public static class R5 extends R4 {}

  @Test public void testR5() throws Exception {
    R5 r5 = new R5();
    r5.value = 1;
    r5.shorts = new short[] {3,255,256,Short.MAX_VALUE,Short.MIN_VALUE};
    r5.b = 99;
    r5.c = 'a';
    checkReadWrite(r5);
  }

  // test union annotation on a class
  @Union({R7.class, R8.class})
  public static class R6 {}

  public static class R7 extends R6 {
    public int value;
    @Override
    public boolean equals(Object o) {
      if (!(o instanceof R7)) return false;
      return this.value == ((R7)o).value;
    }
  }
  public static class R8 extends R6 {
    public float value;
    @Override
    public boolean equals(Object o) {
      if (!(o instanceof R8)) return false;
      return this.value == ((R8)o).value;
    }
  }

  // test arrays of union annotated class
  public static class R9  {
    public R6[] r6s;
    @Override
    public boolean equals(Object o) {
      if (!(o instanceof R9)) return false;
      return Arrays.equals(this.r6s, ((R9)o).r6s);
    }
  }

  @Test public void testR6() throws Exception {
    R7 r7 = new R7();
    r7.value = 1;
    checkReadWrite(r7, ReflectData.get().getSchema(R6.class));
    R8 r8 = new R8();
    r8.value = 1;
    checkReadWrite(r8, ReflectData.get().getSchema(R6.class));
    R9 r9 = new R9();
    r9.r6s = new R6[] {r7, r8};
    checkReadWrite(r9, ReflectData.get().getSchema(R9.class));
  }

  // test union in fields
  public static class R9_1  {
	@Union({Void.class, R7.class, R8.class})
    public Object value;
    @Override
    public boolean equals(Object o) {
      if (!(o instanceof R9_1)) return false;
      if (this.value == null) return ((R9_1)o).value == null;
      return this.value.equals(((R9_1)o).value);
    }
  }

  @Test public void testR6_1() throws Exception {
    R7 r7 = new R7();
    r7.value = 1;
    checkReadWrite(r7, ReflectData.get().getSchema(R6.class));
    R8 r8 = new R8();
    r8.value = 1;
    checkReadWrite(r8, ReflectData.get().getSchema(R6.class));
    R9_1 r9_1 = new R9_1();
    r9_1.value = null;
    checkReadWrite(r9_1, ReflectData.get().getSchema(R9_1.class));
    r9_1.value = r7;
    checkReadWrite(r9_1, ReflectData.get().getSchema(R9_1.class));
    r9_1.value = r8;
    checkReadWrite(r9_1, ReflectData.get().getSchema(R9_1.class));
  }

  // test union annotation on methods and parameters
  public static interface P0 {
    @Union({Void.class,String.class})
      String foo(@Union({Void.class,String.class}) String s);
  }

  @Test public void testP0() throws Exception {
    Protocol p0 = ReflectData.get().getProtocol(P0.class);
    Protocol.Message message = p0.getMessages().get("foo");
    // check response schema is union
    Schema response = message.getResponse();
    assertEquals(Schema.Type.UNION, response.getType());
    assertEquals(Schema.Type.NULL, response.getTypes().get(0).getType());
    assertEquals(Schema.Type.STRING, response.getTypes().get(1).getType());
    // check request schema is union
    Schema request = message.getRequest();
    Field field = request.getField("s");
    assertNotNull("field 's' should not be null", field);
    Schema param = field.schema();
    assertEquals(Schema.Type.UNION, param.getType());
    assertEquals(Schema.Type.NULL, param.getTypes().get(0).getType());
    assertEquals(Schema.Type.STRING, param.getTypes().get(1).getType());
    // check union erasure
    assertEquals(String.class, ReflectData.get().getClass(response));
    assertEquals(String.class, ReflectData.get().getClass(param));
  }

  // test Stringable annotation
  @Stringable public static class R10 {
    private String text;
    public R10(String text) { this.text = text; }
    @Override
    public String toString() { return text; }
    @Override
    public boolean equals(Object o) {
      if (!(o instanceof R10)) return false;
      return this.text.equals(((R10)o).text);
    }
  }

  @Test public void testR10() throws Exception {
    Schema r10Schema = ReflectData.get().getSchema(R10.class);
    assertEquals(Schema.Type.STRING, r10Schema.getType());
    assertEquals(R10.class.getName(), r10Schema.getProp("java-class"));
    checkReadWrite(new R10("foo"), r10Schema);
  }

  // test Nullable annotation on field
  public static class R11 {
    @Nullable private String text;
    @Override
    public boolean equals(Object o) {
      if (!(o instanceof R11)) return false;
      R11 that = (R11)o;
      if (this.text == null) return that.text == null;
      return this.text.equals(that.text);
    }
  }

  @Test public void testR11() throws Exception {
    Schema r11Record = ReflectData.get().getSchema(R11.class);
    assertEquals(Schema.Type.RECORD, r11Record.getType());
    Field r11Field = r11Record.getField("text");
    assertEquals(JsonProperties.NULL_VALUE, r11Field.defaultVal());
    Schema r11FieldSchema = r11Field.schema();
    assertEquals(Schema.Type.UNION, r11FieldSchema.getType());
    assertEquals(Schema.Type.NULL, r11FieldSchema.getTypes().get(0).getType());
    Schema r11String = r11FieldSchema.getTypes().get(1);
    assertEquals(Schema.Type.STRING, r11String.getType());
    R11 r11 = new R11();
    checkReadWrite(r11, r11Record);
    r11.text = "foo";
    checkReadWrite(r11, r11Record);
  }

  // test nullable annotation on methods and parameters
  public static interface P1 {
    @Nullable String foo(@Nullable String s);
  }

  @Test public void testP1() throws Exception {
    Protocol p1 = ReflectData.get().getProtocol(P1.class);
    Protocol.Message message = p1.getMessages().get("foo");
    // check response schema is union
    Schema response = message.getResponse();
    assertEquals(Schema.Type.UNION, response.getType());
    assertEquals(Schema.Type.NULL, response.getTypes().get(0).getType());
    assertEquals(Schema.Type.STRING, response.getTypes().get(1).getType());
    // check request schema is union
    Schema request = message.getRequest();
    Field field = request.getField("s");
    assertNotNull("field 's' should not be null", field);
    Schema param = field.schema();
    assertEquals(Schema.Type.UNION, param.getType());
    assertEquals(Schema.Type.NULL, param.getTypes().get(0).getType());
    assertEquals(Schema.Type.STRING, param.getTypes().get(1).getType());
    // check union erasure
    assertEquals(String.class, ReflectData.get().getClass(response));
    assertEquals(String.class, ReflectData.get().getClass(param));
  }

  // test AvroSchema annotation
  public static class R12 {                       // fields
    @AvroSchema("\"int\"")
      Object x;

    @AvroSchema("{\"type\":\"array\",\"items\":[\"null\",\"string\"]}")
      List<String> strings;
  }

  @Test public void testR12() throws Exception {
    Schema s = ReflectData.get().getSchema(R12.class);
    assertEquals(Schema.Type.INT, s.getField("x").schema().getType());
    assertEquals(Schema.parse
                 ("{\"type\":\"array\",\"items\":[\"null\",\"string\"]}"),
                 s.getField("strings").schema());
  }

  @AvroSchema("\"null\"")                          // record
  public class R13 {}

  @Test public void testR13() throws Exception {
    Schema s = ReflectData.get().getSchema(R13.class);
    assertEquals(Schema.Type.NULL, s.getType());
  }

  public interface P4 {
    @AvroSchema("\"int\"")                        // message value
    Object foo(@AvroSchema("\"int\"")Object x);   // message param
  }

  @Test public void testP4() throws Exception {
    Protocol p = ReflectData.get().getProtocol(P4.class);
    Protocol.Message message = p.getMessages().get("foo");
    assertEquals(Schema.Type.INT, message.getResponse().getType());
    Field field = message.getRequest().getField("x");
    assertEquals(Schema.Type.INT, field.schema().getType());
  }

  // test error
  @SuppressWarnings("serial")
  public static class E1 extends Exception {}
  public static interface P2 {
    void error() throws E1;
  }

  @Test public void testP2() throws Exception {
    Schema e1 = ReflectData.get().getSchema(E1.class);
    assertEquals(Schema.Type.RECORD, e1.getType());
    assertTrue(e1.isError());
    Field message = e1.getField("detailMessage");
    assertNotNull("field 'detailMessage' should not be null", message);
    Schema messageSchema = message.schema();
    assertEquals(Schema.Type.UNION, messageSchema.getType());
    assertEquals(Schema.Type.NULL, messageSchema.getTypes().get(0).getType());
    assertEquals(Schema.Type.STRING, messageSchema.getTypes().get(1).getType());

    Protocol p2 = ReflectData.get().getProtocol(P2.class);
    Protocol.Message m = p2.getMessages().get("error");
    // check error schema is union
    Schema response = m.getErrors();
    assertEquals(Schema.Type.UNION, response.getType());
    assertEquals(Schema.Type.STRING, response.getTypes().get(0).getType());
    assertEquals(e1, response.getTypes().get(1));
  }

  @Test public void testNoPackage() throws Exception {
    Class<?> noPackage = Class.forName("NoPackage");
    Schema s = ReflectData.get().getSchema(noPackage);
    assertEquals(noPackage.getName(), ReflectData.getClassName(s));
  }

  void checkReadWrite(Object object) throws Exception {
    checkReadWrite(object, ReflectData.get().getSchema(object.getClass()));
  }
  void checkReadWrite(Object object, Schema s) throws Exception {
    ReflectDatumWriter<Object> writer = new ReflectDatumWriter<>(s);
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    writer.write(object, factory.directBinaryEncoder(out, null));
    ReflectDatumReader<Object> reader = new ReflectDatumReader<>(s);
    Object after =
      reader.read(null, DecoderFactory.get().binaryDecoder(
          out.toByteArray(), null));
    assertEquals(object, after);

    // check reflective setField works for records
    if (s.getType().equals(Schema.Type.RECORD)) {
      Object copy = object.getClass().newInstance();
      for (Field f : s.getFields()) {
        Object val = ReflectData.get().getField(object, f.name(), f.pos());
        ReflectData.get().setField(copy, f.name(), f.pos(), val);
      }
      assertEquals("setField", object, copy);
    }
  }

  public static enum E { A, B };
  @Test public void testEnum() throws Exception {
    check(E.class, "{\"type\":\"enum\",\"name\":\"E\",\"namespace\":"
          +"\"org.apache.avro.reflect.TestReflect\",\"symbols\":[\"A\",\"B\"]}");
  }

  public static class R { int a; long b; }
  @Test public void testRecord() throws Exception {
    check(R.class, "{\"type\":\"record\",\"name\":\"R\",\"namespace\":"
          +"\"org.apache.avro.reflect.TestReflect\",\"fields\":["
          +"{\"name\":\"a\",\"type\":\"int\"},"
          +"{\"name\":\"b\",\"type\":\"long\"}]}");
  }

  public static class RAvroIgnore { @AvroIgnore int a; }
  @Test public void testAnnotationAvroIgnore() throws Exception {
    check(RAvroIgnore.class, "{\"type\":\"record\",\"name\":\"RAvroIgnore\",\"namespace\":"
          +"\"org.apache.avro.reflect.TestReflect\",\"fields\":[]}");
  }

  public static class RAvroMeta { @AvroMeta(key="K", value="V") int a; }
  @Test public void testAnnotationAvroMeta() throws Exception {
    check(RAvroMeta.class, "{\"type\":\"record\",\"name\":\"RAvroMeta\",\"namespace\":"
          +"\"org.apache.avro.reflect.TestReflect\",\"fields\":["
          +"{\"name\":\"a\",\"type\":\"int\",\"K\":\"V\"}]}");
  }

  public static class RAvroName { @AvroName("b") int a; }
  @Test public void testAnnotationAvroName() throws Exception {
    check(RAvroName.class, "{\"type\":\"record\",\"name\":\"RAvroName\",\"namespace\":"
          +"\"org.apache.avro.reflect.TestReflect\",\"fields\":["
          +"{\"name\":\"b\",\"type\":\"int\"}]}");
  }

  public static class RAvroNameCollide { @AvroName("b") int a; int b; }
  @Test(expected=Exception.class)
  public void testAnnotationAvroNameCollide() throws Exception {
    check(RAvroNameCollide.class, "{\"type\":\"record\",\"name\":\"RAvroNameCollide\",\"namespace\":"
          +"\"org.apache.avro.reflect.TestReflect\",\"fields\":["
          +"{\"name\":\"b\",\"type\":\"int\"},"
          +"{\"name\":\"b\",\"type\":\"int\"}]}");
  }

  public static class RAvroStringableField { @Stringable int a; }
  public void testAnnotationAvroStringableFields() throws Exception {
    check(RAvroStringableField.class, "{\"type\":\"record\",\"name\":\"RAvroNameCollide\",\"namespace\":"
          +"\"org.apache.avro.reflect.TestReflect\",\"fields\":["
          +"{\"name\":\"a\",\"type\":\"String\"}]}");
  }

  private void check(Object o, String schemaJson) {
    check(o.getClass(), schemaJson);
  }

  private void check(java.lang.reflect.Type type, String schemaJson) {
    assertEquals(schemaJson, ReflectData.get().getSchema(type).toString());
  }

  @Test
  public void testRecordIO() throws IOException {
    Schema schm = ReflectData.get().getSchema(SampleRecord.class);
    ReflectDatumWriter<SampleRecord> writer =
      new ReflectDatumWriter<>(schm);
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    SampleRecord record = new SampleRecord();
    record.x = 5;
    record.y = 10;
    writer.write(record, factory.directBinaryEncoder(out, null));
    ReflectDatumReader<SampleRecord> reader =
      new ReflectDatumReader<>(schm);
    SampleRecord decoded =
      reader.read(null, DecoderFactory.get().binaryDecoder(
          out.toByteArray(), null));
    assertEquals(record, decoded);
  }

  public static class AvroEncRecord {
    @AvroEncode(using=DateAsLongEncoding.class)
    java.util.Date date;

    @Override
    public boolean equals(Object o) {
      if (!(o instanceof AvroEncRecord)) return false;
      return date.equals(((AvroEncRecord)o).date);
    }
  }

  public static class multipleAnnotationRecord {
    @AvroIgnore
    @Stringable
    Integer i1;

    @AvroIgnore
    @Nullable
    Integer i2;

    @AvroIgnore
    @AvroName("j")
    Integer i3;

    @AvroIgnore
    @AvroEncode(using=DateAsLongEncoding.class)
    java.util.Date i4;

    @Stringable
    @Nullable
    Integer i5;

    @Stringable
    @AvroName("j6")
    Integer i6 = 6;

    @Stringable
    @AvroEncode(using=DateAsLongEncoding.class)
    java.util.Date i7 = new java.util.Date(7L);

    @Nullable
    @AvroName("j8")
    Integer i8;

    @Nullable
    @AvroEncode(using=DateAsLongEncoding.class)
    java.util.Date i9;

    @AvroName("j10")
    @AvroEncode(using=DateAsLongEncoding.class)
    java.util.Date i10 = new java.util.Date(10L);

    @Stringable
    @Nullable
    @AvroName("j11")
    @AvroEncode(using=DateAsLongEncoding.class)
    java.util.Date i11;
  }

  @Test
  public void testMultipleAnnotations() throws IOException {
    Schema schm = ReflectData.get().getSchema(multipleAnnotationRecord.class);
    ReflectDatumWriter<multipleAnnotationRecord> writer =
      new ReflectDatumWriter<>(schm);
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    multipleAnnotationRecord record = new multipleAnnotationRecord();
    record.i1 = 1;
    record.i2 = 2;
    record.i3 = 3;
    record.i4 = new java.util.Date(4L);
    record.i5 = 5;
    record.i6 = 6;
    record.i7 = new java.util.Date(7L);
    record.i8 = 8;
    record.i9 = new java.util.Date(9L);
    record.i10 = new java.util.Date(10L);
    record.i11 = new java.util.Date(11L);

    writer.write(record, factory.directBinaryEncoder(out, null));
    ReflectDatumReader<multipleAnnotationRecord> reader =
      new ReflectDatumReader<>(schm);
      multipleAnnotationRecord decoded =
      reader.read(new multipleAnnotationRecord(), DecoderFactory.get().binaryDecoder(
          out.toByteArray(), null));
    assertTrue(decoded.i1 == null);
    assertTrue(decoded.i2 == null);
    assertTrue(decoded.i3 == null);
    assertTrue(decoded.i4 == null);
    assertTrue(decoded.i5 == 5);
    assertTrue(decoded.i6 == 6);
    assertTrue(decoded.i7.getTime() == 7);
    assertTrue(decoded.i8 == 8);
    assertTrue(decoded.i9.getTime() == 9);
    assertTrue(decoded.i10.getTime() == 10);
    assertTrue(decoded.i11.getTime() == 11);
  }

  @Test
  public void testAvroEncodeInducing() throws IOException {
    Schema schm = ReflectData.get().getSchema(AvroEncRecord.class);
    assertEquals(schm.toString(), "{\"type\":\"record\",\"name\":\"AvroEncRecord\",\"namespace" +
      "\":\"org.apache.avro.reflect.TestReflect\",\"fields\":[{\"name\":\"date\"," +
      "\"type\":{\"type\":\"long\",\"CustomEncoding\":\"DateAsLongEncoding\"}}]}");
  }

  @Test
  public void testAvroEncodeIO() throws IOException {
    Schema schm = ReflectData.get().getSchema(AvroEncRecord.class);
    ReflectDatumWriter<AvroEncRecord> writer =
      new ReflectDatumWriter<>(schm);
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    AvroEncRecord record = new AvroEncRecord();
    record.date = new java.util.Date(948833323L);
    writer.write(record, factory.directBinaryEncoder(out, null));
    ReflectDatumReader<AvroEncRecord> reader =
      new ReflectDatumReader<>(schm);
    AvroEncRecord decoded =
      reader.read(new AvroEncRecord(), DecoderFactory.get().binaryDecoder(
          out.toByteArray(), null));
    assertEquals(record, decoded);
  }

  @Test
  public void testRecordWithNullIO() throws IOException {
    ReflectData reflectData = ReflectData.AllowNull.get();
    Schema schm = reflectData.getSchema(AnotherSampleRecord.class);
    ReflectDatumWriter<AnotherSampleRecord> writer =
      new ReflectDatumWriter<>(schm);
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    // keep record.a null and see if that works
    Encoder e = factory.directBinaryEncoder(out, null);
    AnotherSampleRecord a = new AnotherSampleRecord();
    writer.write(a, e);
    AnotherSampleRecord b = new AnotherSampleRecord(10);
    writer.write(b, e);
    e.flush();
    ReflectDatumReader<AnotherSampleRecord> reader =
      new ReflectDatumReader<>(schm);
    ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
    Decoder d = DecoderFactory.get().binaryDecoder(in, null);
    AnotherSampleRecord decoded = reader.read(null, d);
    assertEquals(a, decoded);
    decoded = reader.read(null, d);
    assertEquals(b, decoded);
  }

  @Test public void testDisableUnsafe() throws Exception {
    String saved = System.getProperty("avro.disable.unsafe");
    try {
      System.setProperty("avro.disable.unsafe", "true");
      ReflectData.ACCESSOR_CACHE.remove(multipleAnnotationRecord.class);
      ReflectData.ACCESSOR_CACHE.remove(AnotherSampleRecord.class);
      ReflectionUtil.resetFieldAccess();
      testMultipleAnnotations();
      testRecordWithNullIO();
    } finally {
      if (saved == null)
        System.clearProperty("avro.disable.unsafe");
      else
        System.setProperty("avro.disable.unsafe", saved);
      ReflectData.ACCESSOR_CACHE.remove(multipleAnnotationRecord.class);
      ReflectData.ACCESSOR_CACHE.remove(AnotherSampleRecord.class);
      ReflectionUtil.resetFieldAccess();
    }
  }

  public static class SampleRecord {
    public int x = 1;
    private int y = 2;

    @Override
    public int hashCode() {
      return x + y;
    }

    @Override
    public boolean equals(Object obj) {
      if (this == obj)
        return true;
      if (obj == null)
        return false;
      if (getClass() != obj.getClass())
        return false;
      final SampleRecord other = (SampleRecord)obj;
      if (x != other.x)
        return false;
      if (y != other.y)
        return false;
      return true;
    }

    public static class AnotherSampleRecord {
      private Integer a = null;
      private SampleRecord s = null;

      public AnotherSampleRecord() {
      }

      AnotherSampleRecord(Integer a) {
        this.a = a;
        this.s = new SampleRecord();
      }

      @Override
      public int hashCode() {
        int hash = (a != null ? a.hashCode() : 0);
        hash += (s != null ? s.hashCode() : 0);
        return hash;
      }

      @Override
      public boolean equals(Object other) {
        if (other instanceof AnotherSampleRecord) {
          AnotherSampleRecord o = (AnotherSampleRecord) other;
          if ( (this.a == null && o.a != null) ||
               (this.a != null && !this.a.equals(o.a)) ||
               (this.s == null && o.s != null) ||
               (this.s != null && !this.s.equals(o.s)) ) {
            return false;
          }
          return true;
        } else {
          return false;
        }
      }
    }
  }

  public static class X { int i; }
  public static class B1 { X x; }
  public static class B2 { X x; }
  public static class A { B1 b1; B2 b2; }
  public static interface C { void foo(A a); }

  @Test
  public void testForwardReference() {
    ReflectData data = ReflectData.get();
    Protocol reflected = data.getProtocol(C.class);
    Protocol reparsed = Protocol.parse(reflected.toString());
    assertEquals(reflected, reparsed);
    assert(reparsed.getTypes().contains(data.getSchema(A.class)));
    assert(reparsed.getTypes().contains(data.getSchema(B1.class)));
    assert(reparsed.getTypes().contains(data.getSchema(B2.class)));
    assert(reparsed.getTypes().contains(data.getSchema(X.class)));
  }

  public static interface P3 {
    void m1();
    void m1(int x);
  }

  @Test(expected=AvroTypeException.class)
  public void testOverloadedMethod() {
    ReflectData.get().getProtocol(P3.class);
  }

  @Test
  public void testNoPackageSchema() throws Exception {
    ReflectData.get().getSchema(Class.forName("NoPackage"));
  }

  @Test
  public void testNoPackageProtocol() throws Exception {
    ReflectData.get().getProtocol(Class.forName("NoPackage"));
  }

  public static class Y {
    int i;
  }

  @Test
  /** Test nesting of reflect data within generic. */
  public void testReflectWithinGeneric() throws Exception {
    ReflectData data = ReflectData.get();
    // define a record with a field that's a specific Y
    Schema schema = Schema.createRecord("Foo", "", "x.y.z", false);
    List<Schema.Field> fields = new ArrayList<>();
    fields.add(new Schema.Field("f", data.getSchema(Y.class), "", null));
    schema.setFields(fields);

    // create a generic instance of this record
    Y y = new Y();
    y.i = 1;
    GenericData.Record record = new GenericData.Record(schema);
    record.put("f", y);

    // test that this instance can be written & re-read
    checkBinary(schema, record);
  }

  @Test
  public void testPrimitiveArray() throws Exception {
    testPrimitiveArrays(false);
  }

  @Test
  public void testPrimitiveArrayBlocking() throws Exception {
    testPrimitiveArrays(true);
  }

  private void testPrimitiveArrays(boolean blocking) throws Exception {
    testPrimitiveArray(boolean.class, blocking);
    testPrimitiveArray(byte.class, blocking);
    testPrimitiveArray(short.class, blocking);
    testPrimitiveArray(char.class, blocking);
    testPrimitiveArray(int.class, blocking);
    testPrimitiveArray(long.class, blocking);
    testPrimitiveArray(float.class, blocking);
    testPrimitiveArray(double.class, blocking);
  }

  private void testPrimitiveArray(Class<?> c, boolean blocking) throws Exception {
    ReflectData data = new ReflectData();
    Random r = new Random();
    int size = 200;
    Object array = Array.newInstance(c, size);
    Schema s = data.getSchema(array.getClass());
    for(int i = 0; i < size; i++) {
      Array.set(array, i, randomFor(c, r));
    }
    checkBinary(data, s, array, false, blocking);
  }

  private Object randomFor(Class<?> c, Random r) {
    if (c == boolean.class)
      return r.nextBoolean();
    if (c == int.class)
      return r.nextInt();
    if (c == long.class)
      return r.nextLong();
    if (c == byte.class)
      return (byte)r.nextInt();
    if (c == float.class)
      return r.nextFloat();
    if (c == double.class)
      return r.nextDouble();
    if (c == char.class)
      return (char)r.nextInt();
    if (c == short.class)
      return (short)r.nextInt();
    return null;
  }

  /** Test union of null and an array. */
  @Test
  public void testNullArray() throws Exception {
    String json = "[{\"type\":\"array\", \"items\": \"long\"}, \"null\"]";
    Schema schema = new Schema.Parser().parse(json);
    checkBinary(schema, null);
  }

  /** Test stringable classes. */
  @Test public void testStringables() throws Exception {
    checkStringable(java.math.BigDecimal.class, "10");
    checkStringable(java.math.BigInteger.class, "20");
    checkStringable(java.net.URI.class, "foo://bar:9000/baz");
    checkStringable(java.net.URL.class, "http://bar:9000/baz");
    checkStringable(java.io.File.class, "foo.bar");
  }

  @SuppressWarnings({ "unchecked", "rawtypes" })
  public void checkStringable(Class c, String value) throws Exception {
    ReflectData data = new ReflectData();
    Schema schema = data.getSchema(c);
    assertEquals
      ("{\"type\":\"string\",\"java-class\":\""+c.getName()+"\"}",
       schema.toString());
    checkBinary(schema, c.getConstructor(String.class).newInstance(value));
  }

  public static class M1 {
    Map<Integer, String> integerKeyMap;
    Map<java.math.BigInteger, String> bigIntegerKeyMap;
    Map<java.math.BigDecimal, String> bigDecimalKeyMap;
    Map<java.io.File, String> fileKeyMap;
  }

  /** Test Map with stringable key classes. */
  @Test public void testStringableMapKeys() throws Exception {
    M1 record = new M1();
    record.integerKeyMap = new HashMap<>(1);
    record.integerKeyMap.put(10, "foo");

    record.bigIntegerKeyMap = new HashMap<>(1);
    record.bigIntegerKeyMap.put(java.math.BigInteger.TEN, "bar");

    record.bigDecimalKeyMap = new HashMap<>(1);
    record.bigDecimalKeyMap.put(java.math.BigDecimal.ONE, "bigDecimal");

    record.fileKeyMap = new HashMap<>(1);
    record.fileKeyMap.put(new java.io.File("foo.bar"), "file");

    ReflectData data = new ReflectData().addStringable(Integer.class);

    checkBinary(data, data.getSchema(M1.class), record, true);
  }

  public static class NullableStringable {
    java.math.BigDecimal number;
  }

  @Test public void testNullableStringableField() throws Exception {
    NullableStringable datum = new NullableStringable();
    datum.number = java.math.BigDecimal.TEN;

    Schema schema = ReflectData.AllowNull.get().getSchema(NullableStringable.class);
    checkBinary(schema, datum);
  }

  public static void checkBinary(ReflectData reflectData, Schema schema,
      Object datum, boolean equals) throws IOException {
    checkBinary(reflectData, schema, datum, equals, false);
  }

  private static void checkBinary(ReflectData reflectData, Schema schema,
      Object datum, boolean equals, boolean blocking) throws IOException {
    ReflectDatumWriter<Object> writer = new ReflectDatumWriter<>(schema);
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    if (!blocking) {
      writer.write(datum, EncoderFactory.get().directBinaryEncoder(out, null));
    } else {
      writer.write(datum, new EncoderFactory().configureBlockSize(64)
          .blockingBinaryEncoder(out, null));
    }
    writer.write(datum, EncoderFactory.get().directBinaryEncoder(out, null));
    byte[] data = out.toByteArray();

    ReflectDatumReader<Object> reader = new ReflectDatumReader<>(schema);
    Object decoded = reader.read(null,
        DecoderFactory.get().binaryDecoder(data, null));

    assertEquals(0, reflectData.compare(datum, decoded, schema, equals));
  }

  public static void checkBinary(Schema schema, Object datum)
    throws IOException {
    checkBinary(ReflectData.get(), schema, datum, false);
  }

  /** Test that the error message contains the name of the class. */
  @Test
  public void testReflectFieldError() throws Exception {
    Object datum = "";
    try {
      ReflectData.get().getField(datum, "notAFieldOfString", 0);
    } catch (AvroRuntimeException e) {
      assertTrue(e.getMessage().contains(datum.getClass().getName()));
    }
  }

  @AvroAlias(alias="a", space="b")
  private static class AliasA { }
  @AvroAlias(alias="a", space="")
  private static class AliasB { }
  @AvroAlias(alias="a")
  private static class AliasC { }

  @Test
  public void testAvroAliasOnClass() {
    check(AliasA.class, "{\"type\":\"record\",\"name\":\"AliasA\",\"namespace\":\"org.apache.avro.reflect.TestReflect\",\"fields\":[],\"aliases\":[\"b.a\"]}");
    check(AliasB.class, "{\"type\":\"record\",\"name\":\"AliasB\",\"namespace\":\"org.apache.avro.reflect.TestReflect\",\"fields\":[],\"aliases\":[\"a\"]}");
    check(AliasC.class, "{\"type\":\"record\",\"name\":\"AliasC\",\"namespace\":\"org.apache.avro.reflect.TestReflect\",\"fields\":[],\"aliases\":[\"a\"]}");
  }

  private static class Z {}

  @Test public void testDollarTerminatedNamespaceCompatibility() {
    ReflectData data = ReflectData.get();
    Schema s = new Schema.Parser().parse
      ("{\"type\":\"record\",\"name\":\"Z\",\"namespace\":\"org.apache.avro.reflect.TestReflect$\",\"fields\":[]}");
    assertEquals(data.getSchema(data.getClass(s)).toString(),
       "{\"type\":\"record\",\"name\":\"Z\",\"namespace\":\"org.apache.avro.reflect.TestReflect\",\"fields\":[]}");
  }

  private static class ClassWithAliasOnField {
    @AvroAlias(alias = "aliasName")
    int primitiveField;
  }

  private static class ClassWithAliasAndNamespaceOnField {
    @AvroAlias(alias = "aliasName", space = "forbidden.space.entry")
    int primitiveField;
  }

  @Test
  public void testAvroAliasOnField() {

    Schema expectedSchema = SchemaBuilder.record(ClassWithAliasOnField.class.getSimpleName())
        .namespace("org.apache.avro.reflect.TestReflect").fields().name("primitiveField").aliases("aliasName")
        .type(Schema.create(org.apache.avro.Schema.Type.INT)).noDefault().endRecord();

    check(ClassWithAliasOnField.class, expectedSchema.toString());
  }

  @Test(expected = AvroRuntimeException.class)
  public void namespaceDefinitionOnFieldAliasMustThrowException() {
    ReflectData.get().getSchema(ClassWithAliasAndNamespaceOnField.class);
  }

  private static class DefaultTest {
    @AvroDefault("1")
    int foo;
  }

  @Test
  public void testAvroDefault() {
    check(DefaultTest.class,
          "{\"type\":\"record\",\"name\":\"DefaultTest\","
          +"\"namespace\":\"org.apache.avro.reflect.TestReflect\",\"fields\":["
          +"{\"name\":\"foo\",\"type\":\"int\",\"default\":1}]}");
  }

  public static class NullableBytesTest {
    @Nullable
    byte[] bytes;

    NullableBytesTest() {
    }

    NullableBytesTest(byte[] bytes) {
      this.bytes = bytes;
    }

    @Override
    public boolean equals(Object obj) {
      return obj instanceof NullableBytesTest
              && Arrays.equals(((NullableBytesTest) obj).bytes, this.bytes);
    }
  }

  @Test
  public void testNullableByteArrayNotNullValue() throws Exception {
    checkReadWrite(new NullableBytesTest("foo".getBytes()));
  }

  @Test
  public void testNullableByteArrayNullValue() throws Exception {
    checkReadWrite(new NullableBytesTest());
  }

  private enum DocTestEnum {
    ENUM_1,
    ENUM_2
  }

  @AvroDoc("DocTest class docs")
  private static class DocTest {
    @AvroDoc("Some Documentation")
    int foo;

    @AvroDoc("Some other Documentation")
    DocTestEnum enums;

    @AvroDoc("And again")
    DefaultTest defaultTest;
  }

  @Test
  public void testAvroDoc() {
    check(DocTest.class,
            "{\"type\":\"record\",\"name\":\"DocTest\",\"namespace\":\"org.apache.avro.reflect.TestReflect\","
                    + "\"doc\":\"DocTest class docs\","
                    + "\"fields\":[{\"name\":\"foo\",\"type\":\"int\",\"doc\":\"Some Documentation\"},"
                    + "{\"name\":\"enums\",\"type\":{\"type\":\"enum\",\"name\":\"DocTestEnum\","
                    + "\"symbols\":[\"ENUM_1\",\"ENUM_2\"]},\"doc\":\"Some other Documentation\"},"
                    + "{\"name\":\"defaultTest\",\"type\":{\"type\":\"record\",\"name\":\"DefaultTest\","
                    + "\"fields\":[{\"name\":\"foo\",\"type\":\"int\",\"default\":1}]},\"doc\":\"And again\"}]}");
  }

}

redpajama_set_name: RedPajamaGithub


text:
The Sportress
Chronicling the Canberra Raiders
Raiders Recruitment and Rumours
April 10, 2021 November 29, 2021 Dan
Raiders Review: The Bar
The Canberra Raiders 30-10 loss to the Penrith Panthers was an important reality check. The Panthers were fast and ferocious. They tested and tormented the Milk for the entire 80 minutes, and while beaten, Canberra did not wilt. There is plenty to improve, and a gap to cover over the rest of the season if the Raiders are serious about contending late into September. But they were not found out in this game.
This was always going to be a test for Canberra. The Panthers were looking imperious in their unbeaten start to this season. At total of 16 points were scored against them over four games this season (a total Canberra would have matched if Croker had grounded his first effort). The hard thing about playing the Panthers is the velocity of the game. Every tackle is brutal, every run rampaging. The physical toll of keeping them in check is vast, but necessary. If you want to beat them, you have to match that pace, match that ferocity, across the park for the whole 80 minutes. Canberra were looking for a test to see where they were, and they got it.
This was a challenge for Canberra's defence. The Panthers try to punch holes across the park, shifting between the middle and the tram-lines to try and find a quick play the ball that they can take advantage of. It puts a significant pressure on defenders, particularly in the middle forwards to make good decisions and good contact. The Raiders were not necessarily poor here, but they did not win the tackle enough to dominate. The physicality of previous weeks was still there, but instead of allowing them to control their opposition, it was just enough to hold on.
By the end of the game the Panthers had outgained the Raiders by 500 metres, coming at Canberra in unending waves. Spencer Leniu and James Fisher-Harris were particularly tough, and when the Milk did manage to get on top of a set, the Panthers simply shifted around the compressed Canberra defence, finding a vulnerable point to punch through. Each of the Penrith back five cracked 100 metres. Brian To'o (23 for 263m) kept finding half a hole to put momentum into sets that lacked it. It was demoralizing.
The difficulty was exacerbated when Charnze Nicoll-Klokstad left the game early under the Head Injury Protocol, never to return. It not only removed a critical part of the Canberra attack, it forced a defensive restructure. Jordan Rapana shifted to the back, Jarrod Croker to the wing, Elliott Whitehead to centre and Siliva Havili to the edge back-rower spot. This was the worst of all worlds. Rapana did not have his best game. Havili continues to prove that while he's an excellent utility, his lateral quickness isn't sufficient to defend on an edge. Moving Whitehead to centre was necessary, but it meant that not only was he removed from helping the middles out, he was also put at a severe pace disadvantage in dealing with the Panthers backs in space.
There was an outrageous amount of pressure on the edges to shut-down attacking raids with a multitude of fast, cohesive, runners in their faces. It was one thing to ask the relatively inexperienced Hudson Young to play a big role in doing. That Canberra were forced into asking Havili to play a major role in it showed their disadvantage. Young missed five tackles, including one that Kikau took fifty metres the other way. Havili missed five of his own, and several times was simply beaten by more agile attackers. Whitehead had five tackles misses out at centre. Even Seb Kris missed three (and had two ineffective tackles).
The edges didn't actually defend poorly, they were often just put in difficult situations that they had little chance of fixing. Penrith played with such pace, and had such dominance over the middle defence that they were being asked to fix a lot of problems. Young in particular did his defensive reputation no damage in this game. The edges simply could not fix every problem. All four non-intercept tries from the Panthers came when they punched a hole in the Canberra middle, pushed quickly to an edge and the Raiders simply ran out of numbers (it's also worth pointing out that twice it was Nathan Cleary who's running game punched the initial hole in the middle). There were some small individual errors in that. The first Panthers try came when Stephen Crichton was simply too quick for Elliott Whitehead at centre. The second try came when Bailey Simonsson was faced with two defenders, and was caught taking neither. But there was little Canberra could do about the others, other than deal more effectively with the initial movement.
Given the defensive pressure they were under, Canberra needed to be near perfect with the ball, and they were simply not that. Thirteen errors wasn't as many as their opposition (who had fifteen), but it was too many for the position deficit they often found themselves in. The Raiders looked cleanest punching through the middle third, as they have so often this season. Josh Hodgson was a bright spot, brilliantly manipulating the markers and finding metres for the Milk pack. So often he'd shift the eyes to the strong side of the field, before sending a big man (or Sebastian Kris) up the guts from the weakside. He used this theme on some crash plays to near success. He even took off running a few times, one wonderful run taking plenty of metres, and chucked in an excellent early set kick for good measure. It was an underrated effort from the Canberra captain, one they can build their attack from.
When the ball shifted beyond the middle third success was more mixed. As is to be expected, the most expansive and cohesive attacking movements came shifting left. Wighton threatened throughout the game and even though there was limited opportunity, the result should have been three tries down the left. His try came from some good lead up work in the middle and a great offload from Whitehead. He nearly created another try from nothing with a well weighted kick for Croker. The left again scored again in the second half, shifting after another good Young run. Whitehead's ball to Croker was perfect. It was heartening to see – this side continues to offer successful and reliable attacking movements. That it nearly created three tries against a side that had conceded three all season showed how well developed it is.
But Canberra still is yet to manage anything approaching connection on the right. All its attack on this side came from strong one-out running by Young and Kris. Both had powerful runs in this game and it's a shame they're not being utilised in more expansive play. Bailey Simonsson must be the loneliest man in Canberra. Williams had a night to forget, reflecting the challenge of playing behind a pack that was under such pressure. He often was caught heading sideways (twice being called for obstruction), threw a forward pass, and ended the game providing a try-assist for the wrong side. In between he never really conjured anything threatening on the right.
All in all it was a difficult night. There will be a tendency to want to draw a line through Canberra purely based on the scoreline. I would strongly warn against this. Despite the obvious areas for improvement, the Raiders were ahead 6-0 (and it could have been 12), and holding their defensive integrity before Nicoll-Klokstad left the field. As we said, this created a reshuffle, which required Canberra putting people in positions they are plainly unsuited for. It's worth noting it's the second time this season they've had to manage ill-fitting pegs and holes, and it makes one wonder if there's a need to carry a back, or at least someone that can more adequately fill in on the edge in defence, on the bench. Corey Harawira-Naera seems a possibility there, but perhaps when Curtis Scott returns, Sebastian Kris can fill that role (as well as take more strong runs in the middle).
If anything, Canberra should take the fact that despite the result they have a clear idea how to beat the Panthers, and the knowledge that if they can stick to that plan (and not lose crucial players to injury) they have a way to win. They looked effective punching through the middle, and were able to successfully manufacture points against a side that make that near impossible. They showed their resilience, nearly finding a way back into the game despite the number of challenges faced by the reshuffle, and despite their continued lack of attacking fluidity outside the middle third. There's plenty out of tonight to show that they are a force in this competition. They'll need to pick themselves up quickly though, because they need wins in the next few weeks, and the competition, while not as hard, will still be fierce.
There's a step up to make. Penrith gave Canberra a lesson on what that looks like in this game. Now it's up to the Raiders to reach that bar.
Do us a solid and like our page on Facebook, follow us on Twitter, or share this on social media. Send us feedback (thesportress@gmail.com – we answer all emails) or comment below if you think we are stupid. Or if we're not.
Published by Dan
View all posts by Dan
Previous Raiders Rumble! Raiders vs Panthers Round 5 Preview
Next Roster Management
A Man With A Plan?
The importance of Emre Guler
What To Do About: The Lock
Return of the competition philosophy
Tapine Leads From the Front
Where are they now? Gary Belcher
The Right Questions
Where are they now? Lesley Vainikolo
A Leap in Three Parts
Follow the Sportress on Twitter


We are building the future for technology powered business processes, we help our clients to transform their business by offering our solutions-as-a-service. We move beyond the scope of most consulting engagement to drive transformation end-to-end and offer our value in a managed service model. As our services are at the heart of the business of our clients we make impact on a daily basis. The combination of digital innovation, cloud services and automation drive organizations to perform faster, better and at greater scale than ever before. Customers' digital expectations set the bar for our clients with digital transformation for operations and supply chain we are giving our clients the means to live up to these expectations. Together with a strong set of alliance partners we will drive this transformation end-to-end.
At KPMG, strategic alliances are central to our goal of helping clients achieve a sustainable competitive advantage. Our alliance ecosystem is designed with a global view and to help address today's top issues, trends and priorities such as digital transformation, digital finance and the mobile economy, cognitive and digital labor, cyber security, data and analytics, and regulatory change. We combine our deep business process, industry, risk, and tax experience with professionals who are trained and certified by our alliance partners, enabling us to deliver wide-ranging solutions across multiple platforms and technologies.
Assess the potential impact of an alliance and the abilities of both parties to successfully build a joint proposition.
Proven track record and expertise in cloud driven transformation, with an interest in digital finance, operations & IT.
Leadership and extreme ownership, ability to manage people and stakeholders, drive change and make impact.
The ability work independently and with various teams at the same time.
Strong presence, making an impact.
The relevant background, work experience and motivation to make real and lasting impact in the Partnership & Alliances team.
KPMG is an international network of companies with personal attention for employees. We have a strong market position. Our people work closely together on a daily basis in a pleasant and stimulating environment where we provide services to domestic and international clients. Personal development is central to KPMG. Through targeted training, education and coaching, we help our employees to excel and get the best out of themselves.